麒麟ARM服务器运维-升级Nginx版本
前言
Nginx 1.22.0漏扫发现很多漏洞,这里考虑升级后的配置兼容性建议升级到1.29.8
这个版本经过了充分测试,适合生产环境,修复了之前版本已知的高危漏洞。
服务器信息
系统名称
1 | cat /etc/.productinfo |
比如银河麒麟系统V10
Kylin Linux Advanced Server
release V10 (SP2) /(Sword)-aarch64-Build09/20210524
查看服务器架构
1 | uname -m |
- 如果输出是
x86_64,则表示服务器是 x86 架构。 - 如果输出是
aarch64,则表示服务器是 ARM 架构(ARM 64位)。 - 如果输出是
armv7l,则表示服务器是 ARM 架构(ARM 32位)。
安装Nginx
安装
本地下载Nginx后上传
1 | https://nginx.org/download/nginx-1.29.8.tar.gz |
安装依赖
1 | yum install -y pcre pcre-devel zlib zlib-devel gcc-c++ openssl openssl-devel |
解压
1 | tar -zxvf nginx-1.29.8.tar.gz |
编译配置
1 | ./configure \ |
编译。
1 | make -j"$(getconf _NPROCESSORS_ONLN)" |
不要直接 make install 覆盖全量目录。
我们只替换 nginx 二进制并保持 yum 的配置与目录不变。
编译完成后先本地自检新二进制。
1 | ./objs/nginx -V |
将新二进制覆盖到 /usr/sbin/nginx。
1 | # 备份之前的文件 |
如果替换不了文件
cp: cannot create regular file ‘/usr/sbin/nginx’: Text file busy
说明 还有进程在执行 /usr/sbin/nginx(哪怕你 systemctl stop 了也可能残留 master/worker,或者有别的 unit/守护在拉起)。
先把占用者找出来并杀掉
1 | sudo systemctl stop nginx |
如果还能看到 nginx 进程:
1 | sudo pkill -9 nginx |
验证新版本是否生效。
1 | nginx -v |
关于动态模块:
如果你使用了 --add-dynamic-module 编译了第三方模块,objs 目录下还会生成 .so 后缀的动态库文件。
这种情况下,你也需要将这些 .so 文件复制到安装目录的 modules/ 文件夹中,否则 Nginx 启动时会因为找不到模块而报错。
配置
查找安装路径
1 | whereis nginx |
查看配置信息
1 | cd /usr/local/nginx/sbin |
添加软连接
1 | sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx |
查看Nginx信息
1 | nginx -V |
这时就可以这样检测了
1 | nginx -t |
注册服务
在 Linux 上,将 Nginx 配置为一个服务以便它可以作为系统服务启动、停止和管理,通常需要创建一个 systemd 服务文件。
以下是如何为编译安装的 Nginx 创建一个 systemd 服务文件的步骤:
1. 创建 Nginx 服务文件
在 /etc/systemd/system/ 目录下创建一个新的服务文件,例如 nginx.service:
1 | sudo vi /etc/systemd/system/nginx.service |
2. 编辑服务文件内容
将以下内容粘贴到 nginx.service 文件中。
注意,根据你的 Nginx 安装路径调整 ExecStart 和 ExecReload 的路径。
1 | [Unit] |
3. 启用并启动 Nginx 服务
保存并关闭文件后,使用以下命令重新加载 systemd 配置,启动 Nginx 服务,并设置开机自启动:
1 | sudo systemctl daemon-reload |
4. 检查服务状态
你可以使用以下命令检查 Nginx 服务的状态:
1 | sudo systemctl status nginx |
5. 常用操作
启动服务:
1 | sudo systemctl start nginx |
停止服务:
1 | sudo systemctl stop nginx |
重启服务:
1 | sudo systemctl restart nginx |
重新加载配置:
1 | sudo systemctl reload nginx |
查看服务日志:
1 | sudo journalctl -u nginx |
添加配置
1 | cd /usr/local/nginx/conf |
修改根配置
1 | vi nginx.conf |
http内,server同级添加
1 | include /etc/nginx/conf.d/*.conf; |
创建目录
1 | mkdir -p /etc/nginx/conf.d/ |
添加配置
1 | cd /etc/nginx/conf.d/ |
内容
1 | server { |
重启Nginx
1 | systemctl restart nginx |
查看是否生效
1 | lsof -i:80 |
访问测试
1 | curl http://127.0.0.1/test.txt |