【Nginx】源码安装Nginx 平滑升级Nginx

Web服务对比

Linux平台

Php、Python:nginx、tengine(淘宝)、apache

Jave:tomcat、Jboss、IBM WebSphere

Windows平台:IIS(.net)

Nginx的优点:性能高、并发高、静态网站、动态网站(php、python)

在对比其他web软件的情况下nginx的性能更加好!在国内广泛使用

Nginx

  • 十分轻量级的HTTP服务器

  • 是一个高性能的HTTP和反向代理服务器

  • 官方网站: http://nginx.org/

Nginx以及现代化软件设计:模块化设计,每个模块实现的功能不一样,并且每个模块都是相互独立的,为了满足不同场景的需求来安装不同的模块.

Nginx分为标准模块(官方)以及第三方开发模块,标准模块有几十个,在安装Nginx时,默认不加模块

在源码编译安装时可使用 ./configure --help来查看nginx标准模块

Nginx标准模块

--with-http_ssl_module    开启SSL加密功能,开启HTTPS(要想启用模块系统环境必须安装openssl-devel依赖包)

--with-stream    TCP/IP调度器模块

--with-http_stub_status_module    查看nginx服务器状态模块

源码安装Nginx

安装依赖包

# yum -y install gcc pcre-devel openssl-devel zlib-devel
gcc:用于C/C++语言的编译
pcre-devel:兼容正则表达式,nginx需要用到正则,比如地址重写
openssl-devel:主要用于加密网站https
zlib-devel:对http包的内容做gzip格式的压缩

创建nginx用户,使用nginx用户来运行nginx主要目的为了安全,不是必须操作

#useradd -s /sbin/nolgin nginx

安装Nginx

#tar -xf nginx-1.10.3.tar.gz    #解压nginx源码包
#cd nginx-1.10.3    #进入nginx1.10.3目录
#./configure --user=nginx --group=nginx --with-http_ssl_module    #检查系统环境,指定安装用户及用户组,安装http_ssl模块
#make  && make install    编译并安装
#ls /usr/local/nginx/     安装完毕后查看安装目录
Nginx目录结构

如果在源码安装时没有选择安装目录,默认安装在/usr/local/nginx下

/usr/local/nginx    主目录
/usr/local/nginx/sbin    主程序
/usr/local/nginx/conf    配置文件
/usr/local/nginx/logs    日志
/usr/local/nginx/html    网页目录

Nginx命令用法

/usr/local/nginx/sbin/nginx    启动服务
/usr/local/nginx/sbin/nginx -s stop    关闭服务
/usr/local/nginx/sbin/nginx -s reloac    重新加载配置文件,在不重启服务的情况下重新加载(不能在关闭服务的时候操作)
/usr/local/nginx/sbin/nginx -V    查看软件信息(能看到怎么安装的configure arguments: --user=nginx --group=nginx --with-http_ssl_module)

当然可以做个软连接放到PATH路径下,方便在命令行执行!ln -s /usr/local/nginx/sbin/nginx /sbin

验证Nginx状态

验证Nginx需要通过监听以及服务来查看,systemctl不能查看

ps -ef | grep nginx
netstat -anptu | grep 80
ss -anptu | grep nginx 
curl http://192.168.20.5    #访问nginx

平滑升级Nginx

任何升级都是由风险的!升级前一定要备份!

升级主要是把 /usr/local/nginx/sbin/nginx 这个主程序给替换掉,其他的配置文件、网页目录、日志目录都不需要操作;

升级步骤

1、检查Nginx版本,并备份主程序

# nginx -V
nginx version: nginx/1.10.3    #nginx版本时1.10.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --with-http_ssl_module
# mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx_1.10.3    #备份主程序

2、解压新版本nginx,并cd到目录下

#tar -xf nginx-1.12.2.tar.gz
#cd nginx-1.12.2/

3、和安装步骤一致,./config 必须和安装时候的操作一样,如果不知道可使用nginx -V来查看

#./configure --user=nginx --group=nginx --with-http_ssl_module

4、源码编译make,但是不安装!

#make
5、编译完之后,进入到源码包的objs目录下,有nginx主程序,把主程序替换老的nginx主程序
[ nginx-1.12.2]# cd objs/
[ objs]# ls
autoconf.err  Makefile  nginx  nginx.8  ngx_auto_config.h  ngx_auto_headers.h  ngx_modules.c  ngx_modules.o  src
[ objs]# cp nginx /usr/local/nginx/sbin/

6、在1.12.2目录下执行升级脚本make upgrade,也可以不执行这个命令,这个是一个脚本,kill nginx进程然后在重新启动nginx也是可以的

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`

7、检查版本

# nginx -V
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --with-http_ssl_module

升级成功,从1.10.3升级到1.12.2

注意事项:

1、升级前一定要备份老的主程序!

2、在源码编译的时候不要执行make install!

3、objs目录是在执行make命令之后源码转换成二进制所放的目录,一般主程序都放在该目录下!

相关推荐