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  ;标准输出日志

  

 

posted @ 2020-07-01 23:16  西瓜凳  阅读(1195)  评论(0编辑  收藏  举报