当前位置: 首页 > news >正文

Ubuntu 24服务器部署abp vnext应用程序的完整教程

一、服务器配置

1、安装Nginx

2、安装.NetCore SDK 或.NetCore 运行时

以上两步参考

《Ubuntu+Nginx+Supervisord部署.net core web应用程序_nginx部署netcore-CSDN博客》

二、abp vnext程序部署

1、程序发布

使用VS进行发布

2、程序上传

使用winSCP工具

3、openiddict.pfx证书文件生成

参考《正式部署abp vnext应用程序时,如何生成openiddict.pfx证书文件-CSDN博客》

4、创建数据库,配置appsetting.json并运行程序

以MySql数据库为例

(1)使用Navicat Premium Lite 17连接MySql数据库服务器,创建数据库。

(2)修改appsetting.json配置,如:

{"Kestrel": {"Endpoints": {"Http": {"Url": "http://127.0.0.1:5000"    //指定运行的端口}}},"App": {"SelfUrl": "http://127.0.0.1:5000","CorsOrigins": "http://localhost:5777,http://localhost:4200","DisablePII": false,"HealthCheckUrl": "/health-status"},"DatabaseType": "MySql", //SqlServer、MySql、Sqlite"ConnectionStrings": {"Default": "Server=127.0.0.1;Port=3306;Database=数据库名;Uid=root;Pwd=密码;",},"AuthServer": {"Authority": "http://127.0.0.1:5000","RequireHttpsMetadata": true,"SwaggerClientId": "Workon_Swagger","CertificatePassPhrase": "069470e1-5189-4aa6-b920-0ada0b556980"},"RemoteServices": {"Base": {"BaseUrl": "http://127.0.0.1:5000"}},"Settings": {"Abp.Localization.DefaultLanguage": "zh-Hans","Abp.Identity.Password.RequireNonAlphanumeric": "False", //密码是否包含特殊符号"Abp.Identity.Password.RequiredLength": 6, //密码最小长度"Abp.Identity.Password.RequireLowercase": "False", //要求小写字母"Abp.Identity.Password.RequireUppercase": "False", //要求大写字母"Abp.Identity.Password.RequireDigit": "False", //要求数字"Abp.Identity.Password.RequiredUniqueChars": "1" //要求唯一字符数量},"BlobSetting": {"DefaultContainerBasePath": "E:\\workspace\\Workon\\workon-service\\CommonAttach"},"StringEncryption": {"DefaultPassPhrase": "WYv70MGSuIMTNlGZ"},"OpenIddict": {"Applications": {"Workon_App": {"ClientId": "Workon_App","RootUrl": "http://localhost:4200"},"Workon_Swagger": {"ClientId": "Workon_Swagger","RootUrl": "http://127.0.0.1:5000"},"Workon_Web": {"ClientId": "Workon_Web","ClientSecret": "1q2w3e*","RootUrl": "http://localhost:8081/"},"Workon_Blazor": {"ClientId": "Workon_Blazor","RootUrl": "http://localhost:44307"}}}
}

(3)运行程序

进入到程序发布的目录,并执行:

dotnet your-app.dll

检查运行结果,查看日志,确认程序能正常运行。若程序正常运行,则程序日志未显示错误,且数据库会自动迁移(前提:程序配置数据库自动迁移处理)。

5、nginx反向代理配置

安装完毕 Nginx后,请修改 /etc/nginx/nginx.conf 配置文件。

在Ubuntu服务器上的Nginx配置目录中,图中所画的红色框内的几个文件夹有各自的用途:

  1. conf.d/: 这个文件夹用来存储额外的Nginx配置片段。在这个文件夹里的每个文件都会被自动加载并入主配置文件nginx.conf中。这样可以方便地将不同的配置项分离出来,使得主配置文件更加简洁易读。
  2. modules-available/: 这个文件夹用于存放可用的Nginx模块。在这里面的文件通常是模块的配置文件,当需要启用某个模块时,可以将相应的文件符号链接到modules-enabled文件夹中。
  3. modules-enabled/: 这个文件夹用于存放启用的Nginx模块的符号链接。只有在这个文件夹中的模块才会被Nginx加载和使用。通过这种方式,可以灵活地控制哪些模块会被启用。
  4. sites-available/: 这个文件夹用于存放所有的虚拟主机配置文件。每个文件代表一个网站的配置信息。这个文件夹本身并不直接参与Nginx的运行,而是作为一个配置仓库。
  5. sites-enabled/: 这个文件夹也用于存放虚拟主机配置文件的符号链接。与modules-enabled类似,只有在这个文件夹中的配置文件才会被Nginx加载和使用。通过这种方式,可以方便地管理和切换不同网站的配置。

要在Ubuntu服务器上使用Nginx部署一个网站并配置反向代理,你通常会在以下文件夹中进行操作:

  • /etc/nginx/sites-available/: 在这个文件夹中,你会创建一个新的配置文件来定义你的网站设置和反向代理规则。这个文件通常以你的域名命名,例如 example.com.conf。

以下是在/etc/nginx/sites-available/文件夹下配置新站点和反向代理的基本步骤:

(1)创建一个新的配置文件:

sudo nano /etc/nginx/sites-available/example.com.conf


(2)在打开的编辑器中,添加以下配置内容作为示例:

server {listen 80; # 或者你想要监听的端口,例如 443 用于 HTTPSserver_name example.com www.example.com; # 你的域名location / {proxy_pass http://backend-server; # 反向代理到后端服务器的地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 其他可能的配置,例如 SSL、日志、错误页面等
}

请确保将proxy_pass指令中的http://backend-server替换为你的实际后端服务器地址。

(3)保存并关闭文件:ctrl+X =>Y=>enter

(4)创建一个从sites-available到sites-enabled的符号链接,以便Nginx加载这个配置:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/


(5)测试Nginx配置文件是否有语法错误:

sudo nginx -t


(6)如果配置测试成功,重新加载Nginx以应用新的配置:

sudo systemctl reload nginx


现在,Nginx应该已经配置为反向代理你的网站,将请求转发到指定的后端服务器。记得替换上述示例中的example.com和http://backend-server为你的实际域名和后端服务器地址。

6、SSL证书配置

参考以下文章:

《使用Let‘s Encrypt申请免费HTTPS证书_let's encrypt-CSDN博客》

《申请 Let's Encrypt 通配符 HTTPS 证书 - 小水滴18 - 博客园》

以Ubuntu24服务器、nginx反向代理为例。

(1)安装Certbot

sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx # 如果你使用的是Nginx

    (2)申请证书

    安装完Certbot后,你可以使用以下命令来申请证书。以下命令以Nginx为例。

    申请具体域名证书
    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

    这个命令会启动Certbot的Nginx插件,自动配置Nginx以使用HTTPS,并申请证书。你需要按照提示输入你的邮箱地址(用于接收续订和安全通知),并同意Let’s Encrypt的条款。

    申请泛域名证书
    sudo certbot --nginx -d *.wzlinux.com

    出现如下图所示时,需要做一条 TXT 的 DNS 解析。

    TXT 的 DNS 解析,以啊里云服务器为例:

    打开啊里云域名解析界面,添另一条TXT解析,如下图:

    然后按“Enter”键继续。

    (3)配置nginx

    我们这里以 nginx 服务为例,配置证书,nginx 的配置文件为下:

    server{listen 443 ssl http2;#listen [::]:443 ssl http2;server_name  bbs.wzlinux.com bbs1.wzlinux.com;index index.html index.htm index.php default.html default.htm default.php;root  /usr/share/nginx/html/;ssl on;ssl_certificate /etc/letsencrypt/live/wzlinux.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/wzlinux.com/privkey.pem;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";ssl_session_cache builtin:1000 shared:SSL:10m;# openssl dhparam -out /usr/local/nginx/ssl/dhparam.pem 2048#ssl_dhparam /usr/local/nginx/ssl/dhparam.pem;}server{listen 80;server_name bbs.wzlinux.com;return 301 https://$server_name$request_uri;
    }
    

    (4)设置自动续期

    可以使用指令certbot renew进行更新,添加一个定时任务。

    Let’s Encrypt的证书有效期为90天,但你可以通过Certbot的自动续期功能来确保证书始终有效。你可以通过运行以下命令来设置自动续期(以Cron作业为例):

    sudo certbot renew --dry-run # 测试自动续期
    # 将以下行添加到Cron作业中以定期执行自动续期
    0 0,12 * * * sudo certbot renew

    可以使用指令certbot renew进行更新

    7、systemd设置进程守护及开机自动启动

    参考《Linux系统(如Ubuntu)后台运行.NET Core应用程序_linux运行dotnet程序-CSDN博客》

    三、防火墙TCP端口设置

    参考《Ubuntu+Nginx+Supervisord部署.net core web应用程序_nginx部署netcore-CSDN博客》的防火墙设置

    四、程序更新及维护

    1、上传更新的程序

    2、重启.netcore程序

    ps -ef | grep dotnet  #查看kill -s 9 PID  #关掉程序进行#等待systemd自动重启.netcore程序

    相关文章:

  1. 谷歌与微软的AI战争:搜索、云服务与生态布局
  2. 金仓kingbase数据库管理工具KStudio.exe无法启动且不报错的解决办法
  3. [SAP] SAP ERP用户参数设置
  4. LLM 论文精读(七)Rethinking Reflection in Pre-Training
  5. 【入门】打印字母塔
  6. uniapp-商城-52-后台 商家信息(商家信息数据,云对象使用)
  7. Linux基础整理
  8. Sim Studio - 构建、测试和优化智能体工作流的强大平台
  9. 游戏引擎学习第273天:动画预览
  10. redis数据结构-07(SADD、SREM、SMEMBERS)
  11. 第二十二节:图像金字塔-拉普拉斯金字塔
  12. 第一章 初识Java
  13. Java并发编程常见问题与陷阱解析
  14. Python多环境管理指南
  15. Lora原理及实现浅析
  16. OSPF的特殊区域
  17. 《Effective Python》第1章 Pythonic 思维详解——始终用括号包裹单元素元组
  18. 基于LLM的6G空天地一体化网络自进化安全框架
  19. Typora输入文字卡顿的问题(原因过长上万字)
  20. LeetCode 热题 100 543. 二叉树的直径
  21. 国家统计局向多省份反馈统计督察意见
  22. 第一集|好饭不怕晚,折腰若如初见
  23. 国防部:赖清德歪曲二战历史,背叛民族令人不齿
  24. 病重老人被要求亲自取钱在农业银行门口去世?株洲警方介入
  25. 终于越过萨巴伦卡这座高山,郑钦文感谢自己的耐心和专注
  26. 哪种“网红减肥法”比较靠谱?医学专家和运动专家共同解答