需完成环境安装、项目发布、文件传输、端口监听配置及后台守护:一、安装.NET运行时;二、修改Program.cs使Kestrel监听:5000;三、本地dotnet publish后scp上传;四、开放防火墙5000端口;五、用systemd守护进程运行。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您已完成 ASP.NET Core 应用的本地构建,准备将其部署至 Linux 服务器运行,则需完成环境安装、项目发布、文件传输、端口监听配置及后台守护等关键环节。以下是具体实施步骤:
一、安装 .NET 运行时或 SDK
Linux 服务器必须具备运行 ASP.NET Core 应用所需的公共语言运行时与工具链。根据发行版选择对应安装方式,避免仅安装 SDK(开发用)而遗漏运行时(生产环境必需)。
1、对于 Ubuntu/Debian 系统,执行以下命令更新源并安装运行时:
sudo apt update
sudo apt install -y dotnet-runtime-6.0
2、对于 CentOS/Rocky Linux/RHEL 系统,使用 dnf 安装:
sudo dnf update
sudo dnf install -y dotnet-runtime-6.0
3、验证安装是否成功:
dotnet --list-runtimes
输出中应包含 Microsoft.AspNetCore.App 和 Microsoft.NETCore.App 对应版本,且无报错信息
二、配置 Kestrel 监听地址与端口
ASP.NET Core 默认仅绑定 localhost:5000,该设置在远程访问时不可达。必须显式修改为监听所有网络接口(如 http://*:5000),否则客户端无法建立连接。
1、打开项目根目录下的 Program.cs 文件;
2、在 CreateHostBuilder 方法内,于 ConfigureWebHostDefaults 调用前插入以下代码:
webBuilder.UseKestrel();
webBuilder.UseUrls("http://*:5000");
注意:UseUrls 必须置于 UseStartup 之前,否则无效
三、发布项目并上传至服务器
发布操作生成独立、自包含的可执行文件集,不依赖开发机上的源码或项目结构,是生产部署的标准前置动作。
1、在本地项目根目录执行发布命令:
dotnet publish -c Release -o ./publish
2、确认 ./publish 目录下存在主程序 DLL(如 MyWebApp.dll)、runtimeconfig.json 及所有依赖项;
3、使用 scp 命令上传整个 publish 目录至服务器目标路径:
scp -r ./publish user@192.168.1.100:/var/www/myapp
上传后务必通过 ssh 登录服务器,执行 ls -l /var/www/myapp 验证文件完整性
四、开放系统防火墙端口
即使应用已启动,若系统防火墙未放行对应端口,外部请求仍会被直接丢弃。需依据实际使用的防火墙服务(ufw 或 firewalld)执行策略配置。
1、Ubuntu 系统启用 ufw 后,执行:
sudo ufw allow 5000
sudo ufw reload
2、CentOS/RHEL 系统启用 firewalld 后,执行:
sudo firewall-cmd --zone=public --add-port=5000/tcp --permanent
sudo firewall-cmd --reload
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
3、验证端口是否生效:
sudo firewall-cmd --list-ports | grep 5000
输出应显示 5000/tcp,否则需检查 firewalld 是否处于 active 状态
五、以守护进程方式运行应用
直接执行 dotnet MyApp.dll 将使进程绑定当前终端会话,一旦 SSH 断开或窗口关闭,进程即被终止。必须采用脱离终端的持久化运行机制。
1、使用 nohup 启动(适用于快速验证):
cd /var/www/myapp
nohup dotnet MyWebApp.dll > app.log 2>&1 &
日志将写入当前目录下的 app.log,进程 ID 可通过 ps aux | grep dotnet 查得
2、配置 systemd 服务(推荐用于生产环境):
创建服务文件:/etc/systemd/system/myapp.service,内容如下:
[Unit]
Description=My ASP.NET Core Application
After=network.target
[Service]
Type=notify
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/MyWebApp.dll
Restart=always
RestartSec=10
User=www
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
3、启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
执行 sudo systemctl status myapp.service 应显示 active (running)










