C#进阶-在Ubuntu上部署ASP.NET Core Web API应用

海哥  金牌会员 | 2025-1-10 10:34:58 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 877|帖子 877|积分 2631

随着云盘算和容器化技能的普及,Linux 服务器已成为部署 Web 应用步伐的主流平台之一。ASP.NET Core 作为一个跨平台、高性能的框架,非常适合在 Linux 环境中运行。本篇博客将详细介绍如何在 Linux 服务器上部署 ASP.NET Core Web API 应用,包括部署预备、应用发布、配置反向代理(Nginx)、设置体系服务以及日志管理等步骤。

一、部署预备

在开始之前,请确保你具备以下条件:


  • 一台运行 Linux(如 Ubuntu 20.04)的服务器,具有 SSH 访问权限。
  • ASP.NET Core Web API 项目,并确保在本地可以大概正常运行。

二、安装 MySQL(如需)

1. 安装MySQL服务器

  1. sudo apt install mysql-server -y
复制代码
2. 启动并设置MySQL开机自启

  1. sudo systemctl start mysql
  2. sudo systemctl enable mysql
复制代码
3. 验证MySQL安装

登录MySQL以确认安装乐成。
  1. sudo mysql -u root -p
复制代码
MySQL默认暗码是root,直接登录即可。
4. 修改初始暗码

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
复制代码
5. 创建库和表

这里我们用SQL语句把项目需要的数据库建好即可。

三、安装 .NET 运行环境

首先,需要在你的 Linux 服务器上安装 .NET 运行环境(假如选择框架依赖部署)或 .NET SDK(假如需要编译代码)。
1. 添加 Microsoft 包存储库

  1. # 安装所需的依赖
  2. sudo apt-get update
  3. sudo apt-get install -y wget apt-transport-https software-properties-common
复制代码

  1. # 下载并安装微软的公钥
  2. wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  3. sudo dpkg -i packages-microsoft-prod.deb
  4. # 更新包索引
  5. sudo apt-get update
复制代码

2. 安装 .NET 运行环境

  1. # 安装 ASP.NET Core 运行时
  2. sudo apt-get install -y aspnetcore-runtime-8.0
复制代码

   注意:根据你的应用所使用的 .NET 版本,调整安装的运行时版本。
  3. 验证安装

  1. dotnet --version
复制代码
你应该会看到已安装的 .NET 版本号,如 8.0.x。


四、发布 ASP.NET Core 应用

1. Visual Studio 发布应用

在本地开辟环境中,使用 visual studio 发布应用。

选择框架依赖部署(FDD)或自包含部署(SCD):


  • 框架依赖部署(FDD):目标服务器需要预先安装 .NET 运行环境。
  • 自包含部署(SCD):应用步伐包含了所有必要的运行时文件,无需在服务器上安装 .NET。

保存发布配置,点击发布。

发布乐成。

发布后的项目在目标位置里:D:\DCO\dco_ll\bin\Release\net8.0

2. 复制发布后的内容到服务器目次

将文件夹内所有内容复制到服务器上的预发布项目目次上。

   此中,应用涉及的配置信息一般在 appsettings.json 里。
  
五、启动项目

切换到项目目次,指定端口启动项目。
  1. cd xxxx #你的项目在服务器上的部署路径
  2. sudo dotnet DCOWebhook.dll --urls "http://0.0.0.0:80"
复制代码

到这里,步伐已经用公网IP访问了。

六、配置 Nginx 作为反向代理(可选)

Nginx 将作为反向代理,未来自客户端的请求转发到 ASP.NET Core 应用,处置处罚 SSL、负载均衡等使命。
假如你的项目端口监听的不是默认80端口(比如5000端口),那么可以通过 Nginx 监听80端口举行转发,访问80端口的请求会自动转发到5000端口上。
1. 安装 Nginx

  1. sudo apt-get update
  2. sudo apt-get install -y nginx
复制代码
2. 配置 Nginx

创建一个新的 Nginx 配置文件,或修改默认配置。
  1. sudo nano /etc/nginx/sites-available/default
复制代码

修改为以下内容:
  1. server {
  2.     listen 80 default_server;
  3.     listen [::]:80 default_server;
  4.    
  5.     root /var/www/html;
  6.    
  7.     index index.html index.htm index.nginx-debian.html;
  8.         server_name dco021.atomgit.net; # 替换为你的域名或服务器IP
  9.     location / {
  10.         proxy_pass http://localhost:5000;  # 替换为你的应用监听的端口
  11.         proxy_http_version 1.1;
  12.         proxy_set_header Upgrade $http_upgrade;
  13.         proxy_set_header Connection keep-alive;
  14.         proxy_set_header Host $host;
  15.         proxy_cache_bypass $http_upgrade;
  16.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  17.         proxy_set_header X-Forwarded-Proto $scheme;
  18.     }
  19. }
复制代码
3. 启用配置并重启 Nginx

  1. # 创建符号链接以启用配置
  2. sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
  3. # 测试 Nginx 配置是否正确
  4. sudo nginx -t
  5. # 重启 Nginx
  6. sudo systemctl restart nginx
复制代码

七、设置体系服务(可选)

使用 systemd 将你的 ASP.NET Core 应用配置为服务,确保应用在服务器启动时自动运行,并在瓦解后自动重启。
1. 创建 systemd 服务文件

  1. sudo nano /etc/systemd/system/dcowebhook.service
复制代码
添加以下内容:
  1. [Unit]
  2. Description=DCOWebhook ASP.NET Core Web API
  3. After=network.target
  4. [Service]
  5. WorkingDirectory=/var/www/dco
  6. ExecStart=/usr/bin/dotnet /var/www/dco/DCOWebhook.dll --urls "http://0.0.0.0:5000" #换成需要监听的端口
  7. Restart=always
  8. # 用户和组
  9. User=www-data
  10. Group=www-data
  11. # 环境变量
  12. Environment=ASPNETCORE_ENVIRONMENT=Production
  13. [Install]
  14. WantedBy=multi-user.target
复制代码

   注意
  

  • WorkingDirectory:你的应用所在的目次。
  • ExecStart:启动应用的命令。根据你的发布方式(FDD 或 SCD)调整路径和参数。
  • User 和 Group:保举使用非 root 用户(如 www-data)运行服务,提升安全性。
  2. 重新加载 systemd 并启动服务

  1. sudo systemctl daemon-reload
  2. sudo systemctl start dcowebhook.service #如果是修改配置需要刷新则写restart
  3. sudo systemctl enable dcowebhook.service
复制代码
3. 检查服务状态

  1. sudo systemctl status dcowebhook.service
复制代码
你应该会看到服务正在运行,并监听指定的端口。


八、配置防火墙

确保服务器的防火墙允许 HTTP(80)和 HTTPS(443)端口的流量。
使用 UFW 配置防火墙。
  1. sudo ufw allow 'Nginx Full'
  2. sudo ufw enable
  3. sudo ufw status
复制代码
  注意:Nginx Full 配置包括 HTTP 和 HTTPS 端口。
  


九、检察日志

假如项目依然无法访问,可以检察日志分析标题所在。
1. 检察 Nginx 错误日志

  1. sudo tail -f /var/log/nginx/error.log
复制代码
2. 检察 ASP.NET Core 应用日志

  1. sudo tail -f /var/log/dcowebhook/log-*.txt
复制代码

十、常见标题

1. 解决端口占用

偶尔会遇到端口被占用的标题,我们要先检察是哪个进程在占用这个端口。
  1. sudo lsof -i 5000 #换成你需要查的端口
复制代码
再来杀死这个进程。
  1. sudo kill -9 76681 #换成上一步查到的进程的pid
复制代码

如许这个端口就开释出来了。

十一、总结

通过本文的步骤,你已经乐成在 Linux 服务器上部署了 ASP.NET Core Web API 应用。你不仅配置了应用的发布和运行,还设置了 Nginx 作为反向代理,确保了应用的高可用性和安全性。此外,配置日志记载资助你更好地监控和维护应用。根据实际需求,你还可以进一步优化配置,如启用 HTTPS、配置负载均衡等。部署乐成后,发起定期检查应用和服务器的性能,及时更新和维护,以确保应用的稳定运行。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表