使用 Kestrel 自托管部署到Linux.
需要先安装.netcore 的运行环境到Linux.
安装.netcore 环境.
依次输入下列命令,安装速度根据网络状况,大概装了快一小时。
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm sudo yum update sudo yum install dotnet-sdk-3.1 //应该可以直接安装runtime 运行时,已经安装了算了.
成功后检测
dotnet --info
编译项目
记得选择FrameworkDependent,这样发布后项目很小,大概9M。如果自托管的话可能上百兆了。
上传文件到Linux服务器
利用 MobaXterm 左侧的文件目录
通过命令把项目跑起来
程序是启动了,但是Ctrl +C 后退出程序或者关闭shell 后又访问不了,怎么把进程放在后台常驻运行呢?
创建常驻服务
cd /etc/systemd/system
vi kestrel-Forestry.service
通过命令创建一个文件,内容如下。
[Unit] Description=Example .NET Web Site running on Centos [Service] WorkingDirectory=/home/WebApi ExecStart=/usr/bin/dotnet DL.Forestry.WebApi.dll 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
上图是通过可视化工具创建,也可以。
注册新创建的服务
// 注册服务 sudo systemctl enable kestrel-Forestry.service // 启动服务 sudo systemctl start kestrel-Forestry.service
验证后台进程
//查端口 netstat -nlp|grep 8080 //查服务名 ps -ef | grep Forestry