Asp.NetCore Linux上使用宝塔快速部署
准备一台Linux服务器,我的服务器是:阿里云ECS CentOS 8.4 64位
1.远程连接到服务器并安装宝塔面板,安装命令:yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh,官方安装文档 :https://www.bt.cn/bbs/thread-19376-1-1.html
2.安装完毕后面板上会显示面板端口,默认是8888跟着一串符号,密码也一起展示了,建议修改默认端口。注意:云服务器需要开放8888端口限制,否则可能无法访问。各厂商修改地址可百度,大致都是在当前云服务器的安全组
3.数据库等软件自行选择安装,这里重点说下.NetCore环境搭建
a)【非必要,部署时可以选择独立部署】打开【宝塔SSH终端】输入:sudo dnf install aspnetcore-runtime-5.0 安装运行时,这里安装了5.0的运行时,推荐安装asp.netcore的运行时,因为它同时包括 .NET 和 ASP.NET Core 运行时,官网教程:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos
b)到应用商店安装【Supervisor管理器】,这个软件类似windows服务,可使我们的程序开机自启、异常重启等操作,后续会用这个软件给我们的程序添加守护进程。更多详情可以百度看看。
c) 发布应用程序:
这是以前一个老项目,发布时目标框架选择你正在开发框架,部署模式独立,如果是框架依赖的话需要维护服务器上的版本,
然后将文件上传是服务器,我一般上传至:/www/wwwroot/项目文件夹
d) 点击宝塔面板-网站,添加站点
点击站点右侧的设置,选择配置文件,修改如下
server
{
listen 80;//监听端口
server_name <域名>;//注意域名
index index.html baidu_verify_9TfbAT6wbE.html;
root /www/wwwroot/<dire>;//路径
location / {
proxy_pass http://localhost:5002;//注意端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-00.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/<dire>.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log off;
access_log /dev/null;
proxy_pass http://localhost:5002;//注意端口
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log off;
access_log /dev/null;
proxy_pass http://localhost:5002;//注意端口
}
access_log /dev/null;
error_log /www/wwwlogs/<dire>
注意:asp.netcore 默认启动端口是5000,如果多个项目可能会造成启动时报端口占用的错,可以:
1.在【appsettings.json】中添加“urls”:"https://localhost:5002"
2.启动项目是添加 --urls https://localhost:5002
任选一种方式
e) 重点来了 打开前面安装好的【Supervisor管理器】,添加守护进程
如果这里启动失败了,请检查以下地方:
1.启动命令是否正确 dotnet 项目名.dll
2.前往启动目录日志查排查是否是程序自身的问题 ,比如数据库连接字符串不对啊什么的
3.在【Supervisor管理器】-【子配置文件】找到【stderr_logfile】的日志文件查看原因后排查
不出意外的话,应该是要出意外了,估计一把过不了,按照流程在走一遍看看哪个地方错了。瑞思拜!