第一步:检查安装环境
gzip 模块需要 zlib 库;rewrite模块需要 pcre 库;ssl功能需要 openssl 库
获取zlib包
- # wget http://www.zlib.net/zlib-1.2.5.tar.gz
获取pcre包
- # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
获取openssl包
- # wget http://www.openssl.org/source/openssl-0.9.8j.tar.gz
获取nginx源代码包 (获取上传已经下载好的源码包)
- # wget <a href="http://sysoev.ru/nginx/nginx-0.6.35.tar.gz">http://sysoev.ru/nginx/nginx-0.6.35.tar.gz</a>
第二步:解包
- <strong> # tar zxvf zlib-1.2.5.tar.gz
- # tar zxvf pcre-8.00.tar.gz
- # tar zxvf openssl-0.9.8j.tar.gz
- # tar zxvf nginx-0.6.35.tar.gz</strong>
第三步:编译&安装
- # cd nginx-0.6.35/
- # ./configure --prefix=/usr/local/nginx-0.6.35 --without-http_ssi_module --with-pcre=../pcre-8.00/ --with-zlib=../zlib-
- 1.2.5/ --with-openssl=../openssl-0.9.8j --with-http_stub_status_module --with-http_ssl_module --without-http_memcached_module --without-
- http_userid_module --without-http_fastcgi_module --without-http_map_module --without-http_geo_module --without-http_autoindex_module
- # make && make install
说明:
- --prefix=/usr/local/nginx-0.6.35 # Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。
- --without-http_ssi_module # 禁用 ngx_http_ssi_module
- --with-pcre=../pcre-8.00/ # 指定 PCRE 库的源代码的路径
- --with-zlib=../zlib-1.2.5/ # 指定 zlib 库的源代码路径
- --with-openssl=../openssl-0.9.8j # 指定 openssl 库的源代码路径
- --with-http_stub_status_module # 启动监控模块(服务状态查看模块)
- --with-http_ssl_module # 把ssl编译进去, 仅仅指定openssl库的源代码路径还是不够哦
- --without-http_memcached_module # 禁用ngx_http_memcached_module
- --without-http_userid_module # 禁用 ngx_http_userid_module
- --without-http_fastcgi_module # 禁用 ngx_http_fastcgi_module
- --without-http_map_module # 禁用 ngx_http_map_module
- --without-http_geo_module # 禁用 ngx_http_geo_module
- --without-http_autoindex_module # 禁用ngx_http_autoindex_module
第四步:系统配置
- <strong>/usr/local/nginx/sbin/nginx -h #帮助
- /usr/local/nginx/sbin/nginx -v #显示版本
- /usr/local/nginx/sbin/nginx -V #显示版本和配置信息
- /usr/local/nginx/sbin/nginx -t #测试配置
- /usr/local/nginx/sbin/nginx -q #测试配置时,只输出错误信息
- /usr/local/nginx/sbin/nginx -s stop #停止服务器
- /usr/local/nginx/sbin/nginx -s reload #重新加载配置
- /usr/local/nginx/sbin/nginx -s quit #不知道,估计和stop差不多
- /usr/local/nginx/sbin/nginx -s reopen #不知道,估计和reload类似
- /usr/local/nginx/sbin/nginx -p /nginx/path #默认为/usr/local/nginx(nginx安装路径),修改后影响log目录和html目录
- /usr/local/nginx/sbin/nginx -c /configure/file/path #配置文件路径,默认为conf/nginx.conf,有多个配置文件时很有用,用这个可以启动多个不同的nginx监听不同端口
- /usr/local/nginx/sbin/nginx -g #没用过
- </strong>
第五步:启动测试
- # /usr/local/nginx/sbin/nginx
- 在浏览器里输入http://ip:port便可以看到welcome to nginx!的字样
第六步:监控
- <strong>nginx的ngx_http_stub_status_module提供能够获取Nginx自上次启动以来的工作状态 的功能。如果是编译安装的话,需要–with-http_stub_status_module激活,
- 当然,如果用yum等源安装,则默认已经激活了。
- 该模块是基于某个server的,所以必须在server里面
- 如在http://www.pylong.com/archives/54中的server里面添加
- server{
- listen 80; #监听80端口
- server_name www.pylong.com pylong.com; #绑定域名,多个域名的绑定,用空格分开
- index index.html index.php index.htm;#默认读取的文件名
- root /var/www/html; #绑定的虚拟目录
- location ~ .*.php$ #这个location是把所有关于后缀为php的请求交给php-fastcgi处理
- {
- include /etc/nginx/fastcgi_params;
- fastcgi_pass 127.0.0.1:9000;
- }
- location /nginx_status {
- stub_status on;
- access_log off;
- allow 192.168.1.1;#设置为可访问该状态信息的ip
- deny all;
- }
- }
- 然后,reload一下nginx的配置,如果假如了service中,只需要终端运行
- #service nginx reload
- 通过http://www.pylong.com/nginx_status 即可访问
- 状态信息如下
- Active connections: 20
- server accepts handled requests
- 200 200 286
- Reading: 0 Writing: 3 Waiting: 6
- 解释:
- active connections:nginx 正处理的活动连接数 20个。
- server accepts handled requests:nginx启动到现在共处理了 200个连接 , 成功创建 200 次握手 一般跟第一个一样,差值为请求丢失数, 总共处理了286 次请求
- 。
- reading :nginx 读取到客户端的 Header 信息数。
- writing : nginx 返回给客户端的 Header 信息数。
- waiting :开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
- 这个状态信息,从nginx启动算起,包括重载配置文件,也会清零
- </strong>
第七步:通过信号对 Nginx 进行控制
- Nginx 支持下表中的信号:
- 信号名 作用描述
- TERM, INT 快速关闭程序,中止当前正在处理的请求
- QUIT 处理完当前请求后,关闭程序
- HUP 重新加载配置,并开启新的工作进程,关闭就的进程,此操作不会中断请求
- USR1 重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件
- USR2 平滑升级可执行程序
- WINCH 从容关闭工作进程
- 有两种方式来通过这些信号去控制 Nginx,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,通过 kill – XXX <pid> 来控制 Nginx,其
- 中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程,那您也可以通过 killall 命令来完成,例如运行 killall – s HUP nginx 来让 Nginx
- 重新加载配置
PS编译选项:
- configure 脚本确定系统所具有一些特性,特别是 nginx 用来处理连接的方法。然后,它创建 Makefile 文件。
- configure 支持下面的选项:
- --prefix=<path> - Nginx安装路径。如果没有指定,默认为 /usr/local/nginx。
- --sbin-path=<path> - Nginx可执行文件安装路径。只能安装时指定,如果没有指定,默认为<prefix>/sbin/nginx。
- --conf-path=<path> - 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为<prefix>/conf/nginx.conf。
- --pid-path=<path> - 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 <prefix>/logs/nginx.pid。
- --lock-path=<path> - nginx.lock文件的路径。
- --error-log-path=<path> - 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 <prefix>/logs/error.log。
- --http-log-path=<path> - 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 <prefix>/logs/access.log。
- --user=<user> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。
- --group=<group> - 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。
- --builddir=DIR - 指定编译的目录
- --with-rtsig_module - 启用 rtsig 模块
- --with-select_module--without-select_module - Whether or not to enable the select module. This module is enabled by default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure.
- //允许或不允许开启SELECT模式,如果 configure 没有找到更合适的模式,比如:kqueue(sun os),epoll (linux kenel 2.6+), rtsig(实时信号)或者/dev/poll(一种类似select的模式,底层实现与SELECT基本相 同,都是采用轮训方法) SELECT模式将是默认安装模式
- --with-poll_module--without-poll_module - Whether or not to enable the poll module. This module is enabled by default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure.
- --with-http_ssl_module - Enable ngx_http_ssl_module. Enables SSL support and the ability to handle HTTPS requests. Requires OpenSSL. On Debian, this is libssl-dev.
- //开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl-dev
- --with-http_realip_module - 启用 ngx_http_realip_module
- --with-http_addition_module - 启用 ngx_http_addition_module
- --with-http_sub_module - 启用 ngx_http_sub_module
- --with-http_dav_module - 启用 ngx_http_dav_module
- --with-http_flv_module - 启用 ngx_http_flv_module
- --with-http_stub_status_module - 启用 "server status" 页
- --without-http_charset_module - 禁用 ngx_http_charset_module
- --without-http_gzip_module - 禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。
- --without-http_ssi_module - 禁用 ngx_http_ssi_module
- --without-http_userid_module - 禁用 ngx_http_userid_module
- --without-http_access_module - 禁用 ngx_http_access_module
- --without-http_auth_basic_module - 禁用 ngx_http_auth_basic_module
- --without-http_autoindex_module - 禁用 ngx_http_autoindex_module
- --without-http_geo_module - 禁用 ngx_http_geo_module
- --without-http_map_module - 禁用 ngx_http_map_module
- --without-http_referer_module - 禁用 ngx_http_referer_module
- --without-http_rewrite_module - 禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。
- --without-http_proxy_module - 禁用 ngx_http_proxy_module
- --without-http_fastcgi_module - 禁用 ngx_http_fastcgi_module
- --without-http_memcached_module - 禁用 ngx_http_memcached_module
- --without-http_limit_zone_module - 禁用 ngx_http_limit_zone_module
- --without-http_empty_gif_module - 禁用 ngx_http_empty_gif_module
- --without-http_browser_module - 禁用 ngx_http_browser_module
- --without-http_upstream_ip_hash_module - 禁用 ngx_http_upstream_ip_hash_module
- --with-http_perl_module - 启用 ngx_http_perl_module
- --with-perl_modules_path=PATH - 指定 perl 模块的路径
- --with-perl=PATH - 指定 perl 执行文件的路径
- --http-log-path=PATH - Set path to the http access log
- --http-client-body-temp-path=PATH - Set path to the http client request body temporary files
- --http-proxy-temp-path=PATH - Set path to the http proxy temporary files
- --http-fastcgi-temp-path=PATH - Set path to the http fastcgi temporary files
- --without-http - 禁用 HTTP server
- --with-mail - 启用 IMAP4/POP3/SMTP 代理模块
- --with-mail_ssl_module - 启用 ngx_mail_ssl_module
- --with-cc=PATH - 指定 C 编译器的路径
- --with-cpp=PATH - 指定 C 预处理器的路径
- --with-cc-opt=OPTIONS - Additional parameters which will be added to the variable CFLAGS. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-cc-opt="-I /usr/local/include". If we are using select() and it is necessary to increase the number of file descriptors, then this also can be assigned here: --with-cc-opt="-D FD_SETSIZE=2048".
- --with-ld-opt=OPTIONS - Additional parameters passed to the linker. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-ld-opt="-L /usr/local/lib".
- --with-cpu-opt=CPU - 为特定的 CPU 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
- --without-pcre - 禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在 "location" 配置指令中的正则表达式也需要 PCRE 。
- --with-pcre=DIR - 指定 PCRE 库的源代码的路径。
- --with-pcre-opt=OPTIONS - Set additional options for PCRE building.
- --with-md5=DIR - Set path to md5 library sources.
- --with-md5-opt=OPTIONS - Set additional options for md5 building.
- --with-md5-asm - Use md5 assembler sources.
- --with-sha1=DIR - Set path to sha1 library sources.
- --with-sha1-opt=OPTIONS - Set additional options for sha1 building.
- --with-sha1-asm - Use sha1 assembler sources.
- --with-zlib=DIR - Set path to zlib library sources.
- --with-zlib-opt=OPTIONS - Set additional options for zlib building.
- --with-zlib-asm=CPU - Use zlib assembler sources optimized for specified CPU, valid values are: pentium, pentiumpro
- --with-openssl=DIR - Set path to OpenSSL library sources
- --with-openssl-opt=OPTIONS - Set additional options for OpenSSL building
- --with-debug - 启用调试日志
- --add-module=PATH - Add in a third-party module found in directory PATH