Nginx的安装与平滑升级(详)

简介: Nginx的安装与平滑升级(详)

一、安装Nginx


1.下载Nginx安装包

[root@localhost ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz 
[root@localhost ~]# wget http://nginx.org/download/nginx-1.16.1.tar.gz

这里下载两个版本的Nginx安装包是为了一会儿的升级使用。


Nginx下载


2.源码安装Nginx及相关组件

[root@localhost ~]# yum -y install gcc pcre-devel openssl-devel
[root@localhost ~]# useradd -s /sbin/nologin nginx   //创建禁止登陆解释器的用户(为了安全)
[root@localhost ~]# id nginx
uid=1001(nginx) gid=1001(nginx) 组=1001(nginx)
[root@localhost ~]# tar -xf nginx-1.14.2.tar.gz
[root@localhost ~]# cd nginx-1.14.2
[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
         --prefix=/usr/local/nginx                   //指定安装路径
         --user=nginx                               //指定用户
         --group=nginx                              //指定组
         --with-http_ssl_module                    //安装ssl模块,开启其中的SSL加密功能(需要什么模块就安装什么模块)
  ......
  ......
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
[root@localhost nginx-1.14.2]# make && make install    //编译并且安装
......
    '/usr/local/nginx/conf/scgi_params.default'
test -f '/usr/local/nginx/conf/nginx.conf' \
    || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf'
cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html' \
    || cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
make[1]: 离开目录“/root/nginx-1.14.2”

3.启动Nginx

[root@localhost nginx-1.14.2]# /usr/local/nginx/sbin/nginx 
[root@localhost nginx-1.14.2]# netstat -antulp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6079/nginx: master
或者[root@localhost nginx-1.14.2]# netstat -antulp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6079/nginx: master
[root@localhost nginx-1.14.2]# /usr/local/nginx/sbin/nginx -V   //查看Nginx软件信息
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (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_ssl_module

4.访问Nginx初始页面

30.png

5.Nginx的基本操作命令


/usr/local/nginx/sbin/nginx            //启动服务
/usr/local/nginx/sbin/nginx -s stop    //停止服务
/usr/local/nginx/sbin/nginx -t         //验证配置文件是否有错误
/usr/local/nginx/sbin/nginx -s reload  //重新加载配置文件(平滑重启,使用前最好先-t检查一下配置文件正确性)
/usr/local/nginx/sbin/nginx -V         //查看Nginx软件信息

二、平滑升级Nginx


1.查看Nginx版本

[root@localhost nginx-1.14.2]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (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_ssl_module

2.编译新版本Nginx软件

[root@localhost ~]# tar -xf nginx-1.16.1.tar.gz 
[root@localhost ~]# cd nginx-1.16.1
[root@localhost nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
......
[root@localhost nginx-1.16.1]# make

注意:这里千万不要make install


3.备份老版Nginx程序,并使用新版本替换

[root@localhost nginx-1.16.1]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxold
[root@localhost nginx-1.16.1]# cp objs/nginx /usr/local/nginx/sbin/
[root@localhost nginx-1.16.1]# /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

4.发送USR2信号

//向主进程(master)发送USR2信号,Nginx会启动一个新版本的master进程和对应工作进程,和旧版一起处理请求
[root@localhost nginx-1.16.1]# ps -aux | grep nginx
root       6088  0.0  0.1  46080  1928 ?        Ss   14:57   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      6091  0.0  0.1  46516  2012 ?        S    14:57   0:00 nginx: worker process
root       8693  0.0  0.0 112728   964 pts/0    R+   15:28   0:00 grep --color=auto nginx
[root@localhost nginx-1.16.1]# kill -USR2 6088    //发送USR2信号
[root@localhost nginx-1.16.1]# ps -aux | grep nginx
root       6088  0.0  0.1  46080  1928 ?        Ss   14:57   0:00   nginx: master process /usr/local/nginx/sbin/nginx
 nginx      6091  0.0  0.1  46516  2012 ?        S    14:57   0:00 nginx: worker process
root       8694  0.5  0.1  45960  3260 ?        S    15:29   0:00 nginx: master process /usr/local/nginx/sbin/nginx
 nginx      8695  0.0  0.1  46420  1888 ?        S    15:29   0:00 nginx: worker process
 root       8697  0.0  0.0 112728   968 pts/0    S+   15:29   0:00 grep --color=auto nginx

5.发送WINCH信号

//向旧的Nginx主进程(master)发送WINCH信号,它会逐步关闭自己的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理
[root@localhost nginx-1.16.1]# ps -aux | grep nginx
root       6088  0.0  0.1  46080  1928 ?        Ss   14:57   0:00 nginx: master process /usr/local/nginx/sbin/nginx
 nginx      6091  0.0  0.1  46516  2012 ?        S    14:57   0:00 nginx: worker process
root       8694  0.0  0.1  45960  3260 ?        S    15:29   0:00 nginx: master process /usr/local/nginx/sbin/nginx
 nginx      8695  0.0  0.1  46420  1888 ?        S    15:29   0:00 nginx: worker process
 root       8700  0.0  0.0 112728   968 pts/0    R+   15:36   0:00 grep --color=auto nginx
[root@localhost nginx-1.16.1]# kill -WINCH 6088
[root@localhost nginx-1.16.1]# ps -aux | grep nginx
root       6088  0.0  0.1  46080  1928 ?        Ss   14:57   0:00 nginx: master process /usr/local/nginx/sbin/nginx
root       8694  0.0  0.1  45960  3260 ?        S    15:29   0:00 nginx: master process /usr/local/nginx/sbin/nginx
 nginx      8695  0.0  0.1  46420  1888 ?        S    15:29   0:00 nginx: worker process
 root       8702  0.0  0.0 112728   968 pts/0    R+   15:37   0:00 grep --color=auto nginx

注意:如果这个时候需要回退继续使用之前的Nginx版本,可以向旧版本的Nginx主程序发送HUP信号,它会重新启动工作进程, 仍使用旧版配置文件。然后可以将新版Nginx进程杀死(使用QUIT、TERM、或者KILL)

例如:
[root@localhost nginx-1.16.1]# kill -HUP 6088

6.发送QUIT信号

升级完毕,可向旧的Nginx主进程(master)发送(QUIT、TERM、或者KILL)信号,使旧的主进程退出
[root@localhost nginx-1.16.1]# kill -QUIT 6088
[root@localhost nginx-1.16.1]# ps -aux | grep nginx
root       8694  0.0  0.1  45960  3260 ?        S    15:29   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      8695  0.0  0.1  46420  1888 ?        S    15:29   0:00 nginx: worker process
root       8708  0.0  0.0 112728   968 pts/0    R+   15:38   0:00 grep --color=auto nginx

7.验证升级后的Nginx版本并访问

[root@localhost nginx-1.16.1]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (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_ssl_

31.png

Nginx信号补充:

QUIT          平滑关闭
TERM、INT     快速关闭
HUP           平滑重启,重新加载配置文件
USR1          重新打开日志文件
USR2          平滑升级可执行程序
WINCH         平滑关闭工作进程


相关文章
|
1月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
147 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
1月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
1月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
1月前
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
93 0
Mac os 安装 nginx 教程(success)
|
1月前
|
Ubuntu 搜索推荐 应用服务中间件
Nginx安装与使用
Nginx安装与使用
|
1月前
|
负载均衡 算法 应用服务中间件
Nginx安装及配置详解
Nginx安装及配置详解
|
1月前
|
应用服务中间件 程序员 开发工具
mac下安装nginx
mac下安装nginx
|
1月前
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
|
1月前
|
Ubuntu Unix 应用服务中间件
Ubuntu16.04.1 安装Nginx
Ubuntu16.04.1 安装Nginx
|
1月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
286 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)