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
相关推荐
山东布谷科技官方8 分钟前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
One_Blanks9 分钟前
渗透测试-Linux基础(1)
linux·运维·安全
yanwushu9 分钟前
Xserver v1.4.2发布,支持自动重载 nginx 配置
mysql·nginx·php·个人开发·composer
爱吃喵的鲤鱼13 分钟前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
dessler25 分钟前
Linux系统-ubuntu系统安装
linux·运维·云计算
向阳121832 分钟前
Dubbo负载均衡
java·运维·负载均衡·dubbo
荒Huang1 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_20131 小时前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能1 小时前
气爪在自动化装配线中是如何应用的?
运维·自动化
€☞扫地僧☜€3 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器