install from source

因为编译包版本比较落后

how to

1. download *.tar.gz (apthome nginx)
2. maybe need install something like
    zlib error
        sudo apt install -y zlibc zlib1g zlib1g-dev

    PCRE library error
        sudo apt install -y libpcre3 libpcre3-dev

    ssl error
        sudo apt install -y libssl-dev 

3. cd tar directory,execute
    1.autoreconf -vif;

2.custom

./configure \
--prefix=/usr \
--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 \
--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/ \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \


    3. make;sudo make install

start & stop

    4.1 sudo nginx -c /etc/nginx/nginx.conf
        must use sudo

        How to fix getpwnam(“nginx”) failed,this is because ./configure --user=nginx --group=nginx just add them
            sudo groupadd -f nginx
            sudo useradd -g nginx nginx

            or remove them
                sudo groupdel nginx;sudo userdel nginx


    4.2 pid is current ps -ef root pid
        is in /var/run/nginx/nginx.pid
        when stop there is nothing,when start will create nginx.pid file

    4.2 stop
        1.从容停止
            sudo kill -QUIT `cat /var/run/nginx/nginx.pid`

        2.快速停止
            sudo kill -TERM pid
            sudo kill -INT pid

        3.强制停止
            pkill -9 nginx

    4.3 restart
        1. check nginx.conf no error,must use absolute path(可以省略,不是必须,下面重启的时候默认会检查,这个操作可以用来排查配置文件的错误)

            sudo nginx -t -c /etc/nginx/nginx.conf


        2. kill -HUP $nginxpid
            当nginx接到HUP信号时,他会尝试先解析配置文件,如果指定,则使用指定的),如果成功,就应用新的配置文件,之后nginx运行新的工作进程并从容关闭旧的工作进程,

            如果新的配置文件应用失败,nginx将继续使用旧的配置文件工作

    4.4 信号分类
        TERM,INT 快速关闭
        QUIT 从容关闭
        HUP 平滑重启,重新加载配置文件
        USR1 重新打开日志文件,在切割日志时用途很大
        USR2 平滑升级可执行程序;
        WINCH 从容关闭工作进程(worker)

平滑升级

1. download && install
    最好备份下之前的可执行文件 
        mv /usr/sbin/nginx /usr/sbin/nginx.back

2. kill -USR2 旧版本nginx主进程号
    USR2 平滑升级可执行程序;

3. 旧版本的nginx.pid重命名为 nginx.pid.oldbin

4. kill -WINCH 旧版本nginx主进程号
    WINCH 从容关闭工作进程(worker)

5. 一段时间后,旧的worker progress处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了,旧的只剩下一个master progress了

6. 这个时候决定到底用旧的还是新的
    如果还是要使用旧的
        kill -HUP 旧的master progress id,则nginx将会重新启动它的worker progress
        kill -TERM 新的主进程号
        这两个命令之后,nginx.pid.oldbin 恢复成 nginx.pid
        一切旧还是旧的进程

    如果使用新的
        kill -QUIT 旧的主进程号 ,这样就关闭了旧的进程,只留下了新的主进程,达到了升级的目的




ps -ef | gerp nginx
root     21481  6157  0 09:38 ?        00:00:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 21482 21481  0 09:38 ?        00:00:00 nginx: worker process
www-data 21483 21481  0 09:38 ?        00:00:00 nginx: worker process
www-data 21484 21481  0 09:38 ?        00:00:00 nginx: worker process
www-data 21485 21481  0 09:38 ?        00:00:00 nginx: worker process

results matching ""

    No results matching ""