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工具上传:

运行项目
先进入站点程序所在文件夹,执行命令
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
参考文档
- https://blog.csdn.net/shuikanshui/article/details/128969307
- 官方文档:在 CentOS 上安装 .NET - .NET | Microsoft Learn
最近更新于:2023-3-17

浙公网安备 33010602011771号