linux 发布部署asp.net core 独立部署包并添加守护进程服务
程序员文章站
2022-07-09 17:16:55
...
1.先使用vs发布需要的项目到指定目录
2. 复制项目发布包到linux指定目录
我一般放在opt下面 一般发布后的文件没有执行权限
如果给文件所有者添加可执行权限: chmod u+x ./publish/* (所有执行dll文件等可执行权限)
chmod g=rwx, o=rx ./publish/*
3.在此目录下创建slaughter.service 服务文件 sudo nano /etc/systemd/system/slaughter.service
4.编辑此文件 如下
[Unit]
Description=Example .NET Web API App running on Ubuntu
[Service]
WorkingDirectory=/opt/dev/publish 【发布项目目录】
ExecStart=/opt/dev/publish/Qhbx.Tracebility.Core.Slaughter.WebApi 【命令执行文件】
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10 【重启时间间隔】
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=root 【所属用户】
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
5.编辑完成之后 chmod 776 slaughter.servcie 添加可执行权限
6. 进入 发布部署包目录cd /opt/dev/publish/
执行 ./Qhbx.Tracebility.Core.Slaughter.WebApi --urls=http://*:8803 (项目名可执行文件)
查看是否项目启动 项目端口号是8803 如果启动正常 则下面开放端口号
7.防火墙常见命令:
查看已经开放的端口:
firewall-cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
此处只需要开放 8803
firewall-cmd --zone=public --add-port=8803/tcp --permanent
然后重启 防火墙 firewall-cmd --reload
8. 启动守护服务 目录/etc/systemd/system
sudo systemctl enable slaughter【启用服务】
sudo systemctl start slaughter 【启动服务】
sudo systemctl status slaughter【查看启动状态】
修改服务配置service之后需要 systemctl daemon-reload【加载】
首先看一下服务列表里有没有这个服务:
systemctl list-unit-files --type=service
如果有的话:
systemctl daemon-reload
9 .启动成功后状态查看