nginx源码包安装
Nginx优点
-轻量级,同样架设Web服务,比Apache占用更少的内存及资源
-高并发,Nginx处理请求是异步非阻塞的,而Apache则是阻塞性的,在高并发下Nginx能保存低资源消耗高性能 ·高度模块化的设计,编写模块相对简单
-可作为负载均衡服务器,支持7层负载均衡 ·静态处理性能比Apache高3倍以上,但动态处理不足,需要通过后端服务器支持,如Apache
安装:
安装前先关闭Apache服务,以免80端口冲突。
1、安装支持软件:
[root@www ~]# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
[root@www ~]# rpm -q pcre-devel zlib-devel gcc gcc-c++ make pcre-devel-7.8-7.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
gcc-4.4.7-18.el6.x86_64
gcc-c++-4.4.7-18.el6.x86_64
make-3.81-23.el6.x86_64
2、上传源码包,开始安装。
[root@www ~]# tar xf nginx-1.6.0.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/nginx-1.6.0/
3、编译安装Nginx
[root@www nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module
[root@www nginx-1.6.0]# make -j 4 && make install
参数说明:
--prefix=/usr/local/nginx #指定安装路径
--user=nginx --group=nginx #指定运行 nginx进程的用户和组
--with-http_ssl_module #支持 ssl 加密
--with-http_realip_module #此模块支持显示真实来源 IP 地址,当 NGINX 做负载均衡服务器时,需要这个功能,这样能够使得后台服务器记录原始客户端的 IP 地址。
--with-http_gzip_static_module #开启 nginx支持 gunzip压缩静态文件功能,静态文件压缩后,可以节约带宽
--with-http_dav_module #启用支持 WebDAV 功能。WebDAV 一种基于 HTTP 1.1协议的通信协议。它扩展了 HTTP 1.1,在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法,使应用程序可直接对 Web Server 直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
--with-http_stub_status_module #启用支持 nginx 监控模块,后期通过调用此模块可以监控nginx 状态。zabbix也可以通过此模块,来监控 nginx 的性能状态
--with-http_addition_module #启用支持(开启此模块后,nginx 可以在响应 http 请求之前或者之后追加文本内容,比如想在站点底部追加一个 js 或者 css,可以使用这个模块来实现。)
--with-http_sub_module #启用支持(此模块为 nginx 替换响应内容的模块,比如当站点出现什么敏感字,需要批量修改所有 web 页面,且想修改很耗时间,可以使用这个模块进行替换。或者想临时在站点中加上一个通用 js 或者 css 之类的文件,也可以使用这个模块。)
--with-http_flv_module #启用支持(支持 HTTP-FLV 斱式直播视频)。
--with-http_mp4_module #启用支持(此模块允许 nginx 为 H.264/AAC 编译码的视频文件,如: .mp4、.m4v、和.m4a 扩展名的文件, 提供伪流媒体服务端支持。
伪流媒体是不 Flash 播放器一起配合使用的。 播放器向服务端发送 HTTP 请求,请求中的查询串是以开始时间为参数的,而服务端以流响应,这样流的开始 位置就能于请求中的时间相对应。)
--with-pcre #启用 perl 正则表达式,perl 的正则表达式一般使用在 location 指令和ngx_http_rewrite_module url 重定向模块中。默认 ngx_http_rewrite_module 是就启用的。
make -j 4 #编译,把源代码编译成可执行的二进制文件。
-j 4 #以 4 个进程同时编译,速度快。 -j 后的数字,和 cpu 核心保持一样。
4、修改 nginx 主配置文件
[root@www nginx-1.6.0]# vim /usr/local/nginx/conf/nginx.conf
修改用户为 nginx:
改:2 #user nobody;
为:2 user nginx;
查询nginx的启动,停止方法
[root@www nginx-1.6.0]# nginx -h
5、创建 Nginx 运行用户用于后期启动 nginx 进程使用,比你直接使用 root 用户启动 nginx 更安全。
[root@www nginx-1.6.0]# useradd -M -s /sbin/nologin -u 2000 nginx
-s #指定登录 shell
-M #不创建家目录
-u #指定用户 ID 为 2000,这样方便后期不同服务器之间同步数据时,用户 ID 保持一致。linux默认用户 ID 从 1000 开始
如果不创建nginx用户,启动nginx时会报错,如图:

6、Nginx的启动和开机自启
为主程序nginx创建链接文件
[root@www nginx-1.6.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
Nginx的运行控制方法
手动方法控制Nginx:
nginx -t #检测配置文件语法
执行nginx #主程序启动Nginx
[root@www ~]# nginx #启动nginx服务
[root@www ~]# netstat -anpt |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4651/nginx
[root@www ~]# killall -1 nginx //平滑重启 nginx (reload)
[root@www ~]# killall -s HUP nginx //平滑重启 nginx (reload)
[root@www ~]# killall -3 nginx //正常停止nginx (stop)
[root@www ~]# killall -s QUIT nginx //正常停止nginx (stop)
[root@www ~]# killall -s USR1 nginx //用于nginx的日志切换,也就是重新打开一个日志文件,例如每天要生成一个日志文件时,可以使用这个信号来控制
[root@www ~]# killall -s USR2 nginx //用于平滑升级可执行程序
[root@www ~]# nginx -s reload
[root@www ~]# nginx -s stop</pre>
编写nginx服务脚本
[root@www ~]# vim /etc/init.d/nginx
其内容参考nginx官方文档
#!/bin/bash
# chkconfig: 2345 99 20 # description: Nginx Server Control Scripts shell
PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in start)if [ -f $PIDF ];then
echo "Nginx is running...Start it is error"
else $PROG
fi
;;
stop)if [ -f $PIDF ];then
kill -3 $(cat $PIDF)
rm -f $PIDF
else echo "Nginx is stopping...Stop it is error" fi
;;
restart)
$0 stop
$0 start
;;
reload)if [ -f $PIDF ];then
kill -1 $(cat $PIDF)else echo "Nginx is stopping...reload it is error" fi
;;
status)if [ -f $PIDF ];then
echo "Nginx is running"
else echo "Nginx is stopped" fi
;;*)
echo "Usage:$0 (start|stop|restart|reload|status)" exit 1 esac
exit 0
0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@www ~]# /etc/init.d/nginx status
Nginx is stopped
[root@www ~]# /etc/init.d/nginx start
[root@www ~]# /etc/init.d/nginx start
Nginx is running...Start it is error
[root@www ~]# /etc/init.d/nginx restart
[root@www ~]# /etc/init.d/nginx stop
[root@www ~]# /etc/init.d/nginx stop
Nginx is stopping...Stop it is error
[root@www ~]# /etc/init.d/nginx start
[root@www ~]# /etc/init.d/nginx status
Nginx is running
7、使用systemctl工具管理Nginx
建立服务文件
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true [Install]
WantedBy=multi-user.target
加入开机启动
[root@www ~]# systemctl daemon-reload
[root@www ~]# systemctl enable nginx.service
查看
[root@www ~]# systemctl list-units --type=service
*nginx.service loaded active running The nginx HTTP and reverse proxy server*
查看 Nginx 版本和编译参数
[root@www ~]# nginx -V
nginx version: nginx/1.18.0
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 --with-http_realip_module --with-http_gzip_static_module
--with-http_dav_module --with-http_stub_status_module --with-http_addition_module
--with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre
