笔记之 Nginx 服务器的安装与配置
安装Nginx服务器之前,首先要安装一个Linux/Unix操作系统发行版,例如 Redhat、CentOS、Debian、FedoraCore、Getoo、SUSE、Ubuntu、FreeBSD等。国内互联网公司以新浪、搜狐、网易、金山游戏官网等最常用的Linux发行版——CentOS(它是基于RedHat Enterprise Linux源代码重新编译、去除RedHat商标的产物,操作与使用完全相同,并且完全免费和修正了其很多BUG,但是它不提供技术支持)。
编译Nginx要求如下:
1. Gcc编译器及相关工具:必须确保操作系统有安装GCC编译器,另外还要安装Autoconf和Automake工具,它们用于自动创建功能完善的Makfile,CentOS下yum命令安装:yum –y install gcc gcc-c++ autooconf automake
2. 模块依赖性:Nginx的一些模块需要第三方库的支持,例如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等。CentOS下yum命令安装:
yum –y install zlib zlib-devel openssl openssl-devel \ pcre pcre-devel
Nginx的官网 http://www.nginx.net
最简单的安装命令如下:
tar zxvf nginx-x.x.xx.tar.gz
cd nginx-x.x.xx
./configure
Make&&make install
这将Nginx默认安装到/usr/local/nginx 目录下。
可以通过 ./configure –help 命令查看Nginx可选择的编译选项。下面我写几个常用的编译选项:
--prefix=<path>——安装路径,没有指定默认为 /usr/local/nginx
--sbin-path=<path>——可执行文件安装路径,默认为<path>/sbin/nginx
--confi-path=<path>——nginx.conf配置文件的路径,默认为<path>/conf/nginx.conf
--pid-path=<path>——在nginx.conf没有指定pid的情况下nginx.pid的路径,默认为<path>/logs/nginx.pid
--lock-path=<path>——nginx.lock文件的路径
--error-log-path=<path>——在nginx.conf中没有指定error_log的情况下的路径,默认<prefilx>/logs/error.log
--http-log-path=<path>——在nginx.conf中没有指定access_log的情况下的访问日志路径,默认为<path>/logs/eccess.log
--user=<user>——在nginx.conf 中没有指定user的情况下的Nginx使用的用户,默认为nobody
--group=<group>——在nginx.conf中没有指定user的情况下的nginx使用组,默认为nobody
--with-http_ssl_module——开启http ssl 模块,使nginx可以支持https请求,这个模块需要已经安装openssl,在Debian上是libssl.
--with-http_flv_module——启用ngx_http_flv_module
--with-http_gzip_module(--without-http_gzip_module)——启用或禁用ngx_http_gzip_module,如果启用,需要zlib
--without-http_proxy_module
--without-http_rewrite_module 如果启用,需要PCRE
--without-http_fastcgi_module
Without-http_memcached_module
--without-http_limit_zone_module
--with-http_perl_module
等等。
示例编译代码如下:
./configure --prefix=/usr \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
Nginx的启动
<path>/sbin/nginx –c <path>/conf/nginx.conf
参数“-c”指定了配置文件的路径,如果不加“-c”参数,Nginx会默认加载其安装目录的conf子目录中的nginx.conf文件。
Nginx的停止
停止方法有很多种,一般通过发送系统信号给nginx主进程的方式来停止nginx。通过命令ps –ef | grep nginx查看nginx的主进程“master process”和子进程“workerprocess”,每个进程都有一个进程号,如果在nginx.conf配置文件中指定了pid文件存放的路径(如: pid <path>/logs/nginx.pid ;)
该文件就是存放Nginx当前的主进程号,若没有指定pid文件的路径,则nginx.pid文件默认在<path>/logs/目录下面。所以我们可以通过一下命令来完成平滑启动,省去了找主进程号的步骤:
Kill –信号类型 `<path>/logs/nginx.pid`
(1.) 从容停止Nginx
Kill -QUIT Nginx主进程号
或 Kill -QUIT `<path>/logs/nginx.pid`
(2.) 快速停止 Nginx
Kill -TERM Nginx主进程号
Kill -TERM `<path>/logs/nginx.pid`
或 kill -INT Nginx主进程号
Kill -INT `<path>/logs/nginx.pid`
(3.) 强制停止所有Nginx进程
Kill -9 nginx
判断配置文件是否正确:
<path>/sbin/nginx –t –c <path>/conf/nginx.conf
如果文件正确,就可以平滑启动Nginx了
Kill -HUP Nginx主进程号
Kill -HUP `<path>/logs/nginx.pid`
Nginx收到HUP信号时,先解析配置文件,成功,就应用新的配置文件。之后nginx运行新的工作进程并从容关闭旧的工作进程。如果新的配置文件应用失败,Nginx继续使用旧的配置文件。
Nginx的信号控制:
TERM,INT 快速关闭;
QUIT 从容关闭;
HUP 平滑重启,重新加载配置文件;
USR1 重新打开日志文件,在切割日志文件时用途较大;
USR2 平滑升级可执行程序;
WINCH 从容关闭工作进程。
Nginx的平滑升级
当需要将正在运行中的Nginx升级、添加、删除服务器模块式,可以在不中断服务器的情况下,使用新版本、重编译的Nginx可执行程序替换旧的版本的可执行程序,步骤如下:
1. 使用新的可执行程序替换旧的可执行程序,对于编译安装的Nginx可以将新版本编译安装到旧版本的Nginx安装路径中。替换之前组号备份。
2. 发送以下指令: kill -USR2 旧版本的Nginx主进程号
3. 旧版本的主进程将重命名。Pid文件为.oldbin(如:<path>/logs/nginx.pid.oldbin),r然后执行新版本的可执行程序,依次启动新的主进程和新的工作进程。
4. 此时,新、旧版本的Nginx实例会同时运行,共同处理输入的请求。要逐步停止旧版本的Nginx实例,你必须发送WINCH信号给旧的主进程,它的工作进程才开始从容关闭:
kill -WINCH 旧版本的Nginx主进程号
5. 这时我们可以决定使用新版本还是旧版本。
2011.2.13
转载于:https://blog.51cto.com/weekyuan/780217