.NETCore3.0应用程序部署到CentOS7

说在前面

在阅读本文之前,您必须对Linux中涉及的常见命令有一定了解,本文侧重实战,不会对相关概念详述。

注:本文实验环境是 Oracle VM VirtualBox虚拟机, CentOS-7-x86_64-Minimal-1908系统 。

安装 CentOS7 Minimal

  • 可自行 Google 或百度

配置 ip,通过 xshell 连接

  • vi /etc/sysconfig/network-scripts/ifcfg-eno
  • ONBOOT=no 修改为 ONBOOT=yes
  • 重启网络 sudo service network restart
  • 将网卡的连接方式修改为桥接网卡
  • 输入命令 ip addr 查看 ip

安装.NETCore sdk

创建.NETCore 项目,并上传至 CentOS 中

安装配置 Nginx 进行反向代理

安装 Nginx

  • 使用如下命令安装 CentOS 的 EPEL 仓库:yum install epel-release
  • 使用如下命令安装 Nginx:yum install nginx
  • Nginx 安装完成后, 系统并不会启动 Nginx, 使用如下命令启动 Nginx: systemctl start nginx
  • 使用如下命令设置系统启动后, 默认启动 Nginx: systemctl enable nginx

添加 nginx 配置文件

server {
    listen 81;
    location / {
        proxy_pass http://localhost:5000;
        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;
    }
}

防火墙相关操作

systemctl start firewalld                                   //启动防火墙
systemctl status firewalld                                  //查看防火墙状态
firewall-cmd  --permanent --zone=public --add-service=http  //允许HTTP
firewall-cmd  --permanent --zone=public --add-service=https //允许HTTPS
firewall-cmd  --reload                                      //重新加载防火墙
firewall-cmd --zone=public --add-port=80/tcp --permanent    //开启80端口
firewall-cmd --list-ports                                   //查看已经开放的端口

访问 502

原因是由于 SELinux 保护机制所导致,我们需要将 nginx 添加至 SELinux 的白名单。接下来我们通过一些命令解决这个问题。

yum install policycoreutils-python
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
sudo semodule -i mynginx.pp

配置守护进程

安装 Supervisor

yum install python-setuptools
easy_install supervisor

配置 Supervisor

  • 先创建 Supervisor 配置文件的目录

    • mkdir /etc/supervisor
  • 通过 echo_supervisord_conf 指令(用来生成初始配置文件,文件名可以自定义)来初始化一个配置文件:

    • echo_supervisord_conf > /etc/supervisor/supervisord.conf
  • 通过 vim 命令修改创建好的 supervisord.conf 配置信息,或有视图界面的直接打开编辑

    • vi /etc/supervisor/supervisord.conf
  • 文件内容末尾找到以下内容进行修改

    ;[include]
    ;files = relative/directory/*.ini
    
    [include]
    files = /etc/supervisor/conf.d/*.conf
    
  • 创建目录,添加配置文件

    mkdir /etc/supervisor/conf.d
    cd /etc/supervisor/conf.d
    touch netcore.conf
    
  • 通过 vi 指令或视图界面编辑 netcore.conf,添加以下配置内容(分号后面的是注释,注意看注释,免得配置错了)

    [program:NetCoreDemo]                                         ;自定义进程名称, 根据自己喜好命名
    command=dotnet NetCoreDemo.dll                          ;程序启动命令 使用dotnet 命令(dll是你的项目文件)
    directory=/root/Documents/NETCore                         ;命令执行的目录 你.NET Core 程序存放目录
    autostart=true                                            ;在Supervisord启动时,程序是否启动
    autorestart=true                                          ;程序退出后自动重启
    startretries=5                                            ;启动失败自动重试次数,默认是3
    startsecs=1                                               ;自动重启间隔
    user=root                                                 ;设置启动进程的用户,默认是root
    priority=999                                              ;进程启动优先级,默认999,值小的优先启动
    stderr_logfile=/etc/supervisor/log/GDSMPlateForm.err.log  ;标准错误日志 路径可以自定义,文件夹要建好
    stdout_logfile=/etc/supervisor/log/GDSMPlateForm.out.log  ;标准输出日志 路径可以自定义,文件夹要建好
    environment=ASPNETCORE_ENVIRONMENT=Production             ;进程环境变量
    stopsignal=INT                                            ;请求停止时用来杀死程序的信号
    
  • 启动 supervisor 服务 supervisord -c /etc/supervisor/supervisord.conf

开机启动 Supervisor 服务

  • 1.进入/usr/lib/systemd/system/目录 cd /usr/lib/systemd/system/

  • 2.创建自定义配置文件 supervisord.service touch supervisord.service

  • 3.编辑 supervisord.service 文件,有视图界面就直接打开编辑 vi supervisord.service

  • 4.添加以下内容,保存退出

    [Unit]
    Description=Supervisor daemon
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
    ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
    ExecReload=/usr/bin/supervisorctl $OPTIONS reload
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    
    [Install]
    WantedBy=multi-user.target
    
  • 5.设置开机启动 systemctl enable supervisord.service

  • 6.检测是否配置成功 systemctl is-enabled supervisord

参考教程

原文地址:https://www.cnblogs.com/dotnetlibao/p/11770027.html