中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ASP.NET Core應用程序部署至生產環(huán)境中(CentOS7)


來源:KAnts

鏈接:cnblogs.com/ants/p/5732337.html


環(huán)境說明


服務器系統(tǒng):CentOS 7.2.1511


相關工具:Xshel、Xftp


服務器軟件軟件:.netcore、nginx、supervisor、policycoreutils-python


準備你的ASP.NET Core應用程序


首先將你的應用程序以便攜的模式進行發(fā)布。


ps:這邊我使用一個空的Web項目來進行演示,因為本篇主要介紹生產環(huán)境的部署,與應用無關。


命令為:dotnet publish –c release


具體的可以看:擁抱.NET Core,如何開發(fā)跨平臺的應用并部署至Ubuntu運行,這篇博文介紹了以便攜與自宿主方式發(fā)布web應用。



確保這份發(fā)布應用可以在windows上運行,以減少后續(xù)的問題。



為什么不用自宿主的方式進行部署?


自宿主的發(fā)布方式進行部署會簡單很多,為什么生產環(huán)境要使用便攜的方式進行發(fā)布呢?


原因1:性能比便攜式的低(主)。


原因2:微軟給出的建議(次)。


口說無憑,有圖有真相。




參考地址:https://docs.microsoft.com/zh-cn/dotnet/articles/core/app-types

so,既然是用于生產環(huán)境的,當然我們要追求更高的性能。


安裝CentOS7


這個就不細說了,網(wǎng)上教程很多,這邊我使用了Hyper-V來虛擬化了CentOS7。


安裝.NET Core SDK for CentOS7。


sudo yum install libunwind libicu(安裝libicu依賴)



curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809131(下載sdk壓縮包)


sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet(解壓縮)

sudo ln -s /opt/dotnet/dotnet /usr/local/bin(創(chuàng)建鏈接)



輸入 dotnet –info 來查看是否安裝成功



如果可以執(zhí)行則表明.NET Core SDK安裝成功。


參考資料:https://www.microsoft.com/net/core#centos


部署ASP.NET Core應用程序


上傳之前發(fā)布的文件夾至/home/wwwroot/。


這邊我使用了Xftp進行文件的上傳。




檢查是否能夠運行


命令:dotnet /home/wwwroot/WebApplication1/WebApplication1.dll



如果出現(xiàn)這些信息則表示成功運行。


這時候我們是無法訪問到這個頁面的,這時候我們需要部署一個web容器來進行轉發(fā)。


配置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不需要連上去輸入命令)。


配置防火墻


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


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


測試nginx是否可以訪問。



配置nginx對ASP.NET Core應用的轉發(fā)


修改 /etc/nginx/conf.d/default.conf 文件。


將文件內容替換為


server {

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


上傳至CentOS進行覆蓋。


執(zhí)行:nginx –s reload 使其即時生效


運行ASP.NET Core應用程序



命令:dotnet /home/wwwroot/WebApplication1/WebApplication1.dll


這時候再次嘗試訪問。



想哭的心都有。。。經(jīng)過后續(xù)了解,這個問題是由于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)


目前存在三個問題


問題1:ASP.NET Core應用程序運行在shell之中,如果關閉shell則會發(fā)現(xiàn)ASP.NET Core應用被關閉,從而導致應用無法訪問,這種情況當然是我們不想遇到的,而且生產環(huán)境對這種情況是零容忍的。


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


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

為了解決這個問題,我們需要有一個程序來監(jiān)聽ASP.NET Core 應用程序的狀況。在應用程序停止運行的時候立即重新啟動。這邊我們用到了Supervisor這個工具,Supervisor使用Python開發(fā)的。


安裝Supervisor


yum install python-setuptools

easy_install supervisor


配置Supervisor


mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf


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



修改為



ps:如果服務已啟動,修改配置文件可用“supervisorctl reload”命令來使其生效

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


創(chuàng)建一個 WebApplication1.conf文件,內容大致如下


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


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

運行supervisord,查看是否生效


supervisord -c /etc/supervisor/supervisord.conf

ps -ef | grep WebApplication1



如果存在dotnet WebApplication1.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”


執(zhí)行命令:systemctl enable supervisord



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



測試



本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ASP.NET Core 快速入門(環(huán)境篇)
centos7 部署netcore
So Easy - 在Linux服務器上部署 .NET Core App
Django 部署(Nginx)
Centos7 + Python3.6 + Django + virtualenv + gunicorn + supervisor 環(huán)境配置詳解
Centos 7 .Net core后臺守護進程Supervisor教程
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服