编译Nginx需要安装GCC编译器
Shell>sudo apt-get install autoconf automake build-essential
模块依赖性:nginx的一些模块需要第三方库支持,例如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库等。
Shell>sudo apt-get install zlib1g openssl libssl-dev libpcre3 libpcre3-dev
Nginx安装
Shell> ./configure \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module
Shell>make
Shell>make install
Nginx启动
Shell>./nginx -c /usr/local/nginx/conf/nginx.conf
参数-c指定了配置文件的路径,如果不加-c参数,Nginx会默认加载其安装目录的下的conf子目录中的nginx.conf文件。
查看端口号
shell> sudo lsof -i tcp:80
shell>netstat -ntlpNginx关闭
我们使用shell>ps aux | grep nginx 可以看到进程中,有一个为master process 表示主进程,其他为worker process 表示为子进程. 然后直接使用kill 进程号即可.
Nginx的平滑重启配置文件
如果改变了Nginx的配置文件(nginx.conf),为了确认配置文件的语法是否正确,我们可以通过下面命令进行判断:
Shell>/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
如果配置文件正确,我们可以使用shell>kill -HUP 主进程号; 命令来执行,它会首先解析配置文件,如果成功,就应用新的配置文件。
1 | sudo -HUP ` cat
.pid` |
Nginx的信号控制
Nginx支持以下几种信号:
TERM,INT 快速关闭; QUIT 从容关闭; HUP 平滑重启; USR1 重新打开日志文件,在切割日志时用途大; USR2 平滑升级可执行程序; WINCH 从容关闭工作进程;
Nginx的平滑升级
当需要将正在运行中的Nignx升级,添加或删除模块时,可以在不中断服务的情况下进行更新,步骤如下:
1.使用新的可执行程序替换旧的可执行文件,如果是编译安装,则可将新版本的编译安装到旧版本的Nginx安装路径中。
2.发送指令 shell>kill -USR2 旧版本进程号
3.旧版本会自动将进程号重名命为.oldbin,然后执行新版本的Nginx可执行程序。
4.发送信号逐步停止 shell>kill -WINCH 旧版本进程号
5.旧版本慢慢处理所有链接并关闭
6.现在我们可以决定使用新版本还是旧版本
Shell>kill -HUP 旧进程号 Nginx不重载配置文件启动它的工作进程
Shell>kill -QUIT 新进程号 从容关闭其工作进程
Shell>kill -TERM 新进程号 强制退出