Nginx服务器的安装配置
本笔记是以CentOS 操作系统为基础,参考张宴的《实战Nginx取代Apache的高性能Web服务器》一书,里面有个人经验,本博文最后有一个添加Nginx服务控制脚本,是张宴一书没有的。---------------------------------------------------
1.确保操作系统安装有GCC编译器。
GCC编译器及相关工具:GCC全称为GNU Compiler Collection,是GNU社区推出的功能强大、性能优越的用于编程开发的自由编译器,是GNU的代表作品之一,目前可以编译的语言包括:C、C++、Objective-C、Fortran、Java等。您必须确保您的操作系统安装有GCC编译器。
另外,还必须安装Autoconf 和 Automake工具,它们用于自动创建功能完善的Makefile,当前大多数软件包都是用这一工具生成Makefile的,Nginx也不例外。在CentOS系统下,使用yum命令安装GCC编译器及相关工具。
[*]yum -y install gcc gcc-c++ autoconf automake
2.模块依赖性:Nginx的一些模块需要其他第三方库的支持,例如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等。同样,在CentOS系统下,使用yum命令安装或下载源码包编译安装这些模块依赖的库。
[*]yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
3.Nginx的最简单安装命令如下。
[*]tar zxvf nginx-x.x.xx.tar.gz (x.x.xx:为版本号)
[*]cd nginx-x.x.xx.tar.gz
[*]./configure --with-http_stub_status_module
[*]make
[*]make install
按照以上命令,Nginx将被默认安装到/usr/local/nginx目录下。
4.Nginx的configure脚本支持的选项。(可以通过./configure--help命令查看Nginx可选择的编译选项,以下仅列出本人比较常用的选项)
[*]--prefix= ——Nginx安装路径,如果没有指定,默认为/usr/local/nginx
[*]--sbin-path=——Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为/sbin/nginx
[*]--conf-path=——在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为/conf/nginx.conf
[*]--pid-path=——在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为/logs/nginx.conf
[*]--error-log-path=——在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为/logs/error.log
[*]--http-log-path=——在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为/logs/access.log
[*]--user=——在nginx.conf中没有指定user指令的情况下,默认的Nginx使用的用户。如果没有指定,默认为nobody
[*]--group=——在nginx.conf中没有指定user指令的情况下,默认的Nginx使用的组,如果没有指定,默认为nobody
[*]--with-http_ssl_module——开启HTTP SSL模块,使Nginx可以支持HTTPS请求。这个模块需要已经安装 openssl ,在debian上是libssl
[*]--with-http_dav_module——启用ngx_http_dav_module
[*]--with-http_flv_module——启用ngx_http_flv_module
[*]--with-http_gzip_module——启用ngx_http_gzip_module,需要zlib库的支持
[*]--with-http_stub_status_module——启用“server status”统计页
[*]--with-http_referer_module——启用ngx_http_referer_module,当浏览器向web服务器发送请求的时候,一般会带上referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理
[*]--with-http_rewrite_module——启用ngx_http_rewrite_module,需要pcre库的支持
[*]--with-http_proxy_module——启用ngx_http_proxy_module
[*]--with-http_fastcgi_module——启用ngx_http_fastcgi_module
[*]--http-client-body-temp-path=PATH——指定http客户端请求缓存文件存放目录的路径
[*]--http-proxy-temp-path=PATH——指定http反向代理缓存文件存放目录的路径
[*]--http-fastcgi-temp-path=PATH——指定http FastCGI缓存文件存放目录的路径
[*]--with-mail——启用IMAP4/POP3/SMTP 代理模块
[*]--with-mail_ssl_module——启用ngx_mail_ssl_module
[*]--with-cpu-opt=CPU——为特定的CPU编译,有效的值包括:pentium 、pentiumpro 、pentium3 、pentium4 、athlon 、opteron 、amd64 、sparc64 、ppc64
[*]--with-pcre=DIR——指定PCRE库的源代码的路径
[*]--with-pcre-opt=OPTIONS——设置PCRE的额外编译选项
[*]--with-md5=DIR——设置MD5库的源代码路径
[*]--with-md5-opt=OPTIONS——设置MD5库的额外编译选项
[*]--with-md5-asm——使用MD5汇编源码
[*]--with-sha1=DIR——设置sha1库的源代码的路径
[*]--with-sha1-opt=OPTIONS——设置sha1库的额外编译选项
[*]--with-sha1-asm——使用sha1汇编源码
[*]--with-zlib=DIR——设置zlib库的源代码路径
[*]--with-zlib-opt=OPTIONS——设置zlib库的额外编译选项
[*]--with-openssl=DIR——设置openssl库的源代码路径
[*]--with-openssl-opt=OPTIONS——设置openssl库的额外编译选项
[*]--with-debug——启用调试日志
[*]--add-module=PATH——添加一个在指定路径中能够找到的第三方模块
在不同版本间,选项可能会有些许变化,请总是使用./configure--help命令来检查当前的选项列表。
5.Nginx的启动。
启动Nginx,可以执行以下命令。假设Nginx安装在/usr/local/nginx目录中,那么启动Nginx的命令就是:
[*]/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf
参数“-c”指定了配置文件的路径,如果不加“-c”参数,Nginx会默认加载其安装目录的conf子目录中的nginx.conf文件,在本来中即:/usr/local/nginx/sbin/nginx -c /conf/nginx.conf 。
6.查看Nginx的主进程号:
[*]ps-ef|grepnginx
从上图中可以看到,1个Nginx进程的备注信息为“masterprocess”,表示它为主进程,另外的4个进程备注信息为“workersprocess”,表示它们为子进程。
7.检查Nginx的配置文件。
确认Nginx配置文件(nginx.conf)语法的正确性,是启动、重启Nginx的前提,使用以下命令检查:
[*]/usr/local/nginx/sbin/nginx –t
配置文件正确,屏幕将提示以下两行信息:
配置文件错误,屏幕将会提示配置文件的第几行出错:
8.使用系统信号控制Nginx进程。
Nginx通过识别标准的系统信号来控制进程状态。如:HUP、QUIT、TERM、INT等。(可以使用“kill-l”命令查看可用的进程控制信号列表)
[*]killall-s HUPnginx //重新加载配置文件,等同于“killall-1nginx”
[*]killall-s QUITnginx //安全退出,等同于“kill –3nginx”
[*]killall-s TERMnginx //快速退出,不等待处理完当前连接
9.添加Nginx服务控制脚本。
考虑到CentOS的使用习惯,可以添加一个Nginx服务脚本,以便使用chkconfig和service命令管理Nginx服务。(本脚本在RHEL上可以使用)
[*]vi/etc/init.d/nginx
[*]
[*]#!/bin/sh
[*]#chkconfig: – 90 20
[*]#description: Nginx Server Control Script
[*]# //如需使用chkconfig管理,注意以上两行内容不可少
[*]case “$1” in
[*] start)
[*] /usr/local/nginx/sbin/nginx
[*] ;;
[*] stop)
[*] /usr/bin/killall-sQUITnginx
[*] ;;
[*] restart)
[*] $0stop
[*] $0start
[*] ;;
[*] reload)
[*] /usr/bin/killall -s HUPnginx
[*] ;;
[*] *)
[*] echo “Usage: $0 {start|stop|restart|reload}”
[*] exit1
[*]esac
[*]exit0
[*]
[*]chmoda+x/etc/init.d/nginx //添加执行权限
[*]chkconfig--level2345nginxon //设置开机启动
以上Nginx脚本可以通过service命令进行管理控制。
[*]servicenginxstop //关闭
[*]servicenginxstart //启动
[*]servicenginxrestart//重启
[*]servicenginxreload //重新加载
页:
[1]