Nginx专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP 并发连接的高处理能力(单台物理服务器可支持30000~50000 个并发请求)正因为如此,大量提供社交网络,新闻资讯,电子商务及虚拟主机等服务的企业纷纷选择 Nginx 来提供Web 服务。
Nginx最新的稳定版本为1.12.0其安装文件可以从官方网站http://www.nginx.org/下载下面以稳定版1.12.0为例,介绍Nginx 的安装及运行控制。
1.编译安装 Nginx
安装支持软件
Nginx的配置及运行需要 pcre zlib 等软件包的支持,因此应预先安装这些软件的开发包(devel).以便提供相应的库和头文件,确保Nginx的安装顺利完成,具体安装命令如下所示
[root@localhost ~]# yum -y install pcre-devel zlib-devel
创建运行用户、组
Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性,降低安全风险。例如,创建一个名为 nginx 的用户,不建立宿主文件夹,也禁止登录到 Shell 环境
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
编译安装Nginx
配置 Nginx 的编译选项时,将安装目录设为/usr/local/nginx,运行用户及组均设为 nginx;启用http_stub_status_module 模块以支持状态统计,便于查看服务器的连接信息。具体选项根据实际需要来定,配置前可考
“./configure --help”给出的说明
[root@localhost ~]# tar zxf nginx-1.12.0.tar.gz
[root@localhost ~]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module
[root@localhost nginx-1.12.0]# make && make install
为了使Nginx 服务器的运行更加方便,可以为主程序nginx 创建链接文件,以便管理员直接执行"nginx"命令就可以调用 Nginx 的主程序。
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.12.0]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx. 1 root root 27 1月 5 10:52 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
2.nginx的运行控制
检查配置文件
与Apache 的主程序httpd 类似,Nginx 的主程序也提供了“-t”选项用来对配置文件进行检查以便找出不当或错误的配置。配置文件 nginx,conf 默认位于安装目录下的 conf/子目录中,若要检查位于其他位置的配置文件,可以使用"-c" 选项来指定路径。
启动、停止Nginx
直接运行 nginx 命令即可启动 Nginx 服务器,这种方式将使用默认的配置文件,若要改用其他配置文件,需添加“-c 配置文件路径”选项来指定配置文件路径,需要注意的是,若服务器中已装有httpd 等其他 Web 服务软件,应采取修改端口、停用或卸载等措施避免端口冲突
[root@localhost nginx-1.12.0]# nginx
通过检查Nginx 程序的监听状态,或者在浏览器中访问此 Web 服务(默认页面将显示Welcometo nginx!”),可以确认Nginx 服务是否正常运行。下面示例中提到的 elinks 是 Linux 系统中常用的文本浏览器。
[root@localhost nginx-1.12.0]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 72321/nginx: master
主程序Nginx 支持标准的进程信号,通过kill 或killall 命令发送HUP 信号表示重载配置,QUIT 信号表示退出进程,KILL 信号表示杀死进程,例如,若使用killall 命令,重载配置,停止服务的操作分别如下所示(通过-s”选项指定信号种类)。最小化安装的 entos 系统默认没有安装 killall 命令需要先通过yum安装
[root@localhost nginx-1.12.0]# yum install -y psmisc
[root@localhost nginx-1.12.0]# killall -s HUP nginx
[root@localhost nginx-1.12.0]# killall -s QUIT nginx
当Nginx 进程运行时,PID 号默认存放在logs/目录下的nginx.pid 文件中,因此若改用 kill 命令也可以根据nginxpid 文件中的PD 号来进行控制
使用Nginx服务脚本
为了使Nginx服务的启动停止重载等操作更加方便可以编写Nginx 服务脚本并使用chkconfig和systemctl工具来进行管理,也更加符合CentOS系统的管理习惯。
[root@localhost nginx-1.12.0]# cat /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@localhost nginx-1.12.0]# chmod +x /etc/init.d/nginx
[root@localhost nginx-1.12.0]# chkconfig --add nginx
[root@localhost nginx-1.12.0]# systemctl status 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)
[root@localhost nginx-1.12.0]#
这样,就可以通过 systemctl 命令控制 Nginx 脚本来启动、停止,重启重载Nginx 服务器了方法是在执行时添加相应的 start,stop、restart、reload 参数。