Nginx有一个主进程和几个工作进程,主进程的主要作用就是读取、评估配置文件和管理工作进程
,工作进程对请求做实际处理
;
工作进程的数量是在配置文件中配置的,一般设置为cpu的核心数*线程数
;
nginx可以通过信号控制,默认情况下,主进程的进程ID记录在/usr/local/nginx/logs/nginx.pid 文件中;
信号可以通过nginx可执行文件发送给nginx (nginx -s 信号),也可以通过unix的kill命令发送给nginx,这种情况下是将信号直接发送给指定进程ID的进程,如:kill QUIT 1628;
[root@localhost ~]# /usr/local/nginx/sbin/nginx
nginx -s stop
或者 kill -TERM 主进程号
或者 kill -INT 主进程号
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop
或者
[root@localhost ~]# ps -ef | grep nginx
root 9970 1 0 10:12 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 9971 9970 0 10:12 ? 00:00:00 nginx: worker process
root 10195 9921 0 10:24 pts/2 00:00:00 grep --color=auto nginx
[root@localhost ~]# kill -TERM 9879
nginx -s quit
或者 kill -QUIT 主进程号
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s quit
或者
注意:执行该命令的用户应该是启动nginx的用户
[root@localhost sbin]# ps -ef |grep nginx
root 9889 1 0 13:17 ? 00:00:00 nginx: master process ./nginx
nobody 9890 9889 0 13:17 ? 00:00:00 nginx: worker process
root 9893 2008 0 13:18 pts/1 00:00:00 grep nginx
[root@localhost sbin]# kill -QUIT 9889
nginx -s reload
或者 kill -HUP 主进程号
nginx配置平滑更新
为了让主进程重新读取配置文件,应该向主进程发送一个HUP信号,主进程一旦接收到重新加载配置的的信号,它就检查配置文件语法的有效性,然后试图应用新的配置,即打开新的日志文件和新的socket 监听,如果失败,它将回滚配置更改并继续使用旧的配置,如果成功了,它开启新的工作进程,并给旧的工作进程发消息让它们优雅的关闭,旧的工作进程接收到关闭信号后,不再接收新的请求,如果已有请求正在处理,等当前请求处理完毕后关闭,如果没有请求正在处理,则直接关闭。
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
或者
[root@localhost sbin]# ps -ef|grep nginx
root 9944 1 0 13:22 ? 00:00:00 nginx: master process ./nginx
nobody 9949 9944 0 13:23 ? 00:00:00 nginx: worker process
root 9960 9917 0 13:28 pts/1 00:00:00 grep nginx
[root@songguoliang sbin]# kill -HUP 9944
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost sbin]# ./nginx -v
nginx version: nginx/1.8.0
[root@localhost sbin]# ./nginx -V
nginx version: nginx/1.8.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reopen
Nginx Web 软件定期更新,以下为将低版本升级或者将高版本降级的方法,一般分为四个步骤:软件下载、预编译、编译、配置
,具体方法及代码如下:
[root@localhost ~]# wget http://www.nginx.org/download/nginx-1.4.2.tar.gz
[root@localhost sbin]# ./nginx -V
nginx version: nginx/1.8.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
configure arguments: --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi
[root@localhost ~]# tar - xvf nginx-1.4.2.tar.gz
[root@localhost ~]# cd nginx-1.4.2
编译内容跟老版本一致
[root@localhost nginx-1.4.2]# ./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi
[root@localhost nginx-1.4.2]# make
不要执行 make install
命令!!!
[root@localhost ~]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
[root@localhost ~]# cp objs/nginx /usr/local/nginx/sbin/
[root@localhost ~]# /usr/local/nginx/sbin/nginx - t
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
[root@localhost ~]# /usr/local/nginx/sbin/nginx - v
///最新版本号
[root@localhost ~]# /usr/local/nginx/sbin/nginx - V
///最新编译内容