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