如何从nginx迁移到Angie#
如果您正在从nginx切换到Angie,恭喜! 我们为您准备了一份指南。
请注意,该指南是为依赖Angie软件包版本的基本替换场景量身定制的。 如果您正在处理:ref:容器 <docker_images>、 虚拟机、自定义路径或:ref:模块 <install-dynamicmodules>, 您需要相应地进行调整。
安装Angie#
我们建议使用 我们的仓库 中的官方软件包; 请参阅您操作系统的安装说明以安装Angie, 但在实际启动之前请停止。 相反,运行 sudo angie -V 以确保一切正常:
$ sudo angie -V
Angie version: Angie/1.7.0
nginx version: nginx/1.27.1
built by gcc 11.4.0
configure arguments: --prefix=/etc/angie --conf-path=/etc/angie/angie.conf ...
正如此输出所示,
当Angie从软件包安装时,配置
位于 /etc/angie/
下。
更新Angie配置#
Angie通常需要对现有的nginx配置进行最小的更改。
-
将整个nginx配置复制到
/etc/angie/
:$ sudo rsync -a --no-links /etc/nginx/ /etc/angie/
我们假设nginx将其配置存储在
/etc/nginx/
下; 如果您的路径不同,请调整步骤。 -
按Angie期望的方式重命名主配置文件:
$ sudo mv /etc/angie/nginx.conf /etc/angie/angie.conf
-
更新整个Angie配置中的路径, 从主配置文件开始。 细节根据nginx的安装方式而有所不同, 但至少您需要更新以下部分。
任何仍指向
/etc/nginx/
下的 include 路径:# include /etc/nginx/conf.d/*.conf; # include /etc/nginx/default.d/*.conf; # include /etc/nginx/http.d/*.conf; # include /etc/nginx/stream.d/*.conf; include /etc/angie/conf.d/*.conf; include /etc/angie/default.d/*.conf; include /etc/angie/http.d/*.conf; include /etc/angie/stream.d/*.conf; # include /etc/nginx/sites-enabled/*; include /etc/angie/sites-enabled/*; # include /etc/nginx/modules-enabled/*; include /etc/angie/modules-enabled/*; # include /etc/nginx/mime.types; include /etc/angie/mime.types;
对Angie进程管理至关重要的 PID 文件:
# pid /var/run/nginx.pid; # -- 或 -- # pid /run/nginx.pid; pid /run/angie.pid;
# access_log /var/log/nginx/access.log; access_log /var/log/angie/access.log; # error_log /var/log/nginx/error.log; error_log /var/log/angie/error.log;
虚拟主机#
如果使用类似 sites-enabled/
的目录来包含虚拟主机,请更新它:
# include /etc/nginx/sites-enabled/*;
include /etc/angie/sites-enabled/*;
接下来,重新创建 /etc/angie/sites-enabled/
下的符号链接以使其工作。
列出原始虚拟主机文件,例如:
$ ls -l /etc/nginx/sites-enabled/
default -> /etc/nginx/sites-available/default
注意它们的实际位置;
在这里,它是 /etc/nginx/sites-available/
。
如果您之前没有将它们复制到 /etc/angie/
下,
现在复制它们:
$ sudo rsync -a /etc/nginx/sites-available/ /etc/angie/sites-available/
最后,重新创建每个符号链接:
$ sudo ln -s /etc/angie/sites-available/default \
/etc/angie/sites-enabled/default
动态模块#
查找并 安装 所有在nginx配置中引用的动态模块的Angie对应模块,例如:
$ sudo nginx -T | grep load_module
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
...
这意味着您需要安装 angie-module-geoip2
软件包,等等。
有两种流行的方法来包含动态模块配置:
如果通过 /usr/share/nginx/modules/
包含动态模块,
更新路径:
# 加载动态模块。请参阅/usr/share/doc/nginx/README.dynamic。
# include /usr/share/nginx/modules/*.conf;
include /usr/share/angie/modules/*.conf;
接下来,复制模块配置文件:
$ sudo rsync -a /usr/share/nginx/modules/ /usr/share/angie/modules/
最后,修改每个文件中的 load_module 路径:
# load_module "/usr/lib64/nginx/modules/ngx_http_geoip2_module.so";
load_module "/usr/lib64/angie/modules/ngx_http_geoip2_module.so";
如果使用 /etc/nginx/modules-enabled/
目录来包含动态模块,请更新路径:
# include /etc/nginx/modules-enabled/*.conf;
include /etc/angie/modules-enabled/*.conf;
接下来,重新创建 /etc/angie/modules-enabled/
下的符号链接以使其工作。
列出原始模块配置文件,例如:
$ ls -l /etc/nginx/modules-enabled/
mod-http-geoip2.conf -> /usr/share/nginx/modules-available/mod-http-geoip2.conf
注意它们的实际位置;
在这里,它是 /usr/share/nginx/modules-available/
。
将它们复制到 /usr/share/angie/
下:
$ sudo rsync -a /usr/share/nginx/modules-available/ /usr/share/angie/modules-available/
最后,重新创建每个符号链接:
$ sudo ln -s /usr/share/angie/modules-available/mod-http-geoip2.conf \
/etc/angie/modules-enabled/mod-http-geoip2.conf
根目录(可选)#
如果 root 指令引用的目录是类似 /usr/share/nginx/html/
的,
您可以将其更改为指向Angie。
复制目录并更新Angie配置中的 root
设置:
$ sudo rsync -a /usr/share/nginx/html/ /usr/share/angie/html/
# root /usr/share/nginx/html;
root /usr/share/angie/html;
用户和组(可选)#
虽然可以保持 user 指令不变, 但您可以使用Angie的单独帐户以获得更多灵活性。
更新Angie配置中的 user
设置:
# user www-data www-data;
user angie angie;
接下来,更改*所有*配置文件的所有者,
包括 /usr/share/angie/
下的文件,例如:
$ sudo chown -R angie:angie /etc/angie/
$ sudo chown -R angie:angie /usr/share/angie/
如果Angie配置定义了 root 指令, 也要更改相应目录的所有者,例如:
$ sudo chown -R angie:angie /var/www/html/
总结#
为了确保您没有遗漏任何内容,
查找并修复Angie配置中剩余的 nginx
出现:
$ grep -rn --include='*.conf' 'nginx' /etc/angie/
测试与切换#
既然您已更新Angie配置, 下一步是验证其语法以确保Angie实际上可以使用它, 然后执行切换。 检查Angie是否可以运行更新的配置:
$ sudo angie -t
命令解析配置并报告阻止Angie启动的问题; 修复任何问题并重新运行。
停止nginx,启动Angie#
为了将停机时间降到最低,请在停止nginx后立即启动Angie:
$ sudo systemctl stop nginx && sudo systemctl start angie
可选地,启用Angie服务以在重启后启动它:
$ sudo systemctl enable angie
迁移完成!就是这样。您很棒。
禁用nginx#
最后,当您确定Angie运行顺利时, 您需要禁用或卸载nginx以避免冲突。
至少您可以禁用服务:
$ sudo systemctl disable nginx
配置Angie额外功能#
可以假设您正在迁移是有原因的,那么为什么不更进一步, 配置一些 Angie 和 Angie PRO 在nginx之上提供的附加功能呢?