Linux部署-Net并配置进程守护
配置Nginx
SELinux 保护机制所导致,我们需要将 Nginx 添加至 SELinux 的白名单
yum install policycoreutils-python sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx sudo semodule -i mynginx.pp
Supervisor 配置守护进程
安装
sudo yum -y install epel-release sudo yum -y install supervisor supervisord -c /etc/supervisord.conf 启动supervisord并使用配置
安装完成之后,在
/ect/supervisor/conf.d/
目录下新建一个配置文件(touch HelloWebApp.conf
),取名为HelloWebApp.conf
conf文件示例
[program:HelloWebApp] command=dotnet HelloWebApp.dll #要执行的命令 directory=/home/yxd/Workspace/publish #命令执行的目录 environment=ASPNETCORE__ENVIRONMENT=Production #环境变量 user=www-data #进程执行的用户身份 stopsignal=INT autostart=true #是否自动启动 autorestart=true #是否自动重启 startsecs=1 #自动重启间隔 stderr_logfile=/var/log/HelloWebApp.err.log #标准错误日志 stdout_logfile=/var/log/HelloWebApp.out.log #标准输出日志 ==================================================================================================================== #配置程序名称 [program:Cloud.Api] #运行程序的命令 command=dotnet Cloud.Api.dll --urls="http://*:5000;http://*:5001" #命令执行的目录 directory=/home/www/server-api #进程环境变量 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=2 #错误日志文件 #stderr_logfile=/var/log/DemoNetCore.err.log #输出日志文件 #stdout_logfile=/var/log/DemoNetCore.out.log
重新加载配置或者直接重启supervisor 服务
sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf sudo service supervisor stop sudo service supervisor start
https://blog.csdn.net/xyf_1995/article/details/105555835
参考博客
常用指令
supervisorctl status //查看所有进程的状态 supervisorctl update //配置文件修改后使用该命令加载新的配置 supervisorctl reload //重新启动配置中的所有程序 supervisorctl restart <application name> //重启指定应用 supervisorctl stop <application name> //停止指定应用 supervisorctl start <application name> //启动指定应用 supervisorctl restart all //重启所有应用 supervisorctl stop all //停止所有应用 supervisorctl start all //启动所有应用
踩坑
supervisord -c /etc/supervisord.conf
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
find / -name supervisor.sock unlink /run/supervisor/supervisor.sock
https://www.cnblogs.com/weihengblogs/p/13724349.html
参考博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构