nginx平滑升级

#平滑升级

kill -USR2 <PID号>

//查看nginx版本
复制代码
  1. [root@l1 logs]# nginx -v //查看nginx版本

  2. nginx version: nginx/1.26.0

  3. [root@l1 logs]#

安装一个1.25版本实验一下
复制代码
  1. [root@l2 ~]# cd /opt/

  2. [root@l2 opt]#

bash 复制代码
[root@l2 opt]# ls

nginx-1.25.5.tar.gz nginx-1.26.0.tar.gz rh
进行初始化配置
bash 复制代码
[root@l2 opt]# systemctl disable --now firewalld.service

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@l2 opt]# setenforce 0

[root@l2 opt]# vim /etc/selinux/config
安装软件包
bash 复制代码
[root@l2 opt]# df

文件系统 1K-块 已用 可用 已用% 挂载点

devtmpfs 1913548 0 1913548 0% /dev

tmpfs 1930628 0 1930628 0% /dev/shm

tmpfs 1930628 12528 1918100 1% /run

tmpfs 1930628 0 1930628 0% /sys/fs/cgroup

/dev/mapper/centos-root 38770180 5714188 33055992 15% /

/dev/sda1 1038336 191100 847236 19% /boot

tmpfs 386128 12 386116 1% /run/user/42

tmpfs 386128 0 386128 0% /run/user/0

[root@l2 opt]# mount /dev/sr0 /mnt

mount: /dev/sr0 写保护,将以只读方式挂载

[root@l2 opt]# yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

//安装软件包 
创建用户
复制代码
[root@l2 opt]# useradd -M -s /sbin/nolongin nginx
编译安装Nginx
bash 复制代码
[root@l2 opt]# cd /opt/

[root@l2 opt]# ls

nginx-1.25.5.tar.gz nginx-1.26.0.tar.gz rh

[root@l2 opt]# tar xf nginx-1.25.5.tar.gz //解压

[root@l2 opt]# cd nginx-1.25.5/

[root@l2 nginx-1.25.5]#
bash 复制代码
./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module
bash 复制代码
[root@l2 nginx-1.25.5]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

//指定安装路径,指定运行用户,运行组 ,开启模块,htps协议
复制代码
[root@l2 nginx-1.25.5]# make && make install
设置软链接,可以直接调用nginx命令来进行管理
bash 复制代码
[root@l2 nginx-1.25.5]# cd /usr/local/nginx/

[root@l2 nginx]# ls sbin/

nginx

[root@l2 nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@l2 nginx]#

[root@l2 nginx]# /usr/local/nginx/sbin/nginx //运行

[root@l2 nginx]#



[root@l2 nginx]# cd /usr/lib/systemd/system

[root@l2 system]# vim nginx.service

[root@l2 system]#


[Unit]

Description=nginx

After=network.target


[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true


[Install]

WantedBy=multi-user.target


[root@l2 system]# chmod 754 /lib/systemd/system/nginx.service

[root@l2 system]#

启动nginx服务 ​​​​​​​

bash 复制代码
/usr/local/nginx/sbin/nginx


netstat -lntp | grep 80
查看pid进程号
  1. [root@l2 ~]# cat /usr/local/nginx/logs/nginx.pid

  2. 14039

  3. [root@l2 ~]#

查看版本
bash 复制代码
[root@l2 ~]# nginx -v

nginx version: nginx/1.25.5
bash 复制代码
[root@l2 ~]# netstat -lntp | grep 80

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14039/nginx: master

//已在运行

升级

新版本升级:

tar -zxvf nginx-1.xx.xx.tar.gz

cd nginx-1.xx.xx

./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module

--with-http_ssl_module

bash 复制代码
[root@l2 ~]# cd /opt/

[root@l2 opt]# ls

nginx-1.25.5 nginx-1.25.5.tar.gz nginx-1.26.0.tar.gz rh

[root@l2 opt]# tar xf nginx-1.26.0.tar.gz

[root@l2 opt]#

[root@l2 opt]# ls

nginx-1.25.5 nginx-1.26.0 rh

nginx-1.25.5.tar.gz nginx-1.26.0.tar.gz

[root@l2 opt]# cd nginx-1.26.0/

[root@l2 nginx-1.26.0]#
bash 复制代码
[root@l2 nginx-1.26.0]# ls

auto CHANGES.ru configure html man src

CHANGES conf contrib LICENSE README

[root@l2 nginx-1.26.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

//做配置
bash 复制代码
[root@l2 nginx-1.26.0]# make -j 2

//进行编译

​​​​​​​

nginx文件做个替换
bash 复制代码
[root@l2 objs]# cd /usr/local/nginx/sbin/

[root@l2 sbin]# ls

nginx

[root@l2 sbin]# mv nginx nginx_old //做个备份

[root@l2 sbin]#


[root@l2 sbin]# cp /opt/nginx-1.26.0/objs/nginx ./

[root@l2 sbin]# ls

nginx nginx_old

[root@l2 sbin]#




[root@l2 sbin]# cd /opt/nginx-1.26.0/

[root@l2 nginx-1.26.0]# ls

auto CHANGES.ru configure html Makefile objs src

CHANGES conf contrib LICENSE man README

[root@l2 nginx-1.26.0]#
升级
bash 复制代码
[root@l2 sbin]# cd /opt/nginx-1.26.0/

[root@l2 nginx-1.26.0]# ls

auto CHANGES.ru configure html Makefile objs src

CHANGES conf contrib LICENSE man README


[root@l2 nginx-1.26.0]# make upgrade //升级

/usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

sleep 1

test -f /usr/local/nginx/logs/nginx.pid.oldbin

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

[root@l2 nginx-1.26.0]#
查看版本
bash 复制代码
[root@l2 nginx-1.26.0]# nginx -v
nginx version: nginx/1.26.0

[root@l2 nginx-1.26.0]#

[root@l2 nginx-1.26.0]# nginx -V

nginx version: nginx/1.26.0

built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

built with OpenSSL 1.0.2k-fips 26 Jan 2017

TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

[root@l2 nginx-1.26.0]#
  • 注:
  • mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
  • cp objs/nginx /usr/local/nginx/sbin/nginx
  • make upgrade #要保证当前 nginx 进程是通过 /usr/local/nginx/sbin/nginx 启动的,而不是通过查找环境变量中那个 nginx 命令启动的
  • #或者先 killall nginx ,再/usr/local/nginx/sbin/nginx
相关推荐
果子⌂1 小时前
Docker-构建镜像并实现LNMP架构
mysql·nginx·docker·容器·架构·php
zkmall2 小时前
企业电商平台搭建:ZKmall开源商城服务器部署与容灾方案
运维·服务器·开源
华不完2 小时前
下一代防火墙混合模式部署
运维·服务器·网络
x县豆瓣酱2 小时前
ubuntu server配置静态IP
linux·运维·ubuntu
工藤新一¹2 小时前
Linux
linux·运维·服务器
互联网搬砖老肖2 小时前
运维打铁: 阿里云 ECS 实例的高效运维与管理
运维·阿里云·云计算
longze_72 小时前
frp内网穿透下创建FTP(解决FTP“服务器回应不可路由的地址。使用服务器地址替代”错误)
运维·服务器·网络
瓦力wow2 小时前
数据分析-名词
运维·服务器·数据分析
自由鬼3 小时前
正向代理服务器Squid:功能、架构、部署与应用深度解析
java·运维·服务器·程序人生·安全·架构·代理
许白掰3 小时前
Linux入门篇学习——Linux 编写第一个自己的命令
linux·运维·数据库·嵌入式硬件·学习