• .net core linux部署方案宝典大全


    第一章  linux运行.net core示例

    第二章 .net core linux获取验证码问题

    第三章 Jexus配置.net core启动

    第四章 linux安装My sql

    第五章 linux安装redis

    第六章 linux安装consul

    第七章 linux for docker 搭建自动化部署方案----后续补充

    开牛年,牛年大吉,在家实在待着无聊,喝着小酒写博客,在这里祝大家新年快乐,步步高升

    给大家讲一下.net core从入门到放弃这么一说!

    第一章 -linux运行.net core示例
    使用Nohup后台进程
    Nohup dotnet LokiCore.dll.dll --urls="http://*:8081;http://*:8082" --environment=Delopment > /dev/null 2>&1 &
    #查看相关进行
    ps -aux | grep "LokiCore.dll"
    #结束进程
    kill id

    为.NET Core项目创建Supervisor进程守护监控
    1、Supervisor介绍
    此处的创建守护进程,是指发布在Linux上 asp.net core 程序的dotnet LokiCore.dll命令的宿主进程创建一个守护进程。在 Linux 上有很多可以管理进程的工具,我们使用 Supervisor 来做这个事情。
    原因有两点:
    ①、它是微软官方文档推荐的,降低学习成本。
    ②、它并不一定是最好的,但一定是文档最全的

    2.在Linux上安装Supervisor
    #执行epel-release
    sudo yum -y install epel-release
    #安装Supervisor
    sudo yum -y install supervisor

    #通过配置文件来启动supervisor
    sudo supervisord -c /etc/supervisord.conf

    #启动supervisorctl
    sudo supervisorctl -c /etc/supervisord.conf

    #注意此处supervisorctl与supervisord区别,不要混淆,会经常用到
    创建.NET Core项目的Supervisor配置文件
    #进入supervisord.d目录
    cd /etc/supervisord.d
    #切记查看supervisord.d别搞错
    #创建ini配置文件
    touch com.newgh.account.ini

    vim com.newgh.account.ini

    配置文件如下
    #--------------------------------配置开始---------——————————————————————————————————

    #配置程序名称
    [program:com.newgh.account ]
    #运行程序命令
    command=dotnet Com.NewGH.Account.WebAPI.dll --urls="http://*:5001"
    #运行环境路径
    directory=/home/wwwroot/com.newgh.account
    #运行环境变量
    environment=ASPNETCORE__ENVIRONMENT=Production
    #执行用户
    user=root
    #进程停止信号,可以为TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信号默认为TERM 。当用设定的信号去干掉进程,退出码会被认为是expected,非必须设置
    stopsignal=INT
    #如果是true的话,子进程将在supervisord启动后被自动启动,默认就是true,非必须设置
    autostart=true
    #这个是设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的退出码的时候,才会被自动重启。当为true的时候,只要子进程挂掉,将会被无条件的重启
    autorestart=true
    #这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了,默认值为1 。非必须设置
    startsecs=1
    #错误文件
    stderr_logfile=/var/log/ossoffical.err.log
    #输出文件
    stdout_logfile=/var/log/ossoffical.out.log

    #--------------------------------配置结束---------——————————————————————————————————

    #--------------------------------配置注释理解---------——————————————————————————————————
    - command:启动程序使用的命令,可以是绝对路径或者相对路径
    - process_name:一个python字符串表达式,用来表示supervisor进程启动的这个的名称,默认值是%(program_name)s
    - numprocs:Supervisor启动这个程序的多个实例,如果numprocs>1,则process_name的表达式必须包含%(process_num)s,默认是1
    - numprocs_start:一个int偏移值,当启动实例的时候用来计算numprocs的值
    - priority:权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999
    - autostart:如果设置为true,当supervisord启动的时候,进程会自动重启。
    - autorestart:值可以是false、true、unexpected。false:进程不会自动重启,unexpected:当程序退出时的退出码不是exitcodes中定义的时,进程会重启,true:进程会无条件重启当退出的时候。
    - startsecs:程序启动后等待多长时间后才认为程序启动成功
    - startretries:supervisord尝试启动一个程序时尝试的次数。默认是3
    - exitcodes:一个预期的退出返回码,默认是0,2。
    - stopsignal:当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。
    - stopwaitsecs:在操作系统给supervisord发送SIGCHILD信号时等待的时间
    - stopasgroup:如果设置为true,则会使supervisor发送停止信号到整个进程组
    - killasgroup:如果设置为true,则在给程序发送SIGKILL信号的时候,会发送到整个进程组,它的子进程也会受到影响。
    - user:如果supervisord以root运行,则会使用这个设置用户启动子程序
    - redirect_stderr:如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符。
    - stdout_logfile:把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置。
    - stdout_logfile_maxbytes:标准输出log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小
    - stdout_logfile_backups:标准输出日志轮转备份的数量,默认是10,如果设置为0,则不备份
    - stdout_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB
    - stdout_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发
    - stderr_logfile:把进程的错误日志输出一个文件中,除非redirect_stderr参数被设置为true
    - stderr_logfile_maxbytes:错误log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小
    - stderr_logfile_backups:错误日志轮转备份的数量,默认是10,如果设置为0,则不备份
    - stderr_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB
    - stderr_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发
    - environment:一个k/v对的list列表
    - directory:supervisord在生成子进程的时候会切换到该目录
    - umask:设置进程的umask
    - serverurl:是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个url
    #--------------------------------配置注释理解---------——————————————————————————————————


    配置Supervisor开机自启动
    #进入system目录
    cd /usr/lib/systemd/system

    #编辑supervisord.service文件
    sudo vim supervisord.service

    supervisord.service文件内容如下

    [Unit]
    Description=Process Monitoring and Control Daemon
    After=rc-local.service nss-user-lookup.target

    [Service]
    Type=forking
    ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
    ExecStop=/usr/bin/supervisorctl shutdown
    ExecReload=/usr/bin/supervisorctl reload
    KillMode=process
    Restart=on-failure
    RestartSec=42

    [Install]
    WantedBy=multi-user.target
    ##################################################
    一定要按照上述的配置写入到配置文件中

    编辑好后保存退出,然后执行命令,查看是否启动成功
    #启动服务
    systemctl enable supervisord
    Supervisor常用命令
    # 启动所有
    supervisorctl start all

    # 重启所有
    supervisorctl restart all

    # 停止所有
    supervisorctl stop all

    #PS:要操作某个服务,把all换成服务名即可

    #查看服务状态
    supervisorctl status

    ----------------------------------------此致进程守护完毕-----------------------------------------

  • 相关阅读:
    ZygoteInit 相关分析
    Zygote(app_process)相关分析2
    Zygote(app_process)相关分析1
    android Init 相关分析
    简明Python教程(A Byte of Python中文版)
    鸟哥的linux私房菜——第5章 首次登陆与在线求助man page
    Cmake实践(Cmake Practice)第二部分
    Cmake实践(Cmake Practice)第一部分
    鸟哥的linux私房菜——第3章 主机规划与磁盘分区
    鸟哥的linux私房菜——第1章 Linux是什么
  • 原文地址:https://www.cnblogs.com/ms1976/p/14400156.html
Copyright © 2020-2023  润新知