.NET5使用 supervisor部署到Linux

473 阅读3分钟

一、Centos下安装.net core sdk

1、导入密钥

  • 非centos下
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
  • centos7使用
sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm

2、安装依赖插件

如果不安装此插件在后续的安装过程中可能会出现错误

yum install libunwind libicu

3、安装dotnet sdk

方法1:通过yum安装

  • NET5
[root@localhost ~]# sudo yum install dotnet-sdk-5.0
  • NET6
[root@localhost ~]# sudo yum install dotnet-sdk-6.0

4、检查安装情况

dotnet --version

安装成功后 输入 dotnet --version 查看是否有版本号,看是否安装成功。(后面要通过dotnet 命令来启动项目服务)

二、安装supervisor

方法一、使用yum命令安装(推荐)

#切换为root用户
yum install epel-release
yum install -y supervisor

安装完成后在/etc目录下有以下文件

image.png

三、编辑相关配置文件

1、创建supervisor配置文件

如果额没有则创建 mkdir /etc/supervisor    #用来存储supervisor的配置文件以及开机启动文件等等...

mkdir /etc/supervisord.d    #用来存储应用程序/服务所需的目录(如果没有则创建该目录)

2、编辑配置文件

根据实际需要进行调整

vim /etc/supervisord.conf

[unix_http_server]
file=/run/supervisor/supervisor.sock
...
[supervisord]
logfile=/var/log/supervisor/supervisord.log
pidfile=/run/supervisord.pid

[supervisorctl]
serverurl=unix:///run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
...
[include]
files = supervisord.d/*.ini ;应用服务配置文件存储路径

3、编辑应用部署配置文件

vim /etc/supervisord.d/zradmin.ini

[program:zradmin]
command=dotnet ZR.Admin.WebApi.dll --urls http://*:8888; 运行程序的命令,这里可以指定启动端口也可以不指定,不指定使用配置文件里面配置的启动地址
directory= /home/website/zradmin ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
startsecs=5 ;5秒自动重启
stderr_logfile=/var/log/zradmin.err.log ; 错误日志文件
stdout_logfile=/var/log/zradmin.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT

[program:zradmin]  表示程序运行在supervisor 里面的名字,用于关闭开启程序使用

image.png

注意

  1. 修改此配置文件后要重新update 配置文件,不然一直会使用上次的配置文件
  2. stderr_logfile/stdout_logfile 后面的文件夹路径如果需要加自定义路径一定要保证文件目录存在,否则启动不了应用程序

四、服务启动和关闭

1、启用supervisor

参数:-c指定让其读取的配置文件

[root@localhost /]supervisord -c /etc/supervisord.conf

supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。

2、关闭supervisor

supervisorctl shutdown

3、重新加载supervisor配置文件,并重启superivisor

重新启动配置中的所有程序

supervisorctl reload

4、添加或删除配置文件更新

配置文件修改后使用该命令加载新的配置

supervisorctl update

5、管理supervisorctl应用程序的服务

启动所有 supervisorctl start all

启动单个 supervisorctl start [service_name]

停止所有程序 supervisorctl stop all

停止指定服务 supervisorctl stop [service_name]

查看应用状态 supervisorctl status

五、supervisor配置图形化管理

编辑 supervisor.conf 配置文件,把下面注释打开,里面的port最好改成服务器内网

image.png

通过服务器IP访问

image.png 可以对进程进行重启、停止、实时监控程序日志

6、supervisor配置开机启动

在目录 /etc/supervisor 里面心中一个 supervisord.service 文件

vim /etc/supervisor/supervisord.service

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
 
[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=42s
 
[Install]
WantedBy=multi-user.target

将文件拷贝至:“/usr/lib/systemd/system/supervisord.service”

执行命令:systemctl enable supervisord

image.png 执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

image.png