91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

發布時間:2021-09-16 11:41:23 來源:億速云 閱讀:169 作者:柒染 欄目:開發技術

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

這段時間在使用Rabbit RPC重構公司的一套系統(微信相關),而最近相關檢驗(邏輯測試、壓力測試)已經完成,接近部署至線上生產環境從而搗鼓了ASP.NET Core應用程序在CentOS上的部署方案,今天就跟大家分享一下如何將ASP.NET Core應用程序以生產的標準部署在CentOS上。

環境說明

服務器系統:CentOS 7.2.1511

相關工具:Xshel、Xftp

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

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

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

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

命令為:

dotnet publish –c release

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

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

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

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

口說無憑,有圖有真相。

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

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

安裝CentOS7

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

安裝.NET Core SDK for CentOS7。

sudo yum install libunwind libicu

(安裝libicu依賴)

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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(創建鏈接)

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

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

部署ASP.NET Core應用程序

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

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

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

檢查是否能夠運行

命令:

dotnet /home/wwwroot/WebApplication1/WebApplication1.dll

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

如果出現這些信息則表示成功運行。

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

配置Nginx

安裝Nginx

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

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

rpm -ivh nginx.rpm

yum install nginx

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

安裝成功!

輸入:systemctl start nginx 來啟動nginx。

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

配置防火墻

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

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

測試nginx是否可以訪問。

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

修改 /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進行覆蓋。

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

運行ASP.NET Core應用程序

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

命令:

dotnet /home/wwwroot/WebApplication1/WebApplication1.dll

這時候再次嘗試訪問。

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

再次嘗試訪問。

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

至此基本完成了部署。

配置守護服務(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文件,將文件尾部的配置

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

修改為

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

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

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

[program:WebApplication1]
command=dotnet WebApplication1.dll ; 運行程序的命令
directory=/home/wwwroot/WebApplication1/ ; 命令執行的目錄
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/WebApplication1.conf”下

運行supervisord,查看是否生效

supervisord -c /etc/supervisor/supervisord.conf

ps -ef | grep WebApplication1

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

至此關于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

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

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

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

測試

在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中

看完上述內容,你們掌握在CentOS7中如何將ASP.NETCore應用程序部署至生產環境中的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

油尖旺区| 桦南县| 太康县| 成都市| 漳州市| 龙川县| 桃园县| 灵丘县| 南陵县| 和林格尔县| 靖边县| 当雄县| 太白县| 北碚区| 通许县| 东山县| 邳州市| 镇原县| 澎湖县| 崇明县| 平安县| 简阳市| 莱州市| 衢州市| 铜陵市| 布尔津县| 获嘉县| 金秀| 金沙县| 普陀区| 罗定市| 聂拉木县| 阳原县| 化州市| 黎平县| 江川县| 静乐县| 清苑县| 无极县| 新和县| 湟中县|