asp.net core 3.1部署到centos7.3服务器
1 查看服务器.net core环境信息
连接到服务器,输入 dotnet --info 查看服务器dotnet core环境信息
这是一台没有.net core环境的服务器,需要安装
2 安装.net core环境
如果服务器只是用来运行.net core程序,则只需安装.net core runtime即可;如果要做开发和编译工作,则需要安装.net core sdk
.net core sdk包含了.net core runtime,所以这里就直接安装.net core skd了
官方安装文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos
a 执行命令 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm 将Microsoft包签名密钥添加到受信任密钥列表,并添加Microsoft包存储库
b 执行命令 sudo yum install dotnet-sdk-3.1 安装.net core 3.1 sdk
安装结束后,再次输入 dotnet --info 查看环境信息
3 创建asp.net core 3.1项目,并发布到文件夹
4 在centos服务器上创建文件夹,并拷贝上一步发布的好文件
5 通过centos终端,进入发布文件所在文件夹,执行命令 dotnet 项目名.dll
出现异常信息“Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.”
这个问题Ubuntu上没出现过,centos为什么有这个问题暂时不纠结了,既然默认的5000端口用不了,那就换个喽
指定端口到8090,重新发布并运行,这次启动成功了
6 通过外网地址访问
7 添加nginx做反向代理
a 使用命令 sudo yum install epel-release
添加nginx包存储库
b 使用命令 sudo yum install nginx
安装nginx
c 使用命令 sudo systemctl start nginx
启动nginx
d 使用命令 ps -ef |grep nginx
验证nginx是否启动成功
e 可以使用命令 sudo systemctl enable nginx
设置nginx开机启动
f 使用命令 sudo systemctl start nginx重启nginx
8 配置nginx,设置代理端口
访问成功
9 为什么要添加守护进程,有以下原因
a asp.net core程序运行在shell中,shell关闭会导致该web应用关闭
b 应用程序意外终止的话需要在shell里重新启动
c 服务器宕机或者意外重启的话,需要重新启动shell,然后重新启动web程序
10 使用守护进程supervisor
1)相关命令
a 使用命令 yum install epel-release 和 yum install supervisor 安装supervisor
b 使用命令 systemctl start supervisord.service
启动服务
c 使用命令 systemctl status supervisord.service 查看服务状态
d 设置开机启动 systemctl enable supervisord.service
e 重启 supervisorctl reload
2)文件配置
a 在 /etc/supervisord.d
创建文件 WebApplication1.ini
b 配置 WebApplication1.ini 如下
自此,asp.net core部署至centos服务器结束。
12 备注
1) nginx.conf配置
server {
listen 8081;
location / {
proxy_pass http://localhost:8090;
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;
}
}
1) WebApplication1.ini配置
[program:WebApplication1] ;程序的名称
command = dotnet WebApplication1.dll ;执行的命令
directory = /var/WebApplication/ ;命令执行的目录
environment = ASPNETCORE__ENVIRONMENT=Production ;环境变量
user = root ;执行进程的用户
stopsignal = INT
autostart = true ;是否自动启动
autorestart = true ;是否自动重启
startsecs = 1 ;自动重启间隔
stderr_logfile = /var/log/WebApplication1.err.log ;标准错误日志
stdout_logfile = /var/log/WebApplication1.out.log ;标准输出日志