Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的

1.Ubuntu服务器环境安装

1.1 增加微软包安装源

bash 复制代码
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

1.2 Install the .NET SDK

bash 复制代码
# 更新本地软件包列表。原理:连接到软件服务器->检查可用更新->更新本地软件包列表
sudo apt-get update
# 安装 https 所依赖的包
sudo apt-get install apt-transport-https

# 安装.net sdk
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0

# 查看dotnet 版本
sudo dotnet --version
sudo dotnet --info

1.3 Install Runtime

bash 复制代码
sudo apt-get update &&  sudo apt-get install -y aspnetcore-runtime-8.0

2.Ubuntu Web站点部署运行

2.1 发布包 上传到 /home/web

2.2 给 /home/web 添加执行权限

bash 复制代码
chmod +x -R  /home/web

2.3 创建Service文件

bash 复制代码
vim /usr/lib/systemd/system/mymvcweb.service

添加以下内容:

注意:这里我特意配置了 8801端口,最后要开放外网访问,不配置最终就走的 dotnet 默认的 5000端口

bash 复制代码
[Unit]
Description=MyMvcWeb WebSite Application
 
[Service]
WorkingDirectory=/home/web/
ExecStart=/usr/bin/dotnet /home/web/MyMvcWeb.dll --urls "http://*:8801"
Restart=always
# Restart service after 2 seconds if the dotnet service crashes:
RestartSec=2
KillSignal=SIGINT
SyslogIdentifier=mymvcweb
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
 
[Install]
WantedBy=multi-user.target

2.4 给 service 添加执行权限

bash 复制代码
chmod +x /usr/lib/systemd/system/mymvcweb.service

2.5 重新加载和启用开机自启

bash 复制代码
systemctl daemon-reload && systemctl enable mymvcweb.service

2.6 查看状态

bash 复制代码
systemctl status mymvcweb.service

3. 访问部署好的站点

3.1 服务器上访问 curl http://127.0.0.1:8801

3.2 公网访问

4. 恭喜,Success

附录:

其它指令参照

bash 复制代码
# 启动服务
systemctl daemon-reload && systemctl start mymvcweb.service
# 停止服务
systemctl daemon-reload && systemctl stop mymvcweb.service
# 重启服务
systemctl daemon-reload && systemctl restart mymvcweb.service

# 查看进程
ps -ef | grep mymvcweb
# 查看端口是否开放
netstat -tuln
相关推荐
我不叫武9 小时前
一个用 Rust 写的离线编码查询桌面工具
前端
Web4Browser10 小时前
指纹浏览器 API 自动化怎么接:启动 Profile、获取 CDP 端点并连接自动化框架
前端·网络·typescript·自动化
Patrick_Wilson10 小时前
从 React 到 Flutter:写给前端的一张跨端知识地图
前端·flutter·react.js
颜酱10 小时前
06 | 把 meta_config 同步进 MySQL(生成阶段)
前端·人工智能·后端
longerxin202010 小时前
nano编辑器插入、编辑完整操作教程(Linux日志/配置专用)
linux·运维·编辑器
OpenTiny社区11 小时前
Loop Engineering:让 AI Agent 自己跑起来的工程方法
前端·github
IT_陈寒11 小时前
SpringBoot自动配置坑了我一周,原来问题这么蠢!
前端·人工智能·后端
kyriewen11 小时前
我review了一份Vibe Coding写的前端代码——能跑,但5个地方迟早要命
前端·javascript·ai编程
REDcker12 小时前
Cesium三维WebGIS入门详解
前端·gis·web·cesium·webgis
0暗影流光012 小时前
十倍效能提升——Web 基础研发体系的建立
前端