精华内容
下载资源
问答
  • 一、引言 接着上节博客来,上节博客...可不要像上节博客使用kill -9 来杀死进程,万一客户下单操作一半,结果你这直接将nginx进程杀死,这就尴尬了。 本章就介绍如何用信号来控制nginx!!!二、Nginx信号控制使用...

    一、引言

        接着上节博客来,上节博客教了大家如何在Linux系统中安装nginx服务,也告诉了大家如何启动nginx服务了。那如果是在日常正常使用nginx当中,更改了配置文件,那有如何将nginx优雅的重启。可不要像上节博客使用kill -9 来杀死进程,万一客户下单操作一半,结果你这直接将nginx进程杀死,这就尴尬了。 本章就介绍如何用信号来控制nginx!!!

    二、Nginx信号控制使用的几个选项

    TERM、INT快速关闭进程
    QUIT优雅的关闭进程,即等请求结束之后再关闭
    HUP改变配置文件之后、平滑的重读配置文件
    USR1 切割日志
    USR2Nginx平滑的升级
    WINCH优雅的关闭旧进程,配合USR2进行升级

    二、如何优雅的关闭Nginx进程

        2.1、怎样才是正确的关闭nginx进程? 使用 kill -INT 进程号(进程号可以通过"ps aux|grep nginx"来查找

            

        2.2、如果在Nginx在启动状态下,更改了配置文件,在不关闭nginx进程的前提下,让更改的配置文件生效。在这个时候我们就需要使用"kill  -HUP 进程号",这样就不需要关闭nginx服务,即可让配置文件重新生效。

             我们来做个实验,我们知道如果nginx启动后,我们通过浏览器来访问默认看到的是nginx欢迎页面。

            

               nginx主要的配置是在nginx安装目录下中的conf/nginx.conf文件中,在这里我写好了一个test.html的页面,然后更改了配置文件,现在直接访问nginx会跳转到我自己写的test.html。(页面是写在nginx安装目录下的html文件夹中

               

                这个时候我们更改了配置文件,但我们不需要重启也能让配置文件生效。使用"kill -HUP 进程号"即可

                

                

    三、日志切割

        在我们在访问网络服务的时候,如果经过了Nginx代理,全部都有日志保存的。Nginx日志是存储在安装目录下的logs文件下的,access.log 这个是记录日常访问的日志。如果这个时候我们想吧之前的日志做个备份,让日志写到新的文件中去,该怎么处理呢?

        有些童鞋说把access.log改个名字,然后在新建一个access.log的文件。童鞋那你就错啦!!!

        在linux中每个文件都有一个i节点,往文件写入内容也是根据你的i节点来的,就算你把名字改掉,文件的i节点也不会改变,所以日志还是会写入到之前的文件中。

        这个时候就可以使用信号了,我们把需要备份的日志改一个名称,然后使用"kill -USR1 进程号"即可。(整个操作如图2)

        操作完成后,系统会自动生产一个新的access.log文件。

        

        







    展开全文
  • 在实际业务运行过程中,需要对nginx服务进行一系列的配置(prometheus监控节点、nginx进程,nginx日志切割,nginx服务自启动),便于日常的维护,日志查询,故障定位,服务高可用。本文将会介绍具体每个环节的配置...

    nginx是一个轻量级,高性能的HTTP和反向代理web服务器。目前金融科技研发部下的相关应用,基本通过接入区(互联网接入区,企业信息化接入区)部署的nginx服务进行反向代理提供服务。

    在实际业务运行过程中,需要对nginx服务进行一系列的配置(prometheus监控节点、nginx进程,nginx日志切割,nginx服务自启动),便于日常的维护,日志查询,故障定位,服务高可用。本文将会介绍具体每个环节的配置方法与命令。

    prometheus组件下载地址:

    prometheus节点组件.zip-虚拟化文档类资源-CSDN下载

    Supervisor服务组件网盘下载地址:

    链接:https://pan.baidu.com/s/1feAckUPRuBkU77LSQDpalg 
    提取码:c2vx

    nginx组件网盘下载地址:

    链接:https://pan.baidu.com/s/1M6GkVDDq9mcDx8rSLHEfCw 
    提取码:rshh

    目录

    1.安装 安全数据摆渡客户端(下载工具):

    2.安装 nginx及nginx监控探针(未安装nginx服务)

    3.nginx上重编译nginx-module--vts模块(已安装nginx服务)

    4.安装nginx_exporter 

     5.安装Supervisor服务(管理并自启动nginx相关服务)

    6.配置管理nginx以及nginx_exporter(自启动)

    7.日志管理(按日切割以及保留30天)

    8.配置prometheus服务端(slave)

    9.配置prometheus服务端(master)

    10.登陆grafana检查否添加成功

    11.配置alert告警分组

    nginx监控统一安装脚本:


    1.安装 安全数据摆渡客户端(下载工具):

    1)安装wget组件:yum -y install wget

    2)安装客户端:wget https://X.X.X.X/UniExServices/baseCfg/downloadLinuxClient.html --no-check-certificate

    3)解压客户端:unzip downloadLinuxClient.html

    4)进入目录:cd /root/linux-client/5.11/

    5)修改访问权限:chmod 755 *

    ###生产环境下各个公司有各自的安全上传文件的通道,此条在通用的环境中忽略。


    2.安装 nginx及nginx监控探针(未安装nginx服务)

    1)进入安渡客户端目录:cd /root/linux-client/5.11/

    2)登录安渡客户端:./MiniFTClient -h X.X.X.X -u user -p passwd

    3)进入安渡客户端,下载nginx安装包:get nginx-1.16.1.tar.gz

    下载nginx监控探针组件:get nginx-module-vts.tar.gz

    下载nginx监控探针:get nginx-vts-exporter.tar.gz

    #具体下载的包根据需要的版本而定,例如nginx-1.18.1,对应包名nginx-1.18.1.tar.gz

    #额外的组件需要单独下载,比如sticky,命令为get nginx-sticky-module-ng.zip

    4)退出安渡客户端:exit    #退出后的目录为/root/linux-client/5.11/

    #以上步骤为下载nginx相关组件至服务器,仅供参考。

    5)移动nginx安装包至标准路径下:mv nginx-1.16.1.tar.gz /usr/local

    移动nginx监控探针组件至组件目录:mv nginx-module-vts.tar.gz /mnt

    移动nginx监控探针至组件目录:mv nginx-vts-exporter.tar.gz /mnt

    #移动sticky安装包至/mnt目录下:mv nginx-sticky-module-ng.zip /mnt

    6)进入标准路径:cd /usr/local

    7)解压nginx安装包:tar -zxvf nginx-1.16.1.tar.gz

    #一般安装默认下载sticky组件,因此需要对sticky也进行解压。

    #解压步骤:cd /mnt

    #unzip /mnt/nginx-sticky-module-ng.zip

    #tar -zxvf  nginx-module-vts.tar.gz

    8)进入解压后的目录:cd /usr/local/nginx-1.16.1/

    9)安装编译工具以及库文件:yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

    10)编译:./configure --user=root --group=root --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --add-module=/mnt/nginx-sticky-module-ng --add-module=/mnt/nginx-module-vts --with-stream --without-http_rewrite_module --with-pcre

    11)安装:make && make install

    12)检查版本:/usr/local/nginx/sbin/nginx -v

    #返回值为:nginx version: nginx/1.16.1

    ###通用nginx安装操作如下:

    默认在/usr/local目录下执行:

    1. 下载nginx:wget -c https://nginx.org/download/nginx-1.16.1.tar.gz
    2. 解压nginx:tar -zxvf /usr/local/nginx-1.16.1.tar.gz
    3. 进入目录:cd /usr/local/nginx-1.16.1
    4. 下载相关库:yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
    5. 编译:./configure --user=root --group=root --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-stream --without-http_rewrite_module --with-pcre
    6. 安装:make && make install
    7. 检查版本:/usr/local/nginx/sbin/nginx -v

    3.nginx上重编译nginx-module--vts模块(已安装nginx服务)

    1)进入安渡客户端目录:cd /root/linux-client/5.11/

    2)登录安渡客户端:./MiniFTClient -h X.X.X.X -u user -p passwd

    3)下载nginx-module--vts模块安装包:get nginx-module-vts.tar.gz

    #以上步骤为下载nginx-module-vts组件至服务器,仅供参考。

    4)修改nginx-module--vts模块路径:mv nginx-module-vts.tar.gz /usr/local

    5)解压nginx-module--vts模块:tar -zxvf nginx-module-vts.tar.gz

    6)查看nginx已经安装模块:/usr/local/nginx/sbin/nginx -V

    Tengine version: shgine/1.0.0 (nginx/1.15.9)

    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)

    built with OpenSSL 1.0.2s  28 May 2019

    TLS SNI support enabled

    configure arguments: --prefix=/usr/local/nginx --user=admin --group=admin --with-pcre=../pcre-8.43 --with-pcre-jit --with-openssl-opt=enable-tlsex --with-file-aio --with-threads --with-http_realip_module --with-http_addition_mo  ule --with-http_mp4_module --with-http_secure_link_module --with-http_gunzip_module --with-http_auth_request_module --with-http_degradation_module --with-http_slice_module --with-stream --with-stream_ssl_module --with-stream_re  lip_module --with-stream_sni --with-stream_ssl_preread_module --with-http_v2_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --add-module=../ngx_devel_kit --add-module=../lua-nginx  module --add-module=../echo-nginx-module --add-module=../redis2-nginx-module --add-module=../set-misc-nginx-module --add-module=./modules/ngx_http_concat_module --add-module=./modules/ngx_http_reqstat_module --add-module=./modu  es/ngx_http_upstream_check_module --add-module=./modules/ngx_http_upstream_consistent_hash_module --add-module=./modules/ngx_http_upstream_dynamic_module --add-module=./modules/ngx_http_upstream_dyups_module --add-module=./modu  es/ngx_http_upstream_session_sticky_module --add-module=./modules/ngx_cache_purge-2.3 --with-zlib=../zlib-1.2.8 --with-openssl=../openssl-1.0.2s --with-http_sub_module

    上面标黄的部分是已编译安装的参数,下面说明中用(***)表示,每台服务器上编译安装的模块都不一定相同,因此要根据具体的情况进行操作。

    7)进入安渡客户端下载相同版本的nginx:get nginx-1.16.1.tar.gz

    8)编译时加入需要的模块:

    ./configure (***)--add-module=/usr/local/nginx-module-vts --add-module=/mnt/nginx-module-vts

    9)备份原二进制文件:cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

    10)备份nginx.conf配置文件:cp /usr/local/nginx/conf/nginx.conf /root

    11)安装:make && make install


    4.安装nginx_exporter 

    1)进入安渡客户端目录:cd /root/linux-client/5.11/

    2)登陆安渡客户端:./MiniFTClient -h X.X.X.X -u user -p passwd

    3)下载nginx_exporter:get nginx-vts-exporter.tar.gz

    4)退出安渡客户端:exit  #退出后的目录为/root/linux-client/5.11/

    #以上步骤为下载nginx_exporter组件至服务器,仅供参考

    5)修改node_expoter路径:mv nginx-vts-exporter.tar.gz /mnt

    6)进入组件目录:cd /mnt

    7)解压缩:tar -zxvf nginx-vts-exporter.tar.gz  #文件名为nginx-vts-exporter

    8)赋予可执行权限:chmod 755 nginx-vts-exporter

    9)修改nginx.conf文件:vi /usr/local/nginx/conf/nginx.conf

    10)配置如下:

    http {

    vhost_traffic_status_zone;

    vhost_traffic_status_filter_by_host on;

        server {

            listen 80;

            location /status {

                vhost_traffic_status_display;

                vhost_traffic_status_display_format html;

            }

        }

    }

    #监听端口80可以进行修改,与现有业务不冲突即可。建议使用统一的标准

    #也可以部署在任意端口下面,只要不与现有业务冲突即可

    # vhost_traffic_status_filter_by_host on;  开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。

    11)启动监听服务:

    nohup /mnt/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri=http://localhost:8088/status/format/json &

    #不建议先启动服务,等supervisor服务配置好后再进行启动,否则容易报错


     5.安装Supervisor服务(管理并自启动nginx相关服务)

    介绍:Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。

    生产环境由于是封闭的网络,因此使用离线安装的方式。

    安装及配置如下:

    1)进入安渡客户端目录:cd /root/linux-client/5.11/

    2)登陆安渡客户端:./MiniFTClient -h X.X.X.X -u user -p passwd

    3)下载Supervisor服务安装包:get supervisor_install_pack.tar.gz

    4)退出安渡客户端:exit  #退出后的目录为/root/linux-client/5.11/

    #以上步骤为下载supervisor组件至服务器,仅供参考。

    5)创建程序安装目录:mkdir -p /app/supervisor/

    #创建的目录可修改,修改后目录后需要修改安装脚本中的路径。

    6)移动安装包至安装目录下:mv supervisor_install_pack.tar.gz /app/supervisor/

    7)切换至安装目录下:cd /app/supervisor/

    8)解压安装包:tar -zxvf supervisor_install_pack.tar.gz

    9)进入安装程序:cd supervisor/  #此时绝对路径为/app/supervisor/supervisor

    10)执行安装脚本:sh install_supervisor.sh

    11)切换至上层目录:cd /app/supervisor

    12)启动supervisor服务:sh run_supervisor.sh

    13)检查supervisor服务是否已运行:ps -ef | grep supervisord

    14)配置systemctl服务:vi /etc/systemd/system/supervisor.service

    15)将下列内容添加至supervisor.service文件内:

    [Unit]
    
    Description=supervisor
    
    After=network.target
    
    
    
    [Service]
    
    Type=forking
    
    ExecStart=/usr/bin/supervisord -c /app/supervisor/etc/supervisord.conf
    
    ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
    
    ExecReload=/usr/bin/supervisorctl $OPTIONS reload
    
    KillMode=process
    
    Restart=on-failure
    
    RestartSec=42s
    
    
    
    [Install]
    
    WantedBy=multi-user.target

    16)设置开机启动:

    systemctl enable supervisor.service

    systemctl daemon-reload

    17)关闭supervisor进程:pkill -9 supervisor

    18)使用systemctl命令启动:systemctl start supervisor.service

    19)检查服务:systemctl status supervisor.service

    20)关闭NetworkManager: 

    systemctl stop NetworkManager

    systemctl disable NetworkManager

    21)查看mac地址:ip addr

     22)编辑网卡信息:vi /etc/sysconfig/network-scripts/ifcfg-ens192

    #网卡的名称不同的服务器不尽相同,请根据实际情况选择

    23)添加内容:HWADDR=00:50:56:9c:14:09

    # supervisor常用管理命令:

    # supervisorctl restart all ;重启所有应用

    # supervisorctl stop all ;停止所有应用

    # supervisorctl start all ;启动所有应用

    # supervisorctl status ;查看所有应用


    6.配置管理nginx以及nginx_exporter(自启动)

    需要给托管的子进程配置相应的配置文件,每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起。目录及文件后缀可以在supervisor.conf配置文件中进行自定义。

    1)创建日志文件目录:mkdir -p /data/logs/supervisord/

    2)编辑配置文件:vi /app/supervisor/etc/supervisord.conf

    3)添加管理nginx进程:

    [program:nginx]
    
    directory=/usr/local/nginx/sbin
    
    command=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -g 'daemon off;'
    
    #numprocs=6
    
    autostart=true
    
    autorestart=true
    
    startsecs=1
    
    priority=1
    
    user=root
    
    stopasgroup=true
    
    killasgroup=true
    
    stdout_logfile=/data/logs/supervisord/nginx.log
    
    stderr_logfile=/data/logs/supervisord/nginx.err.log

    4)添加管理nginx_exporter进程:

    [program:nginx_exporter]
    
    directory=/mnt/nginx-vts-exporter
    
    command=/mnt/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri=http://localhost:80/status/format/json
    
    autostart=true
    
    autorestart=true
    
    startsecs=5
    
    priority=1
    
    user=root
    
    stopasgroup=true
    
    killasgroup=true
    
    stdout_logfile=/data/logs/supervisord/nginx_exporter.log
    
    stderr_logfile=/data/logs/supervisord/nginx_exporter.err.log

    7.日志管理(按日切割以及保留30天)

    1)编辑日志管理脚本:vi /abc/cut_nginx_log.sh

    2)脚本内容如下:

    #!/bin/bash
    
    
    
    #原nginx日志存放路径
    
    log_files_path="/data/nglog/"
    
    
    
    #备份nginx日志存放路径
    
    log_files_backup="/data/backup/"
    
    
    
    #nginx切割后存放路径
    
    log_files_dir=${log_files_backup}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")
    
    
    
    #罗列出需要切割的日志名
    
    log_file_list=$(ls -l /data/nglog/ | awk '{print$9}' |awk -F'.' '{print $1}')
    
    #待切割日志名称集合如access.log error.log
    
    log_files_name=(${log_file_list})
    
    
    
    #nginx启动脚本路径
    
    nginx_sbin="/usr/local/nginx/sbin/nginx"
    
    
    
    #日志保存时间
    
    save_days=30
    
    
    
    #创建存放目录
    
    mkdir -p $log_files_dir
    
    log_files_num=${#log_files_name[@]}
    
    
    
    #循环切割日志
    
    for((i=0;i<$log_files_num;i++));do
    
    mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_$(date -d "yesterday" +"%Y%m%d").log
    
    done
    
    
    
    #删除超过30天的日志文件
    
    find $log_files_backup -mtime +$save_days -exec rm -rf {} \;
    
    
    
    #重启nginx服务,重新生成新的文件
    
    $nginx_sbin -s reload

    3)编辑crontab定时服务:crontab –e

    4)配置每天凌晨进行日志处理:0 0 * * * sh /abc/cut_nginx_log.sh


    8.配置prometheus服务端(slave)

    1)登陆prometheus服务端(slave):x.x.x.x(企业信息化)

    2)检查服务端与被监控端的网络(端口9913):比如telnet x.x.x.x 9913

    3)配置监控组节点信息:vi /usr/local/prometheus/sd_config/nginx.yml

    4)在(-targets:)下添加监控节点信息:

    可以让光标停留在targets的最后一行,安yyp即可直接复制到下一行再进行修改

    5)添加监控组节点信息文件至prometheus服务文件(如果已经添加,无需操作):

    vi /usr/local/prometheus/prometheus.yml

    在最后一行添加如下信息:

      - job_name: 'nginx_tybg'

        file_sd_configs:

        - files: ['/usr/local/prometheus/sd_config/nginx.yml']

          refresh_interval: 5m

    6)配置完成后重启prometheus服务:

    kill -hup `ps -ef |grep prometheus|grep -v grep|awk '{print $2}'`

    7)检查prometheus服务是否重启成功:ps -ef |grep prometheus


    9.配置prometheus服务端(master)

    1)登陆prometheus服务端(master):x.x.x.x

    2)配置prometheus服务文件:

    找到slave节点对应的区域,并在列表中添加监控组(如果监控组已经添加,无需操作

    vi /usr/local/prometheus/prometheus.yml

    3)完成后重启prometheus服务:

    kill -hup `ps -ef |grep prometheus|grep -v grep|awk '{print $2}'`

    4)检查prometheus服务是否重启成功:ps -ef |grep prometheus

     


    10.登陆grafana检查否添加成功

    1)登入服务器x.x.x.x,访问Grafana服务:http://x.x.x.x:3000

    2)选择所有节点(all node),按照监控组(job)搜索,看是否添加成功:


    11.配置alert告警分组

    1)登入alertmanager服务器x.x.x.x,进入目录/usr/local/alertmanager

    2)编辑告警的分区信息:vi /usr/local/alertmanager/robotKey.json

    3)文件的内容如下:

    文件中的格式为:“告警机器人名”:“企业机器人组key”

    告警机器人名取自各个slave服务器下的文件,以slave节点x.x.x.x为例子:

    比如cw分组:/usr/local/prometheus/sd_config/node_cw/node_cw.yml

    alert:cw     #这个地方配置报警机器人的名字

    配置好之后重启服务:kill -hup `ps -ef |grep prometheus|grep -v grep|awk '{print $2}'`

    之后再回到alertmanager服务器x.x.x.x,添加配置到文件/usr/local/alertmanager/robotKey.json

    {

        "oa": "cbe2866f-0d35-4064-b761-92321b665cf4",

        "sftp": "15bc15f7-be2e-4262-8a31-04cf1d83c557",

        "ziyan": "3c2f92ad-57c3-45fc-9c36-31ac5e6a0902",

        "zyspecial": "f085fee9-b61e-496d-950c-77008590f960",

        "cw": "8af4df90-7b1c-4cd9-838b-196e77790ddc",

        "mail": "91bbf9bf-ce6f-4c32-a998-c4242a76061d",

        "qywx": "d8ab1d94-cd23-4994-bcd6-c1154cb1c5bc",

        "oayq": "dca8487d-ce03-45e3-8fc5-9ab71cc1020f",

        "zz": "57fc5b51-b64e-4b8b-bbea-cd45fd9ca945",

        "yyzx": "83c108d6-696c-44f3-a9f6-d23acf837b39"

    }

    1. 配置好文件后,查询并关闭alert相关的进程:ps -ef | grep alert

    Kill -9 进程号 #关闭下图中框起来的进程,进程号会有所不同根据实际的情况进行关闭。

    1. 关闭进程后,重新读取robotkey的信息至alertmanager:

    nohup python3 /usr/local/alertmanager/send_robot_data.py > /usr/local/alertmanager/logs/send_robot_data.out 2>&1 &

    1. 信息读取完毕后,重新开启报警监控程序alertmanager:

    nohup /usr/local/alertmanager/alertmanager --log.level=debug > /usr/local/alertmanager/logs/alertmanager.out 2>&1 &

    1. 配置完成后,检验告警机器人是否生效,关闭job组中一台服务器上的node_exporter进程,并等待企业微信告警机器人对告警信息进行反馈,一般在10~30分钟会有报警提示:

    关闭nginx_exporter命令为:systemctl stop node_exporter

    确认nginx_exporter状态:systemctl status node_exporter

    告警机器人截图:

    确认好后,恢复相关的节点监控进程:systemctl start node_exporter

    nginx监控统一安装脚本:

    #安装安渡客户端
    yum -y install wget
    wget https://X.X.X.X/UniExServices/baseCfg/downloadLinuxClient.html --no-check-certificate
    unzip downloadLinuxClient.html
    cd linux-client/5.11/
    chmod 755 *
    
    #安装nginx及nginx监控探针
    #进入安渡客户端目录
    
    cd /root/linux-client/5.11/
    ./MiniFTClient -h X.X.X.X -u user -p passwd << EOF
    get nginx-1.16.1.tar.gz
    get nginx-module-vts.tar.gz
    get nginx-vts-exporter.tar.gz
    get nginx-sticky-module-ng.zip
    exit
    EOF
    mv nginx-1.16.1.tar.gz /usr/local
    mv nginx-module-vts.tar.gz /mnt
    mv nginx-vts-exporter.tar.gz /mnt
    mv nginx-sticky-module-ng.zip /mnt
    cd /usr/local
    
    #解压
    
    tar -zxvf nginx-1.16.1.tar.gz
    cd /mnt
    
    #解压
    
    unzip /mnt/nginx-sticky-module-ng.zip
    tar -zxvf  nginx-module-vts.tar.gz
    cd /usr/local/nginx-1.16.1/
    
    #安装依赖库
    
    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel
    
    #编译
    
    ./configure --user=root --group=root --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --add-module=/mnt/nginx-sticky-module-ng --add-module=/mnt/nginx-module-vts --with-stream --without-http_rewrite_module --with-pcre
    
    #安装
    
    make && make install
    
    #检查版本
    
    /usr/local/nginx/sbin/nginx -v
    
    #安装nginx_exporter
    
    cd /root/linux-client/5.11/
    mv nginx-vts-exporter.tar.gz /mnt
    cd /mnt
    tar -zxvf nginx-vts-exporter.tar.gz
    chmod 755 nginx-vts-exporter
    
    #切换目录
    
    cd /root/linux-client/5.11/
    ./MiniFTClient -h X.X.X.X -u user -p passwd << EOF
    get supervisor_install_pack.tar.gz
    exit
    EOF
    
    #安装
    
    mkdir -p /app/supervisor/
    mv supervisor_install_pack.tar.gz /app/supervisor/
    cd /app/supervisor/
    tar -zxvf supervisor_install_pack.tar.gz
    cd supervisor/
    sh install_supervisor.sh
    cd /app/supervisor
    sh run_supervisor.sh
    #配置systemctl服务
    cat >> /etc/systemd/system/supervisor.service << EOF
    [Unit]
    Description=supervisor
    After=network.target
    [Service]
    Type=forking
    ExecStart=/usr/bin/supervisord -c /app/supervisor/etc/supervisord.conf
    ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
    ExecReload=/usr/bin/supervisorctl $OPTIONS reload
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    [Install]
    WantedBy=multi-user.target
    EOF
    #配置结束
    
    #supervisor服务自启动
    
    systemctl enable supervisor.service
    systemctl daemon-reload
    
    #强制关闭supervisor服务
    
    pkill -9 supervisor
    
    #启动并查看supervisor服务
    
    #systemctl start supervisor.service
    #systemctl status supervisor.service
    
    #停止NetworkManager服务:
    systemctl stop NetworkManager
    systemctl disable NetworkManager
    
    #编辑配置脚本
    
    cat >> /app/supervisor/etc/supervisord.conf << EOF
    [program:nginx]
    directory=/usr/local/nginx/sbin
    command=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -g 'daemon off;'
    #numprocs=6
    autostart=true
    autorestart=true
    startsecs=1
    priority=1
    user=root
    stopasgroup=true
    killasgroup=true
    stdout_logfile=/data/logs/supervisord/nginx.log
    stderr_logfile=/data/logs/supervisord/nginx.err.log
    
    [program:nginx_exporter]
    directory=/mnt/nginx-vts-exporter
    command=/mnt/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri=http://localhost:80/status/format/json
    autostart=true
    autorestart=true
    startsecs=5
    priority=1
    user=root
    stopasgroup=true
    killasgroup=true
    stdout_logfile=/data/logs/supervisord/nginx_exporter.log
    stderr_logfile=/data/logs/supervisord/nginx_exporter.err.log
    EOF
    #完成配置nginx以及nginx_exporter
    
    #创建日志目录,否则重启服务时会报错
    
    mkdir -p /data/logs/supervisord
    
    #重启服务
    
    systemctl restart supervisor.service
    

    展开全文
  • windows nginx进程

    2020-02-26 20:00:02
    #nginx进程8888 netstat -nao |findstr 8888 taskkill -pid 4564 -F nginx根目录下运行 start nginx 在根目录下的操作: nginx -t 检查配置文件的有效性 nginx -s stop立即关闭 nginx -s quit 处理完当前的请求后...
    taskmgr.exe
    #nginx进程8888
    netstat -nao |findstr 8888
    taskkill -pid  4564 -F
    nginx根目录下运行 start nginx
    
    在根目录下的操作:
    start nginx
    nginx -t 检查配置文件的有效性
    nginx -s stop立即关闭
    nginx -s quit 处理完当前的请求后关闭
    nginx -s reload 修改完配置文件后重新加载
    nginx -s reopen 打开日志文件
    

     

    展开全文
  • 【学习笔记】启动Nginx 查看nginx进程 查看nginx服务主进程的方式 Nginx服务可接受的信号 nginx帮

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   
    

    1.启动nginx的方式:

       

    cd /usr/local/nginx

     

    ls

     

     

    ./nginx -c nginx.conf

     

    2.查看nginx的进程方式:

       

    [root@localhost nginx]# ps –ef | grep nginx

     

    [root@localhost nginx]# ps -ef | grep nginx

     

    root      21094     1  0 07:52 ?        00:00:00 nginx: master process  ./nginx -c nginx.conf

     

    nginx     21095 21094  0 07:52 ?        00:00:00 nginx: worker process

     

    root      21270  3019  1 08:05 pts/1    00:00:00 grep nginx

     

    3.查看Nginx服务主进程的方式:

       

    [root@localhost nginx]# cat nginx.pid

     

    21094

     

    这个进程号和上面的进程号是一样的

     

    4.Nginx服务可接受的信号

       

    信号

         

    作用

         

    TERMINT

         

    快速停止Nginx服务

         

    QUIT

         

    平缓停止Nginx服务

         

    HUP

         

    使用新的配置文件启动进程,之后平缓停止原有进程,也就是所谓的平滑重启

         

    USR1

         

    重新打开日志文件,常用于日志切割,在相关章节中会对此进一步说明

         

    USR2

         

    使用新版本的Nginx文件启动服务,之后平缓停止原有Nginx进程,也就是所谓的平滑升级

         

    WINCH

         

    平缓停止worker process,用于Nginx服务器平滑升级

     

    nginx服务主进程发送信号也有两种方法。一种是使用nginx二进制文件

     

    另一种方法是使用kill命令发送信号,其使用方法是:

    Kill -9 PID

     

    也可以通过发信号的方式:

    使用TERM信号

       

    [root@localhost nginx]#  kill TERM 21094     (其中21094master进程的pid,其中TERM可以换成INT QUIT)

     

    -bash: kill: TERM: arguments must be  process or job IDs

     

    [root@localhost nginx]# ps -ef | grep  nginx

     

    root      21417  3019  0 08:16 pts/1    00:00:00 grep nginx

     

     

    重启命令

       

    [root@localhost nginx]# ./nginx -c  nginx.conf

     

    [root@localhost nginx]# ps -ef | grep  nginx

     

    root      21440     1  0 08:18 ?        00:00:00 nginx: master process  ./nginx -c nginx.conf

     

    nginx     21441 21440  0 08:18 ?        00:00:00 nginx: worker process

     

    root      21445  3019  2 08:18 pts/1    00:00:00 grep nginx

     

     

     

     

    5、使用nginx的帮助的方式

    nginx -h

       

    [root@localhost nginx]#  ./nginx -h

     

    nginx version: nginx/1.10.1

     

    Usage: nginx [-?hvVtTq] [-s signal] [-c  filename] [-p prefix] [-g directives]

     

     

     

    Options:

     

       -?,-h         : this help

     

       -v            : show version and  exit

     

       -V            : show version and  configure options then exit

     

       -t            : test  configuration and exit

     

       -T            : test  configuration, dump it and exit

     

       -q            : suppress  non-error messages during configuration testing

     

       -s signal     : send signal to a  master process: stop, quit, reopen, reload

     

       -p prefix     : set prefix path  (default: /usr/local/nginx/)

     

       -c filename   : set  configuration file (default: /usr/local/nginx/nginx.conf)

     

       -g directives : set global directives out of configuration file

     

     

     

    [root@localhost nginx]#

     

     

     

    通过-v 用来显示Nginx服务器的版本号;

     

    通过-V显示版本号,同事显示相关的配置信息

     

    通过-t检查Nginx服务器配置文件是否有语法错误,可以与-c联用,使输出内容更详细,这对查找配置文件中的语法错误很有帮助,如果检查通过,将显示类似下面的信息

     

    [root@localhost nginx]#  pwd

     

    /usr/local/nginx

     

    [root@localhost nginx]#  ls

     

    client_body_temp      fastcgi_params.default  koi-win             nginx               proxy_temp           uwsgi_params

     

    fastcgi.conf          fastcgi_temp            logs                nginx.conf          scgi_params          uwsgi_params.default

     

    fastcgi.conf.default  html                    mime.types          nginx.conf.default  scgi_params.default  uwsgi_temp

     

    fastcgi_params        koi-utf                 mime.types.default  nginx.pid           scgi_temp            win-utf

     

    [root@localhost nginx]#  ./nginx -t -c nginx.conf

     

    nginx: the configuration file  /usr/local/nginx/nginx.conf syntax is ok

     

    nginx: configuration file /usr/local/nginx/nginx.conf  test is successful

     

    [root@localhost nginx]#

     

     

     

    可以执行

     

    [root@localhost nginx]#  ./nginx -V

     

    nginx version: nginx/1.10.1

     

    built by gcc 4.4.7 20120313 (Red Hat  4.4.7-3) (GCC)

     

    built with OpenSSL 1.0.1c 10 May 2012

     

    TLS SNI support enabled

     

    configure arguments:  --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf  --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module  --with-pcre=/home/toto/software/nginxdepents/pcre-8.37  --with-zlib=/home/toto/software/nginxdepents/zlib-1.2.8  --with-openssl=/home/toto/software/nginxdepents/openssl-1.0.1c  --with-http_stub_status_module --user=nginx --group=nginx

     

    [root@localhost nginx]#

     

    杀死主进程的方式同样可以是:

    ./nginx SIGNAL nginx.pid

    主要最后面一个参数是nginx.pid的路径

     

    6Nginx服务的重启

    关于Nginx平滑重启,平滑重启是这样一个过程,Nginx服务进程接收到信号后,首先读取新的Nginx配置文件,如果配置语法正确,则启动新的Nginx服务,然后平缓关闭旧的服务进程;如果新的Nginx配置有问题,将显示错误,仍然使用旧的Nginx提供服务。

     

    使用以下命令实现Nginx服务的平滑重启

    ./nginx –g HUP [-c newConfFile]

    HUP信号用于发送平滑重启信号。

    newConfFile,可选项,用于指定新配置文件的路径

    或者,使用新的配置文件代替了旧的配置文件后,使用:

    Kill HUP `nginx.pid`    (注意最后一个参数连边的引号;引号里面是nginx.pid的路径)

    也可以实现平滑重启。

     

    7Nginx服务器的升级

    如果要对当前的Nginx服务器进行版本升级,应用新模块,最简单的办法是停止当前Nginx服务,然后开启新的Nginx服务,但这样就会导致在一段时间内,用户无法访问服务器。为了解决这个问题,Nginx服务器提供平滑升级的功能。

    平滑升级的过程是这样的,Nginx服务接收到USR2信号后首先将旧的nginx.pid文件(如果在配置文件中更改过这个文件的名字,也是相同的过程)添加.oldbin,变为nginx.pid.oldbin文件;然后执行新版本Nginx服务器的二进制文件启动服务。如果新的服务启动成功,系统中将由新旧两个Nginx服务公用提供Web服务。如果新的服务启动成功,系统中将有新旧两个Nginx服务共同提供Web服务。之后,需要向旧的Nginx服务进程发送WINCH信号,使旧的Nginx服务平滑停止,并删除nginx.pid.oldbin文件。在发送WINCH信号之前,可以随时停止新的Nginx服务。

    注意:

    为了实现Nginx服务器的平滑升级,新的服务器安装路径应该和旧的保持一致。因此建议用户在安装新服务器之前先备份旧服务器。如果由于某种原因无法保持新旧服务器安装路径一致,则可以先使用以下命令将旧服务器的安装路径更改为新服务器的安装路径:

    ./nginx –p newInstallPath

    其中,newInstallPath为新服务器的安装路径。之后,备份旧服务器,安装新服务器即可。

    做好准备工作以后,使用以下命令实现Nginx服务的平滑升级。

    ./nginx –g USR2

    其中USR2信号用于发送平滑升级信号。或者,使用:

    Kill USR2 `nginx.pid`   注意,最后一个参数里面是nginx.pid的路径

    通过ps –ef | grep nginx查看新的Nginx服务器启动正常,再使用:

    ./nginx –g WINCH

    其中,WINCH信号用于发送平滑停止旧服务信号。或者,使用:

    Kill WIN `nginx.pid`

    这样就不停止提供Web服务的前提下完成了Nginx服务器的平滑升级。

     

     

     

     

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • Nginx进程管理

    千次阅读 2013-07-23 20:16:31
    Nginx进程管理 1. Nginx进程管理之master进程 监控进程充当整个进程组与用户的交互接口,同时对进程进行监护。它不需要处理网络事件,不负责业务的执行,只会通过管理worker进程来实现重启服务、平滑升级、更换...
  • nginx切割日志

    2015-10-12 16:15:16
    平台:Windows系统,nginx版本0.8.34,nginx以服务方式启动 以access日志为例 ...rem 杀掉nginx进程,因为一个服务可能启动多个nginx进程 taskkill /F /IM nginx.exe rem 产生移动日志文件命令 set "cmdstr
  • nginx日志

    千次阅读 2017-02-14 01:20:42
    nginx日志 nginx日志包括错误日志和访问日志,分别使用不同的指令来定义其输出位置和相应的级别。 下面介绍其各自的用途。
  • Nginx进程模型   Nginx是多进程的,启动时会先启动一个 Master 进程,然后由 Master 进程启动 Worker 工作进程,Master主要作配置读取,维护 Worker 进程启动-销毁等,Worker进程对请求进行处理,Worker进程之间...
  • 脚本重启nginx进程

    万次阅读 2018-06-19 19:07:17
    工作中经常要杀掉nginx对应的进程,然后手动命令重启和删除nginx日志,每次都要输入3个或3个以上的命令,效率低。写个脚本万事大吉。 #!/bin/sh NAME="nginx -p /home/proj/gamebin/ -c conf/depnginx.conf" ID=...
  • NginX进程管理-热更新

    千次阅读 2015-01-27 13:54:07
    NginX采用Master/Worker的多进程模型,Master进程负责整个NginX进程的管理。主要包括:热更新、停机、日志重启等。本文主要介绍一下热更新的机制,以备查阅。 1. 配置热更新 NginX的配置修改之后,在不影响当前服务...
  • 【重新生成心的日志文件】kill -USR1 Nginx进程号 举例说明 原本的日志样子 [root@wxl-1 logs]# ll 总用量 12 -rw-r--r--. 1 nobody root 207 10月 5 14:49 access.log -rw-r--r--. 1 nobody root .
  • Nginx运行日志自动切割

    万次阅读 2017-05-01 16:57:58
    所谓自动分割Nginx日志文件,就是指Rotate Nginx log files,即让Nginx每天(或每个星期,可自定义控制)生成一个日志文件,而不是将Nginx所有的运行日志都放置在一个文件中,这样每个日志文件都相对较小,定位...
  • nginx进程和实时控制

    千次阅读 2014-11-17 11:42:55
    本文讨论Nginx运行时的进程以及如何控制这些进程
  •  1.启动nginx的方式: ...cd /usr/local/nginx ..../nginx -c nginx.conf ...2.查看nginx进程方式: [root@localhost nginx]# ps –ef | grep nginx [root@localhost nginx
  • Nginx 是一个多进程的程序,多进程之间进行通讯可以使用共享内存、信号等。当做进程间管理的时候,通常只使用信号。 今天就来看一下 Nginx 进程管理中的信号是怎样使用的。 Nginx 进程管理:信号 从上图可以看出,...
  • 1.启动nginx的方式: cd /usr/local/nginx ls ./nginx -c nginx.conf 2.查看nginx进程方式: [root@localhost nginx]# ps –ef | grep nginx [root@localhost nginx]# ps -ef | grep nginx root 21094 
  • 在我们开发一个程序,日志功能往往也是不可缺少的,今天我们就来讲讲这个Nginx日志是怎么样来玩的。 二、了解日志管理 我们查看nginx安装目录下有个logs,包含了三个文件 "access.log 、error.log、nginx....
  • nginx自动停止,xshell断开nginx进程被杀死(踩坑记录),莫名其妙的问题被我遇到了,前段时间给政府做一个项目,做完了,项目需要部署到政务云的内网服务器里面,他们提供一个对外访问的公网服务器,当我项目部署好...
  • nginx Access日志格式

    千次阅读 2019-10-17 11:50:47
    默认,access日志路径是./logs/access.log, 默认的日志格式为combined格式; 使用log_format指令可以自定义日志格式; 语法 log_format name [escape=default|json|none] string ...; escape参数(1.11.8)设置变量的...
  • Nginx学习——Nginx进程间的通信

    千次阅读 2014-07-28 21:35:27
    nginx进程间的通信 进程间消息传递 共享内存 共享内存还是Linux下提供的最基本的进程间通信方式,它通过mmap和shmget系统调用在内存中创建了一块连续的线性地址空间,而通过munmap或者shmdt系统调用可以释放这块...
  • Nginx 日志配置、日志切割

    千次阅读 2019-09-26 09:20:21
    Nginx 日志配置设置 access.log语法log_format自定义格式设置error_log语法日志切割 前置文章:Nginx 的配置文件 nginx.conf Nginx日志对于统计、系统服务排错很有用。 Nginx日志主要分为两种:access_log(访问...
  • NGINX日志切割

    2016-05-23 08:43:57
    nginx日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。 第一步就是重命名日志文件,不用担心...第二步向nginx进程发送USR1信号。
  • nginx日志切割shell脚本

    2021-01-10 19:06:30
    nginx进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。 重新打开日志文件后,nginx进程会关闭重名的日志文件并通知...
  • 1.1.1.1 问题描述 keepalived是通过检测keepalived进程是否存在判断服务器是否宕机,如果keepalived进程在但是nginx进程不在了那么keepalived是不会做主备切换,所以我们需要写个脚本来监控nginx进程是否存在,如果...
  • nginx日志以及变量

    万次阅读 2018-07-01 11:21:42
    一,nginx日志类型1,包括error.log: 记录nginx处理Http请求的错误的状态,以及nginx本身服务的运行错误状态,按照不同的级别进行记录。。access_log:记录每一次Http请求的访问状态,用于分析每一次请求和交互,...
  • Nginx日志备份操作

    2017-03-21 13:30:42
    正常情况下,我们给一个日志文件做备份。...但是不是这样的,在 linux 上其实每个文件对应的是一个节点【 inode 节点 】,在开启进程后,系统会一直向文件对应的节点一直写入数据。即使我们修改了文件名、
  • 一、yum安装nginx ...1、访问日志路径:access_log /var/log/nginx/access.log main; 2、pid路径:pid /run/nginx.pid 三、脚本 1、创建脚本 [root@localhost ~]# pwd /root [root@localhost ~]# vim run...
  • 常规的有2种方法,crontab 和 logrotate ,tengine的可以忽略,他...#nginx日志分割脚本: #crontab,需要root下设置: 0 0 * * * /data/svr/nginx/sbin/nginx_cutlog.sh #设置日志文件存放目录 LOG_HOME="/data/svr/n
  • nginx日志切割

    2014-08-28 19:20:17
    如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。 第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,086
精华内容 30,434
关键字:

nginx进程日志