zoukankan      html  css  js  c++  java
  • CentOS&.NET Core初试-4-安装守护服务(Supervisor)

    系列目录

    1. CentOS的安装和网卡的配置
    2. 安装.NET Core SDK和发布网站
    3. Nginx的安装和配置
    4. 安装守护服务(Supervisor)

    Supervisor是什么?

    Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

    Supervisor能干什么?

    Supervisor帮助我们解决在开发过程中遇到的以下问题:

    • ASP.NET Core应用程序运行在shell之中,如果关闭shell则会发现ASP.NET Core应用被关闭,从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。

    • 如果ASP.NET Core进程意外终止那么需要人为连进shell进行再次启动,往往这种操作都不够及时。

    • 如果服务器宕机或需要重启我们则还是需要连入shell进行启动。

    安装Supervisor

    首先安装Python包管理工具(Supervisor使用Python开发的),然后再安装supervisor。

    yum install python-setuptools
    easy_install supervisor
    

    supervisor安装完成后会生成三个执行程序:

    • **supervisortd **:supervisor的守护进程服务(用于接收进程管理命令)

    • **supervisorctl **:客户端(用于和守护进程通信,发送管理进程的指令)

    • **echo_supervisord_conf **:生成初始配置文件程序。

    配置Supervisor

    添加supervisor文件夹以及conf.d配置文件夹

    mkdir /etc/supervisor
    echo_supervisord_conf > /etc/supervisor/supervisord.conf
    mkdir /etc/supervisor/conf.d
    

    修改supervisord.conf文件,在文件尾部:

    [include]
    files=/etc/supervisor/conf.d/*.conf
    

    启动Supervisor服务

    supervisord -c /etc/supervisor/supervisord.conf
    

    program的配置

    在supervisor的conf.d文件夹下新建一个程序配置文件,hellocore.conf:

    #配置程序名称
    [program:hellocore]
    #运行程序的命令
    command=dotnet hellocore.dll 
    #命令执行的目录
    directory=/home/hellocore/ 
    #错误日志文件
    stderr_logfile=/var/log/hellocore.err.log
    #输出日志文件
    stdout_logfile=/var/log/hellocore.out.log 
    #进程环境变量
    environment=ASPNETCORE_ENVIRONMENT=Production 
    #进程执行的用户身份
    user=root
    #程序是否自启动
    autostart=true
    #程序意外退出是否自动重启
    autorestart=true
    #启动时间间隔(秒)
    startsecs=5
    stopsignal=INT
    

    重载Supervisor的配置文件

    supervisorctl reload #重新加载配置文件
    

    客户端相关命令:

    supervisorctl status #查看程序配置的状态
    supervisorctl stop programname    #停止某一个程序配置
    supervisorctl start programname   #加载某一个程序配置
    supervisorctl restart programname #重新加载某一个程序配置
    supervisorctl reload #重新加载配置
    supervisorctl update
    

    查看配置程序是否启动:

    ps -ef | grep hellocore #programdllname
    

    如下图,则Supervisor配置成功:
    Supervisor配置成功

    设置Supervisor开机启动

    /usr/lib/systemd/system文件夹下新建supervisor.service配置文件,内容如下:

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

    将服务设置为开机启动:

    systemctl enable supervisor.service
    systemctl start supervisor.service
    

    supervisor开机启动服务配置成功
    supervisor开机启动

    配置Supervisor图形化管理

    打开supervisor的配置文件

    vi /etc/supervisor/supervisord.conf
    

    找到配置:

    ;[inet_http_server]         ; inet (TCP) server disabled by default
    ;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
    ;username=user              ; (default is no username (open server))ls
    ;password=123               ; (default is no password (open server))
    

    修改成:

    [inet_http_server] ; inet (TCP) 服务,默认是关闭的
    port=*:9001      ;ip:端口,*代表所有IP
    username=root               ;登陆账号,可以不设
    password=root123              ;登陆账户,可以不设
    

    保存好修改后,重启supervisor。

    supervisorctl reload
    

    防火墙查看9001端口是否开启

    firewall-cmd --list-ports #查看已开放的端口
    

    开启端口:

    firewall-cmd --zone=public  --add-port=9001/tcp --permanent
    firewall-cmd --reload #重启防火墙
    

    命令含义:

    --zone #作用域
    --add-port=9001/tcp  #添加端口,格式为:端口/通讯协议
    --permanent  #永久生效,没有此参数重启后失效
    

    成功访问:
    supervisor图形界面

  • 相关阅读:
    图像的熵
    Tomcat6.0中JNDI的配置oracle11g
    JAVA错误:Syntax error on token "else", delete this token
    JAVA利用飞信接口发送短信
    更换ArcGIS 9.3授权ecp文件
    Java调用C++类库JNI
    jsp将变量传递给javascript函数
    windows xp文件夹共享,取消用户名密码输入
    WPF stringformat设置
    无法识别的属性“targetFramework”。请注意属性名称区分大小写。错误解决办法
  • 原文地址:https://www.cnblogs.com/zerodai/p/9721524.html
Copyright © 2011-2022 走看看