一、跨平台部署
我的阿里云linux发行版是CentOS7.4,.netcore版本6.0,接下来我们演示部署DotNet环境
3.1 安装.netCore运行时
注册Microsoft密钥
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
更新yum库,获取最新
sudo yum update #应该是仓库问题,这一步非常慢,要耐心等待。
sudo yum install dotnet-sdk-6.0 #安装完整sdk
sudo yum install aspnetcore-runtime-6.0 #只安装net6运行时
查看是否安装成功(我这里没成功)
dotnet --version
3.2安装git
因发布包是用git管理,所以需要centos上安装git。
yum install git
创建发布目录
mkdir /home/dotnet/tunnelservice
进入发布目录
cd /home/dotnet/tunnelservice
初始化git
git init
拉取git代码
git pull 发布包地址
我是直接用xftp 拷贝上传的代码
3.3启动
dotnet TunnelService.Api.dll
查看发布后效果。正常情况下,简单的部署就完成了。
二、守护进程
但是现在有个问题,当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。这时候就需要linux的守护进程了。下面我们继续讲述如何创建守护进程
1、安装
yum install python-setuptools
yum install supervisor
2、创建文件夹和文件,并且编辑文件
mkdir -m 700 -p /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
vim /etc/supervisor/supervisord.conf
3、在文件末尾新起一行添加代码(按i进入编辑模式,之后,找到最后一行,另起一行,输入代码)
[include]
files=/etc/supervisor/conf.d/*.conf
保存退出(按Esc,再输入:wq,即可保存退出)
4、创建文件夹并创建文件并编辑
mkdir -m 700 /etc/supervisor/conf.d
vim /etc/supervisor/conf.d/sxydwebapp.conf
[program:sxydapp]
command=dotnet MainCentreServer.dll --urls http://*:5001
directory=/home/sxyd/server
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=1
stderr_logfile=/var/log/sxydappwebapp.err.log
stdout_logfile=/var/log/sxydappwebapp.out.log
5、编辑自启动服务
vim /etc/systemd/system/supervisor.service
将代码块插入并保存退出
[Unit]
Description=supervisor
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
6、重载配置
systemctl daemon-reload
7、设置开机启动
systemctl enable supervisor
9、验证是否设置成功,输出为enabled
systemctl is-enabled supervisor
10、启动守护进程服务
systemctl start supervisor.service
重启服务器,访问正常,到此结束。