.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

參考教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM