Linux 上部署 ASP.NET Core 应用程序

注意:CentOS Linux 8 不支持 .NET 6 及更高版本。7 支持 .NET 6 及更高版本。

主要步骤:

  • 首先是安装 Runtime 环境,然后拷贝程序,并通过命令行运行。

  • 效仿 Windows,把程序启动管理作为一个服务,来达到开机启动和灵活管理的目的。


安装 Runtime 环境

将Microsoft包签名密钥添加到受信任密钥列表

linux 命令:sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

安装运行时

sudo yum install aspnetcore-runtime-6.0

查看.net 版本信息,确认是否安装成功

dotnet --info

拷贝程序文件,并通过命令行运行

将net6项目的代码文件上传到Linux服务器上某文件夹

比如使用xftp工具上传:

image-20230312144310762

运行项目

先进入站点程序所在文件夹,执行命令

dotnet <app_assembly>.dll

然后在浏览器中,导航到 http://<serveraddress>:<port> 以确认应用在 Linux 本地正常运行。

.net 6 自定义服务端口

在appsettings.json文件中添加:

"Kestrel": {
 "Endpoints": {
   "Https": {
     "Url": "https://*:2206"
   },
   "Http": {
     "Url": "http://*:2205"
   }
 }
}

注意:如果通过Linux命令开通了某个接口,还不一定奏效(即使开通某端口后并且重启了防火墙),那么请到服务器控制台那里的防火墙,添加规则。这个情况是命令添加端口需要等待一段时间才生效,而阿里云服务器控制台添加的就立即生效的原因?还是本来就得通过阿里云来搞?还是说添加端口重启防火墙后还得重启服务器?

将项目添加到守护进程,随系统启动而启动

先创建一个任务配置文件(/etc/systemd/system/MvcTestNet6.service),用于服务启动,注意文件所在文件夹,文件内容参考如下,文件名字可自定义:

[Unit]
Description=MvcTestNet6.service
 
[Service]
WorkingDirectory=/www/mvc_test_net6     
ExecStart=/usr/bin/dotnet  /www/mvc_test_net6/MvcTestNet6.dll --urls http://*:8081 
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=AspnetCore
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
 
[Install]
WantedBy=multi-user.target

使自启动生效

systemctl enable MvcTestNet6.service

立即启动服务

systemctl start MvcTestNet6.service

查看服务状态

systemctl status MvcTestNet6.service

参考文档

image-20230312143859469

最近更新于:2023-3-17

posted @ 2023-03-17 17:10  AI大胜  阅读(498)  评论(0)    收藏  举报