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

說在前面

在閱讀本文以前,您必須對Linux中涉及的常見命令有必定了解,本文側重實戰,不會對相關概念詳述。html

注:本文實驗環境是 Oracle VM VirtualBox虛擬機, CentOS-7-x86_64-Minimal-1908系統 。python

安裝 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 的白名單。接下來咱們經過一些命令解決這個問題。linux

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 配置文件的目錄nginx

    • mkdir /etc/supervisor
  • 經過 echo_supervisord_conf 指令(用來生成初始配置文件,文件名能夠自定義)來初始化一個配置文件:shell

    • echo_supervisord_conf > /etc/supervisor/supervisord.conf
  • 經過 vim 命令修改建立好的 supervisord.conf 配置信息,或有視圖界面的直接打開編輯vim

    • vi /etc/supervisor/supervisord.conf
  • 文件內容末尾找到如下內容進行修改centos

    ;[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,添加如下配置內容(分號後面的是註釋,注意看註釋,省得配置錯了)tcp

    [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.confcentos7

開機啓動 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

參考教程

相關文章
相關標籤/搜索