Linux之Nginx源码编译安装,并实现Nginx版本升级,秒级切换和Nginx版本回滚,秒级回退
1、先检查Nginx依赖库(主要4个gcc、pcre、zlib、openssl,通过yum安装)
2、GCC——GNU编译器集合(GCC可以使用默认包管理器的仓库(repositories)来安装,包管理器的选择依赖于你使用的Linux发布版本,包管理器有不同的实现:yum是基于Red Hat的发布版本;apt用于Debian和Ubuntu;yast用于SuSE Linux等等。)
RedHat中安装GCC:
yum install gcc
2、PCRE库(Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码,这正是我们需要的理由。)
RedHat中安装PCRE:
yum install pcre pcre-devel
3、zlib库(zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel。)
RedHat中安装zlib:
yum install zlib zlib-devel
4、OpenSSL库(在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)。)
RedHat中安装OpenSSL:
yum install openssl openssl-devel
5、最后我们检查依赖是都否安装完成
[root@localhost nginx-1.12.2]# rpm -q gcc pcre zlib
gcc-4.8.5-28.el7_5.1.x86_64
pcre-8.32-17.el7.x86_64
zlib-1.2.7-17.el7.x86_64
[root@localhost nginx-1.12.2]#
6、 先创建nginx不可登录型用户
[root@localhost nginx-1.12.2]# useradd -s /sbin/nologin -M nginx
// /sbin/nolong表示不可登录,-M表示在home目录下没有用户nginx的文件夹
7、 解压缩包(注意文件归属)
# tar -zxvf nginx-1.12.2.tar.gz
# cd nginx-1.12.2
配置,指定安装路径、/usr/local/nginx 指定用户nginx 指定组nginx
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
完成后 nginx-1.12.2 目录下会多一些文件 例如:Makefile
- 如果出现报错: make: *** No rule to make target
build', needed by
default’. Stop.
//解决办法是需要安装openssl以及ncurses组件
# yum install -y openssl*
# yum -y install ncurses-devel
- 之后再删除Makefile文件,重新make生成
#make && make install
//可查看是否编译成功,如果输出为 0 说明是OK 的
[root@localhost nginx-1.12.2]# echo $?
0
[root@localhost nginx-1.12.2]#
8、 启动Nginx ,并设置开机自启
# /usr/local/nginx/sbin/nginx
# systemctl enable nginx
- 可查看服务是否启动
# netstat -antup | grep nginx
- 查看nginx占用的端口,默认是80端口
# ss -lntp|grep nginx
9、 访问Nginx
- 访问前注意关闭防火墙和selinux防火墙
# systemctl stop firewalld.service
# setenfoce 0
10、停止nginx 服务
#systemctl stop nginx
或者 # service stop nginx
或者 # /soft/nginx-1.12.0/sbin/nginx -s stop
或者 # pkill nginx
11、Nginx版本升级,秒级切换
// 前提:已经装好了别的的版本如:nginx-1.14.0
[root@localhost /]# unlink /nginx && ln -s /soft/nginx-1.14.0/ /nginx && /soft/nginx-1.12.2/sbin/nginx -s stop && /soft/nginx-1.14.0/sbin/nginx
12、Nginx版本回滚,秒级回退
[root@localhost sbin]# unlink /nginx && ln -s /soft/nginx-1.12.2/ /nginx && /soft/nginx-1.14.0/sbin/nginx -s stop && /soft/nginx-1.12.2/sbin/nginx
ps:
启动:/usr/local/nginx/sbin/nginx
停止/重新加载:/usr/local/nginx/sbin/nginx -s stop(quit、reload)
验证配置文件是否合法:/usr/local/nginx/sbin/nginx -t
命令帮助:/usr/local/nginx/sbin/nginx -h