nginx下载
Nginx是开源软件,您可以从其官网(http://www.nginx.net/)下载最新版本。
Nginx的编译要求
磁盘空间:需要保证有10M以上的剩余磁盘空间。Nginx安装后会占据4M左右的磁盘空间,实际的磁盘空间需求会因为编译设置和是否安装第三方模块而有所不同。
2.1 安装Nginx服务器所需要的系统资源
GCC编译器及相关工具:GCC全称为GUN 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
模块依赖性
Nginx的一些模块需要其他第三方库的支持,例如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等。同样,如果是在CentOS系统下,我们可以使用yum命令安装或下载源码包编译安装这些模块依赖的库:
Yum –y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
2.2 Nginx的安装
Nginx从0.7.52版本开始有了官方的Windows版本,所以这里分别介绍Nginx在Windows下和Linux下的安装步骤。
2.2.1 nginx在windows环境下的安装
Nginx在windows下的安装比较简单,将下载下来的Nginx-0.XXX.XX.zip文件解压缩到一个不包含空格的路径中,例如:D:\nginx,然后在“开始”-“运行”-“cmd”中执行以下DOS命令即可启动nginx:
D:
cd d:\nginx
start nginx
如果要对启动的Nginx进程进行控制,可以使用DOS命令:
nginx –s [stop | quit | reopen |reload]
2.2.2 nginx在Linux/Unix环境下的安装
Nginx在Linux环境下可以通过编译源码的方式来安装,最简单的安装命令如下:
gunzip nginx-0.x.xx.tar.gz
tar –cvf nginx-0.x.xx.tar.
(UNIX系统使用tar –xf nginx-0.x.xx.tar)
cd nginx-0.x.xx
./configure
make
sudo make install
按照以上命令,nginx将被默认安装到/usr/local/nginx目录下。您可以通过./configure –help查看nginx可选择的编译选项。
使用以下命令自定义编译选项:
./configure
--prefix=/usr \
--sbin-path=/usr/sbin/nginx \
……
2.3 Nginx的启动、停止、平滑重启
2.3.1 nginx的启动
启动Nginx,可以执行以下命令。假设Nginx安装在/usr/local/nginx/目录中,那么启动nginx的命令就是:
/usr/local/nginx/sbin/ -c /usr/local/nginx/conf/nginx.conf
参数“-c”指定了配置文件得路径,如果不加“-c”参数,nginx会默认加载其安装目录的conf子目录中的nginx.conf文件,在本例中即:/usr/local/nginx/sbin/nginx/conf/nginx.conf
2.3.2 nginx的停止
nginx的停止方法有很多种,一般通过发送系统信号给nginx主进程的方式来停止nginx。我们可以通过ps命令来查找nginx的主进程号:
ps –ef | grep nginx
主进程的标志“master process”,子进程的标志:“worker process”
2.3.3 nginx的平滑重启
如果在nginx.conf配置文件中指定了pid文件存放的路径(例如:pid /usr/local/webserver/nginx/logs/nginx.pid),该文件中存放的就是nginx当前的主进程号。如果没有指定pid文件存放路径,nginx.pid文件默认存放在nginx安装目录的logs目录下。所以,我们可以直接通过以下命令来完成平滑重启,省下寻找nginx主进程号的步骤:
kill –信号类型 ‘/usr/local/webserver/nginx/logs/nginx.pid’
信号类型:
TERM:快速关闭;
Quit 从容关闭;
HUP 平滑重启,重新加载配置文件;
USR1:重新打开日志文件,在切割日志时用途较大
USR2:平滑升级可执行程序
WINCH:从容关闭工作进程
2.4 nginx的平滑升级
当需要将正在运行中的nginx升级、添加/删除服务器模块时,可以再不中断服务的情况下,使用新版本、重编译的nginx可执行程序替换旧版本的可执行程序。步骤如下:
(1)使用新的可执行程序替换旧的可执行程序,对于编译安装的nginx,可以将新版本编译安装到旧版本的nginx安装路径中。替换之前,您最好备份一下旧的可执行文件。
(2)发送以下指令:kill –USR2 旧版本的nginx主进程号
(3)旧版本的Nginx的主进程将重命名它的.pid文件为.oldbin(例如:/usr/local/webserver/nginx/logs/nginx.pid.oldbin),然后执行新版本的nginx可执行程序,依次启动新的主进程和新的工作进程。
(4)此时,新、旧版本的nginx实例会同时运行,共同处理输入的请求。要逐步停止旧版本的nginx实例,你必须发送WINCH信号给旧的主进程,然后他的工作进程就将开始从容关闭:kill –WINCH 旧版本的nginx主进程号
(5)一段时间后,旧的工作进程处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了。
(6)这时候,我们可以决定是使用新版本,还是恢复到旧版本:
kill –HUP 旧的主进程号:nginx将在不重载配置文件的情况下启动它的工作进程
Kill –QUIT 新的主进程号:从容关闭其工作进程
kill –TERM 新的主进程号:强制退出
kill 新的主进程号或旧的主进程号:如果因为某些原因新的工作进程不能退出,则向其发送kill信号
新的主进程退出后,旧的主进程会移除.oldbin前缀,恢复它的.pid文件,这样,一切就都恢复到升级之前了。如果尝试升级成功,而你也希望保留新的服务器时,可发送QUIT信号给旧的主进程,使其退出而只留下新的服务器运行。