美文网首页
Nginx系列-初始化

Nginx系列-初始化

作者: jarvan4dev | 来源:发表于2016-12-06 19:21 被阅读224次

    Nginx 进程分为主进程(master process)和若干工作进程(work process),其中工作进程指明了nginx要开启的进程数,据官方说法,一般开一个就够了,多开几个,可以减少机器io带来的影响。 一般为当前机器总cpu核心数的1到2倍。如,我的机器为双核,那么开4个足够了。新版本的Nginx中work_processes可配置为auto

    关于Nginx的安装

    由于我的环境是CentOS7,为了方便,使用yum安装

    yum install nginx.x86_64
    # 使用此方式安装的Nginx主要目录如下:
    配置:/etc/nginx/nginx.conf #主配置文件
         /etc/nginx/conf.d/ #子配置文件
    log:/var/log/nginx/*.log
    缓存:/var/lib/nginx/,# --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi
    Nginx默认主页:/usr/share/nginx/html/
    

    这种方式属于入门方式,其实Nginx的强大之处不只是Nginx本身,还有其众多的Module,使用yum安装的话就不方便安装它的Module,所以如果需要安装其Module的话,还是使用编译安装吧,可以参考官方文档-编译安装或者中文文档
    下面提供编译安装例子

    sudo ./configure --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/run/nginx.lock \
    --http-client-body-temp-path=/var/cache/nginx/client_temp \
    --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
    --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
    --user=dev \
    --group=developers \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_stub_status_module \
    --with-http_auth_request_module \
    --with-threads \
    --with-stream \
    --with-stream_ssl_module \
    --with-http_slice_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-file-aio \
    --with-http_v2_module \
    --with-ipv6
    
    sudo make && make install
    

    如果想要安装某些模块,只需要重新编译即可(--with-xxxx)xxx表示某些Module,关于模块安装,可以参考:http://www.nginx.cn/doc/
    http://www.ttlsa.com/nginx/how-to-install-nginx-third-modules/

    Nginx命令行参数

    参数 作用
    -c </path/to/filename> 指定Nginx启动的配置文件,默认:/etc/nginx/nginx.conf
    -s <signal> 向主进程发送信号:stop, quit, reopen, reload
    -t 仅测试配置文件是否正确,不运行Nginx

    Nginx控制信号

    信号 功能
    TERM, INT 快速关闭
    QUIT 从容关闭
    HUP 重载配置,用新的配置开始新的工作进程,从容关闭旧的工作进程
    USR1 重新打开日志文件
    USR2 平滑升级可执行程序
    WINCH 从容关闭工作进程

    eg.

    ps -ef |grep nginx
    kill -QUIT  nginx主进程号
    

    eg. 使用信号量重新平滑加载配置(请注意,在重载前,要先测试一下配置文件)

    ps -ef |grep nginx
    kill -HUP  nginx主进程号
    当 nginx 接收到 HUP 信号,它会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则使用默认的),成功的话,就应用新的配置文件(例如:重新打开日志文件或监听的套接 字)。之后,nginx 运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字但是继续为当前连接的客户提供服务。所有客户端的服务完成后,旧的工作进程被关闭。 如果新的配置文件应用失败,nginx 将继续使用旧的配置进行工作。
    

    eg. 平滑升级到新的二进制代码(当升级新版本或添加/删除服务器模块时)

    可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的

    1. 首先,使用新的可执行程序替换旧的(最好做好备份),然后,发送 USR2 (kill -USR2 pid)信号给主进程。主进程将重命名它的 .pid 文件为 .oldbin (比如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新的可执行程序,依次启动新的主进程和新的工作进程
    2. 在这时,两个 nginx 实例会同时运行,一起处理输入的请求。要逐步停止旧的实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭
    3. 一段时间后,旧的工作进程处理了所有已连接的请求后退出,就仅由新的工作进程来处理输入的请求了
    4. 这时,因为旧的服务器还尚未关闭它监听的套接字,所以,通过下面的几步,你仍可以恢复旧的服务器:
      • 发送 HUP 信号给旧的主进程 - 它将在不重载配置文件的情况下启动它的工作进程
      • 发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程
      • 发送 TERM 信号给新的主进程,迫使其退出,如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号
      • 新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,这样,一切就都恢复到升级之前了。
    5. 如果尝试升级成功,而你仅希望保留新的服务器时,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行

    Nginx 启动、停止、重启命令

    方式一、使用以上所述的信号量机制
    方式二、使用Nginx 的 -s命令行参数配置

    1. stop     SIGTERM  快速停止
    2. quit     SIGQUIT  从容关闭
    3. reopen   SIGUSR1  重新打开日志文件
    4. reload   SIGHUP   重新加载配置

    相关文章

      网友评论

          本文标题:Nginx系列-初始化

          本文链接:https://www.haomeiwen.com/subject/stbrmttx.html