Nginx(发音为[engine x])专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消 耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求)。正因 为如此,大量提供社交网络、新闻资讯.电子商务及虚拟主机等服务的企业纷纷选择Nginx来提 供Web服务。
Nginx最新的稳定版本为1.12.0.其安装文件可以从官方网站http://www.nginx.org/下载。
(1)安装支持软件
Nginx的配置及运行需要pcre、zlib等软件包的支持,因此应预先安装这些软件的开发包(devel)。以便提供相应的库和头文件,确保Nginx的安装顺利完成,具体安装命令如下所示。
[root@llcgc ~]# mount /dev/cdrom /mnt/ //先挂载光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@llcgc ~]# yum -y install pcre-devel zlib-devel
(2)创建运行用户、组
Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其 访问权限,增加灵活性,降低安全风险,例如,创建一个名为nginx的用户.不建立宿主文件夹,也 禁止登录到 Shell 环境。
[root@llcgc ~]# useradd -M -s /sbin/nologin nginx
(3)编译安装
配置 Nginx的编译选项时,将安装目录设为/usr/locael/nginx,运行用户及组均设为nginx;启用 http_stub_status_module模块以支持状态统计,便于查看服务器的连接信息。具体选项根据实际需要 来定,配置前可参考“./configure--help”给出的说明。
[root@llcgc ~]# rz -E //将源码包nginx-1.12.0.tar.gz拉进来
rz waiting to receive.
[root@llcgc ~]# tar zxf nginx-1.12.0.tar.gz
[root@llcgc ~]# cd nginx-1.12.0/
[root@llcgc nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@llcgc nginx-1.12.0]# make
[root@llcgc nginx-1.12.0]# make install
为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行 “nginx”命令就可以调用Nginx的主程序。
[root@llcgc nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@llcgc nginx-1.12.0]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx. 1 root root 27 1月 11 15:09 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
(1)检测配置文件
与Apache的主程序httpd类似,Nginx的主程序也提供了“-t”选项用来对配置文件进行检查. 以便找出不当或错误的配置.配置文件nginx.conf默认位于安装目录下的conf/子目录中,若要检查位于其他位置的配置文件,可使用“-c”选项来指定路径。
[root@llcgc ~]# nginx -t
(2)启动、停止Nginx
直接运行nginx命令即可启动Nginx服务器,这种方式将使用默认的配置文件,若要改用其他配 置文件,需添加“-c配置文件路径”选项来指定配置文件路径,需要注意的是,若服务器中已装有 httpd等其他Web服务软件,应采取修改端口、停用或卸载等措施避免端口冲突。
[root@llcgc ~]# nginx
启动后浏览器直接访问本机IP地址就可以连接到该画面:
通过检查Nginx程序的监听状态,或者在浏览器中访问此Web 服务(默认页面将显示“Welcome to nginx!"),可以确认Nginx服务是否正常运行,下面示例中提到的elirks是Linux系统中常用的文本浏览器。
[root@llcgc ~]# netstat -anpt | grep nginx
[root@llcgc ~]# yum install -y elinks
[root@llcgc ~]# elinks http://llcgc //使用elinks浏览器访问web服务时,显示“Welcome to nginx”页面,表明Nginx服务已经正常运行
主程序Nginx支持标准的进程信号,通过kill或killall命令发送HUP信号表示重载配置,QUIT信 号表示退出进程,KIL信号表示杀死进程,例如,若使用killall命令,重载配置、停止服务的操作分 别如下所示(通过‘-s选项指定信号种类),最小化安装的centos系统默认没有安装killall命令, 需要先通过yum安装
[root@llcgc ~]# yum install -y psmisc
[root@llcgc ~]# killall -s HUP nginx
[root@llcgc ~]# killall -s QUIT nginx
当Nginx进程运行时,PID号默认存放在logs/目录下的nginx.pid文件中,因此若改用kill命令, 也可以根据nginx.pid文件中的PID号来进行控制。
(3)使用Nginx服务脚本
为了使Nginx服务的启动,停止.重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和systemctl 工具来进行管理,也更加符合CentOS系统的管理习惯。
[root@llcgc ~]# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
[root@llcgc ~]# chmod +x /etc/init.d/nginx //给脚本执行权限
[root@llcgc ~]# chkconfig --add nginx //添加为系统服务
[root@llcgc ~]# systemctl status nginx //查看Nginx服务状态
● nginx.service - SYSV: Nginx Service Control Script
Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)
这样,就可以通过systemctl命令控制Nginx脚本来启动、停止、重启、重载Nginx服务器了,方 法是在执行时添加相应的start.stop.restart.reload参数。