配置Nginx服务

aiofo2022-08-15  11

Nginx是一款相当优秀的用于部署动态网站的轻量级服务程序,它最初是为俄罗斯门户站点而开发的,因其稳定性、功能丰富、占用内存少且并发能力强而备受用户的信赖。目前国内诸如新浪、网易、腾讯等门户站点均已使用了此服务。

Nginx服务程序的稳定性源自于采用了分阶段的资源分配技术,降低了CPU与内存的占用率,所以使用Nginx程序部署的动态网站环境不仅十分稳定、高效,而且消耗的系统资源也很少。此外,Nginx具备的模块数量与Apache具备的模块数量几乎相同,而且现在已经完全支持proxy、rewrite、mod_fcgi、ssl、vhosts等常用模块。更重要的是,Nginx还支持热部署技术,可以7×24不间断提供服务,还可以在不暂停服务的情况下直接对Nginx服务程序进行升级。

 

图20-2 Nginx与Apache著名LOGO

坦白来讲,虽然Nginx程序的代码质量非常高,代码很规范,技术成熟,模块扩展也很容易,但依然存在不少问题,比如是由俄罗斯人开发的,所以在资料文档方面还并不完善,中文资料的质量更是鱼龙混杂。但是Nginx服务程序在近年来增长势头迅猛,相信会在轻量级Web服务器市场具有不错的未来。

在正式安装Nginx服务程序之前,我们还需要为其解决相关的软件依赖关系,例如用于提供Perl语言兼容的正则表达式库的软件包pcre,就是Nginx服务程序用于实现伪静态功能必不可少的依赖包。下面来解压、编译、生成、安装Nginx服务程序的源码文件:

[[email protected] ~]# cd /usr/local/src

[[email protected] src]# tar xzvf pcre-8.35.tar.gz

[[email protected] src]# cd pcre-8.35

[[email protected] pcre-8.35]# ./configure --prefix=/usr/local/pcre

[[email protected] pcre-8.35]# make

[[email protected] pcre-8.35]# make install openssl

软件包是用于提供网站加密证书服务的程序文件,在安装该程序时需要自定义服务程序的安装目录,以便于稍后调用它们的时候更可控。

[[email protected] pcre-8.35]# cd /usr/local/src [[email protected] src]# tar xzvf openssl-1.0.1h.tar.gz

[[email protected] src]# cd openssl-1.0.1h

[[email protected] openssl-1.0.1h]# ./config --prefix=/usr/local/openssl [[email protected] openssl-1.0.1h]# make

[[email protected] openssl-1.0.1h]# make install openssl

软件包安装后默认会在/usr/local/openssl/bin目录中提供很多的可用命令,我们需要像前面的操作那样,将这个目录添加到PATH环境变量中,并写入到配置文件中,最后执行source命令以便让新的PATH环境变量内容可以立即生效:

[[email protected] pcre-8.35]# vim /etc/profile ………………省略部分输出信息………………

64

65 for i in /etc/profile.d/.sh ; do

66 if [ -r "$i" ]; then

67 if [ "${-#i}" != "$-" ]; then

68 . "$i"

69 else

70 . "$i" >/dev/null

71 fi

72 fi

73 done

74 export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin

75 unset i

76 unset -f pathmunge

[[email protected] pcre-8.35]# source /etc/profile zlib

软件包是用于提供压缩功能的函数库文件。其实Nginx服务程序调用的这些服务程序无需深入了解,只要大致了解其作用就已经足够了:

[[email protected] pcre-8.35]# cd /usr/local/src

[[email protected] src]# tar xzvf zlib-1.2.8.tar.gz

[[email protected] src]# cd zlib-1.2.8

[[email protected] zlib-1.2.8]# ./configure --prefix=/usr/local/zlib

[[email protected] zlib-1.2.8]# make [[email protected] zlib-1.2.8]# make install

在安装部署好具有依赖关系的软件包之后,创建一个用于执行Nginx服务程序的账户。账户名称可以自定义,但一定别忘记,因为在后续需要调用:

[[email protected] zlib-1.2.8]# cd ..

[[email protected] src]# useradd www -s /sbin/nologin

在使用命令编译Nginx服务程序时,需要设置特别多的参数,其中,--prefix参数用于定义服务程序稍后安装到的位置,--user与--group参数用于指定执行Nginx服务程序的用户名和用户组。在使用参数调用openssl、zlib、pcre软件包时,请写出软件源码包的解压路径,而不是程序的安装路径:

[[email protected] src]# tar xzvf nginx-1.6.0.tar.gz

[[email protected] src]# cd nginx-1.6.0/

[[email protected] nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35

[[email protected] nginx-1.6.0]# make

[[email protected] nginx-1.6.0]# make install

要想启动Nginx服务程序以及将其加入到开机启动项中,也需要有脚本文件。可惜的是,在安装完Nginx软件包之后默认并没有为用户提供脚本文件,因此刘遄老师给各位读者准备了一份可用的启动脚本文件,大家只需在/etc/rc.d/init.d目录中创建脚本文件并直接复制下面的脚本内容即可(相信各位读者在掌握了第4章的内容之后,应该可以顺利看懂这个脚本文件)。

[[email protected] nginx-1.6.0]# vim /etc/rc.d/init.d/nginx

!/bin/bash

  1. # nginx - this script starts and stops the nginx daemon
  2. # chkconfig: - 85 15
  3. # description: Nginx is an HTTP(S) server, HTTP(S) reverse \
  4. # proxy and IMAP/POP3 proxy server
  5. # processname: nginx
  6. # config: /etc/nginx/nginx.conf
  7. # config: /usr/local/nginx/conf/nginx.conf
  8. # pidfile: /usr/local/nginx/logs/nginx.pid
  9. # Source function library.
  10. . /etc/rc.d/init.d/functions
  11. # Source networking configuration.
  12. . /etc/sysconfig/network
  13. # Check that networking is up.
  14. [ "$NETWORKING" = "no" ] && exit 0
  15. nginx="/usr/local/nginx/sbin/nginx"
  16. prog=$(basename $nginx)
  17. NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
  18. [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
  19. lockfile=/var/lock/subsys/nginx
  20. make_dirs() {
  21. # make required directories
  22. user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
  23.        if [ -z "`grep $user /etc/passwd`" ]; then
  24.                useradd -M -s /bin/nologin $user
  25.        fi
  26. options=`$nginx -V 2>&1 | grep 'configure arguments:'`
  27. for opt in $options; do
  28.        if [ `echo $opt | grep '.*-temp-path'` ]; then
  29.                value=`echo $opt | cut -d "=" -f 2`
  30.                if [ ! -d "$value" ]; then
  31.                        # echo "creating" $value
  32.                        mkdir -p $value && chown -R $user $value
  33.                fi
  34.        fi
  35. done
  36. }
  37. start() {
  38. [ -x $nginx ] || exit 5
  39. [ -f $NGINX_CONF_FILE ] || exit 6
  40. make_dirs
  41. echo -n $"Starting $prog: "
  42. daemon $nginx -c $NGINX_CONF_FILE
  43. retval=$?
  44. echo
  45. [ $retval -eq 0 ] && touch $lockfile
  46. return $retval
  47. }
  48. stop() {
  49. echo -n $"Stopping $prog: "
  50. killproc $prog -QUIT
  51. retval=$?
  52. echo
  53. [ $retval -eq 0 ] && rm -f $lockfile
  54. return $retval
  55. }
  56. restart() {
  57. #configtest || return $?
  58. stop
  59. sleep 1
  60. start
  61. }
  62. reload() {
  63. #configtest || return $?
  64. echo -n $"Reloading $prog: "
  65. killproc $nginx -HUP
  66. RETVAL=$?
  67. echo
  68. }
  69. force_reload() {
  70. restart
  71. }
  72. configtest() {
  73. $nginx -t -c $NGINX_CONF_FILE
  74. }
  75. rh_status() {
  76. status $prog
  77. }
  78. rh_status_q() {
  79. rh_status >/dev/null 2>&1
  80. }
  81. case "$1" in
  82. start)
  83.        rh_status_q && exit 0
  84.        $1
  85.        ;;
  86. stop)
  87.        rh_status_q || exit 0
  88.        $1
  89.        ;;
  90. restart|configtest)
  91. $1
  92. ;;
  93. reload)
  94.        rh_status_q || exit 7
  95.        $1
  96.        ;;
  97. force-reload)
  98.        force_reload
  99.        ;;
  100. status)
  101.        rh_status
  102.        ;;
  103. condrestart|try-restart)
  104.        rh_status_q || exit 0
  105.        ;;
  106. *)
  107. echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
  108. exit 2
  109. esac

保存脚本文件后记得为其赋予755权限,以便能够执行这个脚本。然后以绝对路径的方式执行这个脚本,通过restart参数重启Nginx服务程序,最后再使用chkconfig命令将Nginx服务程序添加至开机启动项中。大功告成!

[[email protected] nginx-1.6.0]# chmod 755 /etc/rc.d/init.d/nginx [[email protected] nginx-1.6.0]# /etc/rc.d/init.d/nginx restart Restarting nginx (via systemctl): [ OK ] [[email protected] nginx-1.6.0]# chkconfig nginx on Nginx服务程序在启动后就可以在浏览器中输入服务器的IP地址来查看到默认网页了。相较于Apache服务程序的红色默认页面,Nginx服务程序的默认页面显得更加简洁,如图20-2所示。

图20-3 Nginx服务程序的默认页面

转载请注明原文地址:https://www.aiofo.com/read-1460.html

上一篇:配置Mysql服务

下一篇:配置php服务