Nginx(engine x) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器,与 Apache、lighttpd相比,nginx 占用内存少,稳定性高,它最常的用途是提供反向代理服务。
安装yum 源不提供 nginx 的安装,可以通过切换 yum 源的方法获取安装,或者手动下载安装包,以下操作都需要root权限。
安装 nginx 前需要三个库(nginx 中 gzip 模块需要 zlib 库,rewrite 模块需要 pcre 库,ssl 功能需要 openssl 库),将目录切换到/usr/local
。以下依赖库版本号可选择最新的。
安装 PCRE 库
1 2 3 4 5 6 7 cd /usr/local/ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz tar -zxvf pcre-8.41.tar.gz cd pcre-8.41 ./configure make make install
安装 zlib 库
1 2 3 4 5 6 7 cd /usr/local/ wget http://zlib.net/zlib-1.2.11.tar.gz tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./configure make make install
安装 ssl
1 2 3 4 5 6 cd /usr/local/ wget http://www.openssl.org/source/openssl-1.1.0g.tar.gz tar -zxvf openssl-1.1.0g.tar.gz ./config make make install
安装 nginx
1 2 3 4 5 6 7 cd /usr/local/ wget http://nginx.org/download/nginx-1.12.2.tar.gz tar -zxvf nginx-1.12.2.tar.gz cd nginx-1.12.2 ./configure --prefix=/usr/local/nginx make make install
注意:configure 后面可带编译参数,要将上面三个库编译到 nginx 模块中,并且让 nginx 支持 https,还需带这些参数(跟在上面的 prefix 后面就行,以空格隔开)
1 2 3 4 5 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.41 --with-zlib=/usr/local/zlib-1.2.11 --with-openssl=/usr/local/openssl-1.1.0g
安装完成后可输入/usr/local/nginx/sbin/nginx -V
查看 configure 参数有哪些。这时候也可以通过输入/usr/local/nginx/sbin/nginx
启动 nginx,浏览器输入虚拟机ip,如果出现nginx欢迎页则说明 nginx 安装并运行成功。这时也可以在centos里测试curl --head http://localhost
,其它命令如下
1 2 3 4 /usr/local/nginx/sbin/nginx -s reload #重启 /usr/local/nginx/sbin/nginx -s stop #停止 /usr/local/nginx/sbin/nginx -t #测试配置文件 /usr/local/nginx/sbin/nginx -v #打印版本号
Cautions :firewall 防火墙可能没有开放80端口和 http 服务,从而导致浏览器不能访问 web。可用命令查看防火墙允许的端口和服务(不加--permanent
参数的话重启防火墙之后就会失效)
1 2 firewall-cmd --permanent --list-services firewall-cmd --permanent --list-ports
如果没有上面所说的端口和服务,那就输入下面的命令:
1 2 firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-port=80/tcp
加入系统服务创建 nginx 启动命令脚本
粘贴以下内容, 注意修改 PATH 和 NAME 字段, 匹配自己的安装路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 #!/bin/bash # nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: - 85 15 # description: Nginx is a high-performance web and proxy server. # It has a lot of features, but it's not for everyone. # processname: nginx # pidfile: /var/run/nginx.pid # config: /usr/local/nginx/conf/nginx.conf nginxd=/usr/local/nginx/sbin/nginx nginx_config=/usr/local/nginx/conf/nginx.conf nginx_pid=/var/run/nginx.pid RETVAL=0 prog="nginx" # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $nginxd ] || exit 0 # Start nginx daemons functions. start() { if [ -e $nginx_pid ];then echo "nginx already running...." exit 1 fi echo -n $"Starting $prog: " daemon $nginxd -c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx return $RETVAL } # Stop nginx daemons functions. stop() { echo -n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid } # reload nginx service functions. reload() { echo -n $"Reloading $prog: " #kill -HUP `cat ${nginx_pid}` killproc $nginxd -HUP RETVAL=$? echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|reload|status|help}" exit 1 esac exit $RETVAL
设置执行权限
1 chmod a+x /etc/init.d/nginx
添加到 chkconfig 管理列表
1 chkconfig --add /etc/init.d/nginx
加完这个之后,就可以使用 service 对 nginx 进行启动、重启等操作了。
1 2 3 service nginx start service nginx reload service nginx stop
或者
1 2 3 systemctl start nginx.service systemctl stop nginx.service systemctl reload nginx.service
设置开机自启
chkconfig --list nginx
显示 nginx 服务在不同运行级的状态
等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动
我们也可以把 nginx 服务从 chkconfig 列表中删除