nginx 源码安装与平滑升级

运维   nginx  

Nginx 源码安装

目的

主要学习在Linux环境下源码编译安装Nginx软件,并进行在线升级操作;

安装1.10.1版本的Nginx

1. 下载软件包

  1. wget http://nginx.org/download/nginx-1.10.1.tar.gz

2. 开始安装

  1. tar -zxvf nginx-1.10.1.tar.gz
  2. cd nginx-1.10.1
  3. ./configure --prefix=/usr/local/nginx
  4. make && make install

3. 启动与关闭

  1. /usr/local/nginx/sbin/nginx -t # 测试配置是否有问题
  2. /usr/local/nginx/sbin/nginx # 启动
  3. /usr/local/nginx/sbin/nginx -s stop # 关闭,当然也可以通过Nginx信号量控制

4. 配置通过systemctl启动/关闭Nginx

  1. 在 /usr/lib/systemd/system 路径下创建nginx.service
  2. 编辑内容

Nginx信号量说明

通过编辑nginx.service文件可以发现,systemctl的命令操作主要是通过kill + 信号量 对Nginx进行操作的。

参数字段 说明
TERM, INT 立即关闭Nginx
QUIT 优雅关闭进程,如果当前有请求,处理完成之后再关闭
HUP 改变配置文件以后不用重启,平滑的进行重启。
USR1 重读日志,在日志按月/日分割时有用
USR2 平滑的升级
WINCH 它所做的是关闭特定进程号的主进程的下属的工作进程(配合USR2来进行升级)

升级Nginx

Nginx安装最终会生成编译好的二进制文件,所以当需要开启新模块或者升级Nginx时,就需要重新编辑生成二进制文件。具体升级Nginx的步骤如下:

  1. 下载最新版本,wget http://nginx.org/download/nginx-1.15.5.tar.gz
  2. 解压缩,tar -zxvf nginx-1.15.5.tar.gz
  3. 检测环境,./configure —prefix=/usr/local/nginx
  4. 进行编译,make
  5. 编译之后即可,不需要安装了,
  6. 将编译后的objs/nginx 复制到Nginx安装目录的sbin下,cp -rfp objs/nginx /usr/local/nginx/sbin
  7. 检测整体配置是否OK,/usr/local/nginx/sbin/nginx -t [-c 配置路径]
  8. 更新,平滑重启

    kill -USR2 ‘cat /usr/local/nginx/logs/nginx.pid’
    kill -WINCH ‘cat /usr/local/nginx/logs/nginx.pid.oldbin’ // 关闭老版本master进程的worker进程
    kill -QUIT ‘cat /usr/local/nginx/logs/nginx.pid.oldbin’ // 如果升级没问题,可以直接关掉旧版本的master;否则,关掉新版的,重启旧版本worker进行,完成回滚



评论 0

发表评论

Top