概述
ASP.NET Core 支持跨平台部署,最近利用业务需求的契机,尝试了下在 CentOS 7 平台上搭建基于 .NET 6 的 ASP.NET Core 6 网站。这里对主要过程做个记录。
安装 .net 6 SDK
安装 .NET SDK 之前,先运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装 SDK
这里直接安装 .NET SDK 无需再安装其他的运行时。
sudo yum install dotnet-sdk-6.0
此命令包含以下所有安装的内容:
aspnetcore-runtime-6.0.x86_64 0:6.0.11-1aspnetcore-targeting-pack-6.0.x86_64 0:6.0.11-1dotnet-apphost-pack-6.0.x86_64 0:6.0.11-1dotnet-host.x86_64 0:7.0.0-1dotnet-hostfxr-6.0.x86_64 0:6.0.11-1dotnet-runtime-6.0.x86_64 0:6.0.11-1dotnet-runtime-deps-6.0.x86_64 0:6.0.11-1dotnet-targeting-pack-6.0.x86_64 0:6.0.11-1netstandard-targeting-pack-2.1.x86_64 0:2.1.0-1
测试 .net SDK 是否安装成功
Bash
$ dotnet --info
.NET SDK (reflecting any global.json):
Version: 6.0.403
Commit: 2bc18bf292
Runtime Environment:
OS Name: centos
OS Version: 7
OS Platform: Linux
RID: centos.7-x64
Base Path: /usr/share/dotnet/sdk/6.0.403/
global.json file:
Not found
Host:
Version: 6.0.11
Architecture: x64
Commit: 943474ca16
.NET SDKs installed:
6.0.403 [/usr/share/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.11 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.11 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
VS 发布 ASP.NET Core 6 程序
编译 .net 6 发布程序
vs 中选择启动项目,执行发布,目标运行时选择 linux-x64
复制程序到服务器中
可以使用 FileZilla FTP 上传文件。
上传程序文件到 /www/website 路径下。(这里可以换成自已的路径)
启动 ASP.net Core 服务
指定端口执行:
dotnet /www/website/Project.dll --urls "http://*:8008"
访问地址:http://ip:8008/
添加 Systemd 守护进程
ASP.NET Core 应用程序运行在 shell 之中,如果关闭 shell 则会发现 ASP.NET Core 应用会被关闭,从而导致应用无法访问。所以还需要创建一个后台守护进程去运行该站点。
在系统中创建 website.service 文件
vim /usr/lib/systemd/system/website.service
添加以下内容:
Bash
[Unit]
Description=website service
[Service]
WorkingDirectory=/www/website
ExecStart=/usr/bin/dotnet /www/website/Project.dll --urls "http://*:8008"
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=webapp1
User=root
# Development 开发环境,Production 生产环境
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
srm 服务状态管理命令
#查看服务状态
systemctl status website.service
#启动服务
systemctl start website.service
# 停止服务
systemctl stop website.service
# 重启服务
systemctl restart website.service
# 开机自动启动
systemctl enable website.service
# 开机禁止自启动
systemctl disable website.service
# 查看所有已启动的服务
systemctl list-units --type=service
正文完