首页 > 系统相关 >Linux部署-Net并配置进程守护

Linux部署-Net并配置进程守护

时间:2022-08-19 11:55:25浏览次数:69  
标签:supervisor log sudo supervisorctl Linux dotnet Net 守护 supervisord


注册 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   参考博客

标签:supervisor,log,sudo,supervisorctl,Linux,dotnet,Net,守护,supervisord
From: https://www.cnblogs.com/SnowCountry/p/16601520.html

相关文章

  • 《Linux内核设计的艺术》——第5章 文件系统
    1.挂载文件系统当前系统已经完成了根文件系统的挂载,将要挂载新的文件系统。新的文件系统挂载在根文件系统的某个目录的inode上。1)将硬盘的超级块读出,载入系统的super_b......
  • Function Interposition in Linux(hook)
    你是否想多改变库代码的工作方式,不替换整个库或者重新编译它。例如,你想包裹一层malloc和free函数来记录分配的日志,为了查找内存泄露。你可以重写那段使用了malloc/free的代......
  • Linux命令----常用的内置命令
    前言linux操作系统提供了一些内置的命令,掌握这些有利于我们日常对linux的使用,以及shell脚本的开发维护。下面简单了解几个常用的内置命令help:用来查看linux中其他命令......
  • Linux安装Jenkins超详细全过程
    文章转载自https://www.jb51.net/article/230962.htm目录1.安装JDK2.安装Jenkins3.修改Jenkins配置4.启动Jenkins5.服务器开放端口,打开浏览器访问6.获取管理员密码7.自定......
  • linux安装tomcat
     一、准备1、tomcat下载tomcat下载,地址:https://tomcat.apache.org/download-80.cgi    2、linux服务器(CentOs) 3、java环境 (1)下载jdk包,把包移动到/opt/s......
  • linux零基础预科自己的记录
     1.脚本:一系列的shell命令组成的程序叫做脚本。2.linux文件的类型 文件夹:  d普通文件:-r连接文件:l 3.在linux的控制台上如何使用后man命令如何退出 进入后......
  • 如何快速开发一个健康助手,实时守护用户健康
    随着人们生活水平的提高,大家对健康越来越重视和关注,用户在使用一些健康App时不仅想知道身高体重等基础情况,还想了解一些关于心率、血氧等日常数据,方便随时关注自身健康状况......
  • Linux操作系统学习
    Linux一切皆文件,最高权限的账户root。1、开机登录开机会启动很多进程,在Windows上叫“服务”(service),在Linux上叫做“守护进程”(daemon)登录方式:命令行登录ssh登录......
  • Linux学习笔记
    1、Linux简介:一种开源的、免费的操作系统,安装在计算机硬件上、用来管理计算机的硬件和软件资源的系统软件。  Linux注重安全性、稳定性、高并发处理能力,但......
  • RedHat7 关闭防火墙及SElinux
    转载:RedHat7关闭防火墙及SElinuxRedHat7.x默认不再用iptables管理防火墙,相关命令如下:一、关闭防火墙1.查看防火墙状态systemctlstatusfirewalld2.实时关闭(重启恢......