Linux部署-Net并配置进程守护
2022/8/21 5:27:19
本文主要是介绍Linux部署-Net并配置进程守护,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
注册 Microsoft 签名密钥并添加 Microsoft 产品提要
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
安装 .NET SDK
sudo yum update sudo yum install libunwind libicu sudo yum install dotnet-sdk-6.0.0 #最新版本请关注官网
注意你自己项目的版本 我选择的项目版本是2.1.1 然后我执行的命令就是 sudo yum install dotnet-sdk-2.1 两步即可完成 .NET Core SDK 在 CentOS7 系统下的安装,最后可执行一下命令dotnet --version,如果正常输出版本号则说明安装没有出现问题。 Linux 其他发行版安装 .NET Core SDK 教程请参见官方教程 Get started with .NET in 10 minutes。 dotnet --version
部署运行
文件传输到服务器/home/wwwroot文件夹 (文件夹根据需要调整)
cd 文件夹路径 dotnet 项目名称 如 : dotnet WebApplication1.dll
配置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
参考博客
这篇关于Linux部署-Net并配置进程守护的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南