当前位置: 首页 > 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程序

    http://www.xdnf.cn/news/389305.html

    相关文章:

  1. 模块自动导入的小工具
  2. 使用go开发安卓程序
  3. 【漫话机器学习系列】252.零损失(0-1 Loss)
  4. 豆包:国内 web 辅助开发的领头羊
  5. 79.评论日记
  6. Linux防火墙
  7. Python模块与包以及工程文件管理
  8. 【Python训练营打卡】day22 @浙大疏锦行
  9. Linux-Ext系列文件系统
  10. AI Agent(10):个人助手应用
  11. Transformer Decoder-Only 参数量计算
  12. 【计算机视觉】OpenCV实战项目 :Image_Cartooning_Web_App:基于深度学习的图像卡通化
  13. 代理售票系统|基于Java+vue的代理售票系统(源码+数据库+文档)
  14. CVPR2023 | StyLess: 提升对抗样本的可迁移性
  15. MATLAB 矩阵与数组操作基础教程
  16. 量化交易系统开发经验分享--回测框架调研
  17. 股票回购、股票减持和股票解禁对股票价格影响的综合分析
  18. Synchronized与锁升级
  19. 经典工具箱、常见工具、软件合集【免费无广告】
  20. 【C/C++】跟我一起学_C++同步机制效率对比与优化策略
  21. 云计算中的虚拟化:成本节省、可扩展性与灾难恢复的完美结合
  22. mybatis执行sql过程
  23. 设计模式简述(十九)桥梁模式
  24. 红黑树(C++)
  25. 大模型对时尚穿搭体验的革新与重塑
  26. 强化学习入门:马尔科夫过程
  27. Linux系统中的Web服务器部署及优化
  28. 5java集合框架
  29. # Ollama 实现大模型调用
  30. 无侵入式弹窗体验_探索 Chrome 的 Close Watcher API