一、服务器配置
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)运行程序
进入到程序发布的目录,并执行:
bash
dotnet your-app.dll
检查运行结果,查看日志,确认程序能正常运行。若程序正常运行,则程序日志未显示错误,且数据库会自动迁移(前提:程序配置数据库自动迁移处理)。
5、nginx反向代理配置
安装完毕 Nginx后,请修改 /etc/nginx/nginx.conf
配置文件。


在Ubuntu服务器上的Nginx配置目录中,图中所画的红色框内的几个文件夹有各自的用途:
- conf.d/: 这个文件夹用来存储额外的Nginx配置片段。在这个文件夹里的每个文件都会被自动加载并入主配置文件nginx.conf中。这样可以方便地将不同的配置项分离出来,使得主配置文件更加简洁易读。
- modules-available/: 这个文件夹用于存放可用的Nginx模块。在这里面的文件通常是模块的配置文件,当需要启用某个模块时,可以将相应的文件符号链接到modules-enabled文件夹中。
- modules-enabled/: 这个文件夹用于存放启用的Nginx模块的符号链接。只有在这个文件夹中的模块才会被Nginx加载和使用。通过这种方式,可以灵活地控制哪些模块会被启用。
- sites-available/: 这个文件夹用于存放所有的虚拟主机配置文件。每个文件代表一个网站的配置信息。这个文件夹本身并不直接参与Nginx的运行,而是作为一个配置仓库。
- sites-enabled/: 这个文件夹也用于存放虚拟主机配置文件的符号链接。与modules-enabled类似,只有在这个文件夹中的配置文件才会被Nginx加载和使用。通过这种方式,可以方便地管理和切换不同网站的配置。
要在Ubuntu服务器上使用Nginx部署一个网站并配置反向代理,你通常会在以下文件夹中进行操作:
- /etc/nginx/sites-available/: 在这个文件夹中,你会创建一个新的配置文件来定义你的网站设置和反向代理规则。这个文件通常以你的域名命名,例如 example.com.conf。
以下是在/etc/nginx/sites-available/文件夹下配置新站点和反向代理的基本步骤:
(1)创建一个新的配置文件:
bash
sudo nano /etc/nginx/sites-available/example.com.conf
(2)在打开的编辑器中,添加以下配置内容作为示例:
bash
server {
listen 80; # 或者你想要监听的端口,例如 443 用于 HTTPS
server_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加载这个配置:
bash
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
(5)测试Nginx配置文件是否有语法错误:
bash
sudo nginx -t
(6)如果配置测试成功,重新加载Nginx以应用新的配置:
bash
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
bash
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx # 如果你使用的是Nginx
(2)申请证书
安装完Certbot后,你可以使用以下命令来申请证书。以下命令以Nginx为例。
申请具体域名证书
bash
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
这个命令会启动Certbot的Nginx插件,自动配置Nginx以使用HTTPS,并申请证书。你需要按照提示输入你的邮箱地址(用于接收续订和安全通知),并同意Let's Encrypt的条款。
申请泛域名证书
bash
sudo certbot --nginx -d *.wzlinux.com
出现如下图所示时,需要做一条 TXT 的 DNS 解析。

TXT 的 DNS 解析,以啊里云服务器为例:
打开啊里云域名解析界面,添另一条TXT解析,如下图:

然后按"Enter"键继续。
(3)配置nginx
我们这里以 nginx 服务为例,配置证书,nginx 的配置文件为下:
bash
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作业为例):
bash
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程序
bash
ps -ef | grep dotnet #查看
kill -s 9 PID #关掉程序进行
#等待systemd自动重启.netcore程序