- Nginx的安装部署
- 1.yum源安装
- 2.二进制编译安装
- 3.Nginx版本更新
Nginx的安装部署
以下有yum源安装和二进制包两种部署方式安装
1.yum源安装- 阿里yum源链接:https://developer.aliyun.com/mirror/epel?spm=a2c6h.13651102.0.0.3e221b1139q8E9
添加完成后直接执行命令
yum install -y nginx
- nginx官方源:https://nginx.org/en/linux_packages.html
创建一个yum源仓库文件 /etc/yum.repos.d/nginx.repo
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
配置好仓库后直接执行以下安装命令
yum install -y nginx2.二进制编译安装
- 下载nginx二进制安装包
[root@node01 ~]# cd /usr/src/ [root@node01 src]# wget https://nginx.org/download/nginx-1.18.0.tar.gz --2022-04-20 10:16:51-- https://nginx.org/download/nginx-1.18.0.tar.gz Resolving nginx.org (nginx.org)... 3.125.197.172, 2a05:d014:edb:5704::6, 2a05:d014:edb:5702::6 Connecting to nginx.org (nginx.org)|3.125.197.172|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1039530 (1015K) [application/octet-stream] Saving to: ‘nginx-1.18.0.tar.gz’ 100%[=======================================================================================================>] 1,039,530 683KB/s in 1.5s 2022-04-20 10:16:53 (683 KB/s) - ‘nginx-1.18.0.tar.gz’ saved [1039530/1039530]
- 解压
[root@node01 src]# ll total 1016 drwxr-xr-x. 2 root root 6 Nov 5 2016 debug drwxr-xr-x. 3 root root 35 Dec 18 07:37 kernels -rw-r--r-- 1 root root 1039530 Apr 21 2020 nginx-1.18.0.tar.gz [root@node01 src]# tar -xf nginx-1.18.0.tar.gz [root@node01 src]# ll total 1016 drwxr-xr-x. 2 root root 6 Nov 5 2016 debug drwxr-xr-x. 3 root root 35 Dec 18 07:37 kernels drwxr-xr-x 8 1001 1001 158 Apr 21 2020 nginx-1.18.0 -rw-r--r-- 1 root root 1039530 Apr 21 2020 nginx-1.18.0.tar.gz [root@node01 src]#
- 进入解压后的目录进行预编译
[root@node01 src]# cd nginx-1.18.0/ [root@node01 nginx-1.18.0]# ll total 760 drwxr-xr-x 6 1001 1001 326 Apr 20 10:19 auto -rw-r--r-- 1 1001 1001 302863 Apr 21 2020 CHANGES -rw-r--r-- 1 1001 1001 462213 Apr 21 2020 CHANGES.ru drwxr-xr-x 2 1001 1001 168 Apr 20 10:19 conf -rwxr-xr-x 1 1001 1001 2502 Apr 21 2020 configure drwxr-xr-x 4 1001 1001 72 Apr 20 10:19 contrib drwxr-xr-x 2 1001 1001 40 Apr 20 10:19 html -rw-r--r-- 1 1001 1001 1397 Apr 21 2020 LICENSE drwxr-xr-x 2 1001 1001 21 Apr 20 10:19 man -rw-r--r-- 1 1001 1001 49 Apr 21 2020 README drwxr-xr-x 9 1001 1001 91 Apr 20 10:19 src [root@node01 nginx-1.18.0]#
- 查看预编译帮助根据自己需求编译nginx
[root@node01 nginx-1.18.0]# ./configure --help
--help print this message
--prefix=PATH set installation prefix #安装路径
--sbin-path=PATH set nginx binary pathname
--modules-path=PATH set modules path
--conf-path=PATH set nginx.conf pathname
--error-log-path=PATH set error log pathname
--pid-path=PATH set nginx.pid pathname
--lock-path=PATH set nginx.lock pathname
--user=USER set non-privileged user for
worker processes
--group=GROUP set non-privileged group for
worker processes
...
...(中间编译模块自己可以慢慢看)
--with-libatomic force libatomic_ops library usage
--with-libatomic=DIR set path to libatomic_ops library sources
--with-openssl=DIR set path to OpenSSL library sources
--with-openssl-opt=OPTIONS set additional build options for OpenSSL
--with-debug enable debug logging
[root@node01 nginx-1.18.0]# useradd nginx [root@node01 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx checking for OS 1. Linux 3.10.0-693.el7.x86_64 x86_64 checking for C compiler ... found 2. using GNU C compiler 3. gcc version: 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) checking for gcc -pipe switch ... found ... ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=option.##这里提示有错误,rewrite模块需要PCRE lib库的支持,所以需要安装依赖
- 安装以上所缺 PCRE依赖包解决报错,继续编译
[root@node01 nginx-1.18.0]# yum install -y pcre-devel.x86_64 [root@node01 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx checking for OS + Linux 3.10.0-693.el7.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) checking for gcc -pipe switch ... found ... checking for zlib library ... not found ./configure: error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib=option.##同理gzip模块缺少zlib依赖,安装即可
- 安装zlib依赖继续编译
[root@node01 nginx-1.18.0]# yum install -y zlib-devel.x86_64 [root@node01 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx checking for OS + Linux 3.10.0-693.el7.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) checking for gcc -pipe switch ... found checking for -Wl,-E switch ... found ... creating objs/Makefile Configuration summary 1. using system PCRE library 2. OpenSSL library is not used 3. using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" 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@node01 nginx-1.18.0]# cat Makefile ##查看编译文件 default: build clean: rm -rf Makefile objs build: $(MAKE) -f objs/Makefile install: $(MAKE) -f objs/Makefile install modules: $(MAKE) -f objs/Makefile modules upgrade: /usr/local/nginx/sbin/nginx -t 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@node01 nginx-1.18.0]# make && make install ... 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]: Leaving directory `/usr/src/nginx-1.18.0'##编译完成
- 添加环境变量以便服务的启动
[root@node01 nginx-1.18.0]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@node01 nginx-1.18.0]# export PATH=$PATH:/usr/local/nginx/sbin [root@node01 nginx-1.18.0]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin [root@node01 nginx-1.18.0]# echo “export PATH=$PATH:/usr/local/nginx/sbin” >> /etc/profile ##写入etc文件下,重启后环境变量依旧可以加载
- 启动nginx服务
[root@node01 nginx-1.18.0]# nginx [root@node01 nginx-1.18.0]# ps -ef | grep nginx root 20688 1 0 11:07 ? 00:00:00 nginx: master process nginx nginx 20689 20688 0 11:07 ? 00:00:00 nginx: worker process root 20691 1462 0 11:07 pts/0 00:00:00 grep --color=auto nginx [root@node01 nginx-1.18.0]#3.Nginx版本更新
- 查看当前版本
[root@localhost ~]# nginx -v nginx version: nginx/1.18.0
- 下载1.20.2版本升级
[root@localhost src]# wget http://nginx.org/download/nginx-1.20.2.tar.gz [root@localhost src]# tar -xzvf nginx-1.20.2.tar.gz [root@localhost src]# ll total 2056 drwxr-xr-x. 2 root root 6 Apr 11 2018 debug drwxr-xr-x. 3 root root 35 Nov 25 23:05 kernels drwxr-xr-x 9 1001 1001 186 Apr 24 20:10 nginx-1.18.0 -rw-r--r-- 1 root root 1039530 Apr 21 2020 nginx-1.18.0.tar.gz drwxr-xr-x 9 1001 1001 186 Apr 20 16:51 nginx-1.20.2 -rw-r--r-- 1 root root 1062124 Nov 16 22:51 nginx-1.20.2.tar.gz [root@localhost src]# cd nginx-1.20.2/
- 查看老版本编译参数,查看进程PID后重新编译新版本
[root@localhost nginx-1.20.2]# nginx -V nginx version: nginx/1.18.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx [root@localhost nginx-1.20.2]# ps -ef | grep nginx root 15117 1 0 22:19 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 15118 15117 0 22:19 ? 00:00:00 nginx: worker process root 15120 7258 0 22:19 pts/0 00:00:00 grep --color=auto nginx [root@localhost nginx-1.20.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module##重新编译时不能缺少旧版本的模块以防nginx服务出现问题(可以增加编译模块) [root@localhost nginx-1.20.2]# make && make install##开始编译
- 更新版本
[root@localhost nginx-1.20.2]# cat Makefile default: build clean: rm -rf Makefile objs .PHONY: default clean build: $(MAKE) -f objs/Makefile install: $(MAKE) -f objs/Makefile install modules: $(MAKE) -f objs/Makefile modules upgrade: /usr/local/nginx/sbin/nginx -t 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` ####这里我们先看下upgrade下面的命令,这是更新时执行的几条命令,因此我们也可以手动敲命令升级更新。这里我们直接使用make upgrade升级 [root@localhost nginx-1.20.2]# 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`
- 查看nginx进程pid
[root@localhost nginx-1.20.2]# ps -ef | grep nginx root 17712 1 0 22:21 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 17714 17712 0 22:21 ? 00:00:00 nginx: worker process root 17720 7258 0 22:23 pts/0 00:00:00 grep --color=auto nginx
与之前相比pid变了,证明平滑升级成功!
备注:如果nginx半自动平滑升级最后一步make upgrade时不成功,报错make: [upgrade] Error 1则检查你的nginx启动是否为绝对路径启动,我的路径为/usr/local/nginx/sbin/nginx ,不能以环境变量等方式启动nginx,否则需要重启nginx服务才能升级成功。



