.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

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

原文地址:https://www.cnblogs.com/ms1976/p/14400156.html