Centos7 部署.net core2.1 詳細步驟


  1. 安裝dotnet sdk(添加產品秘鑰與yum源)

    添加yum源:sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

    開始安裝:sudo yum install dotnet-sdk-2.1

    如圖效果:一路y下去就可以了

      

    查看版本號,命令:dotnet --version

      

    以上dotnet sdk 已安裝成功!!!

 

  2.部署Asp.net core 項目

    上傳之前發布的文件夾至/home/wwwroot/。

    使用WinSCP上傳。

            

    用dotnet 命令運行項目(首先要cd到項目根路徑,在運行項目,否則會找不到靜態資源文件,路徑問題)

    cd /home/wwwroot/admin

    dotnet Apps.Admin.dll (請把Apps.Admin.dll改成你的項目入口)

            

      這樣項目就運行成功了。

      注:請注意紅框,如果只監聽http://localhost:8090,那只能本機訪問,外網是無法訪問的。

        要外網訪問,請添加http://[::]:8080的監聽,可以在項目中修改。

            

 

     3.配置nginx

      安裝nginx:

      curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

      rpm -ivh nginx.rpm

      yum install nginx

      安裝成功后

      輸入:systemctl start nginx 來啟動nginx。

      輸入:systemctl enable nginx 來設置nginx的開機啟動(linux宕機、重啟會自動運行nginx不需要連上去輸入命令)。

 

      4.配置防火牆

      命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(開放80端口)

      命令:systemctl restart firewalld(重啟防火牆以使配置即時生效)

      測試nginx是否可以訪問。

      

 

 

     5.配置nginx對ASP.NET Core應用的轉發

      修改 /etc/nginx/conf.d/default.conf 文件。(可使用 WinSCP 直接修改)

      將文件內容替換為

server {
    listen 80;
    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;
    }
}

      

      執行:nginx –s reload 使其即時生效

      再次運行ASP.NET Core應用程序  命令:dotnet Apps.Admin.dll

      

      這個問題是由於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

          

      此時就能成功訪問了,(服務器重啟后,會失效,需要重新配置)。

   6.配置守護服務(Supervisor)

    目前存在三個問題

問題1:ASP.NET Core應用程序運行在shell之中,如果關閉shell則會發現ASP.NET Core應用被關閉,

從而導致應用無法訪問,這種情況當然是我們不想遇到的,而且生產環境對這種情況是零容忍的。

問題2:如果ASP.NET Core進程意外終止那么需要人為連進shell進行再次啟動,往往這種操作都不夠及時。

問題3:如果服務器宕機或需要重啟我們則還是需要連入shell進行啟動。

為了解決這個問題,我們需要有一個程序來監聽ASP.NET Core 應用程序的狀況。在應用程序停止運行的時候立即重新啟動。

這邊我們用到了Supervisor這個工具,Supervisor使用Python開發的。

 

(一) 安裝Supervisor
yum install python-setuptools

easy_install supervisor

(二) 配置Supervisor
mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

(三)修改supervisord.conf文件,將文件尾部的配置

修改為

(注意 去掉封號,否則無法生效)

(四) 配置對ASP.NET Core應用的守護

  創建一個 Admin.conf文件,內容大致如下

 

[program:Admin]
command=dotnet Apps.Admin.dll ; 運行程序的命令
directory=/home/wwwroot/admin/ ; 命令執行的目錄
autorestart=true ; 程序意外退出是否自動重啟
stderr_logfile=/var/log/WebApplication1.err.log ; 錯誤日志文件
stdout_logfile=/var/log/WebApplication1.out.log ; 輸出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量
user=root ; 進程執行的用戶身份
stopsignal=INT

 

將文件拷貝至:“/etc/supervisor/conf.d/Admin.conf”下

(五) 運行supervisord,查看是否生效

supervisord -c /etc/supervisor/supervisord.conf

ps -ef | grep Admin

     如果存在dotnet Apps.Admin.dll 進程則代表運行成功,這時候在使用瀏覽器進行訪問。

    至此關於ASP.NET Core應用程序的守護即配置完成。

    (六)配置Supervisor開機啟動

      新建一個“supervisord.service”文件

      

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

 

將文件拷貝至:“/usr/lib/systemd/system/supervisord.service”

執行命令:systemctl enable supervisord

執行命令:systemctl is-enabled supervisord #來驗證是否為開機啟動

 

原文鏈接 : https://www.cnblogs.com/ants/p/5732337.html

在一些步驟上做了修改。

    

 


免責聲明!

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



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