欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解將ASP.NET Core應(yīng)用程序部署至生產(chǎn)環(huán)境中(CentOS7)

 更新時間:2016年12月14日 10:21:02   作者:KAnts  
這篇文章主要介紹了詳解將ASP.NET Core應(yīng)用程序部署至生產(chǎn)環(huán)境中(CentOS7),具有一定的參考價值,有需要的可以了解一下。

將ASP.NET Core應(yīng)用程序部署至生產(chǎn)環(huán)境中(CentOS7)

閱讀目錄

  • 環(huán)境說明
  • 準備你的ASP.NET Core應(yīng)用程序
  • 安裝CentOS7
  • 安裝.NET Core SDK for CentOS7。
  • 部署ASP.NET Core應(yīng)用程序
  • 配置Nginx
  • 配置守護服務(wù)(Supervisor)

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

環(huán)境說明

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

相關(guān)工具:Xshel、Xftp

服務(wù)器軟件軟件:.netcore、nginx、supervisor、policycoreutils-python

準備你的ASP.NET Core應(yīng)用程序

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

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

命令為:

dotnet publish –c release

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

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

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

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

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

口說無憑,有圖有真相。

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

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

安裝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應(yīng)用程序

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

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

檢查是否能夠運行

命令:

dotnet /home/wwwroot/WebApplication1/WebApplication1.dll

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

這時候我們是無法訪問到這個頁面的,這時候我們需要部署一個web容器來進行轉(zhuǎn)發(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 來設(shè)置nginx的開機啟動(linux宕機、重啟會自動運行nginx不需要連上去輸入命令)。

配置防火墻

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

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

測試nginx是否可以訪問。

配置nginx對ASP.NET Core應(yīng)用的轉(zhuǎn)發(fā)

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

將文件內(nèi)容替換為

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應(yīng)用程序

命令:

dotnet /home/wwwroot/WebApplication1/WebApplication1.dll

這時候再次嘗試訪問。

想哭的心都有。。。經(jīng)過后續(xù)了解,這個問題是由于SELinux保護機制所導(dǎo)致,我們需要將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

再次嘗試訪問。

至此基本完成了部署。

配置守護服務(wù)(Supervisor)

目前存在三個問題

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

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

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

為了解決這個問題,我們需要有一個程序來監(jiān)聽ASP.NET Core 應(yīng)用程序的狀況。在應(yīng)用程序停止運行的時候立即重新啟動。這邊我們用到了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:如果服務(wù)已啟動,修改配置文件可用“supervisorctl reload”命令來使其生效

配置對ASP.NET Core應(yīng)用的守護

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

[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 進程則代表運行成功,這時候在使用瀏覽器進行訪問。

至此關(guān)于ASP.NET Core應(yīng)用程序的守護即配置完成。

配置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 #來驗證是否為開機啟動

測試

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • asp.net表單提交時防重復(fù)提交并執(zhí)行前臺的JS驗證

    asp.net表單提交時防重復(fù)提交并執(zhí)行前臺的JS驗證

    今天遇到這樣的一個情況,就是用戶重復(fù)提交。當(dāng)然這個不能怪用戶,只能怪.NET或者服務(wù)器反應(yīng)遲鈍,下面有個不錯的教程,大家可以參考下
    2013-10-10
  • asp.net System.Net.Mail 發(fā)送郵件

    asp.net System.Net.Mail 發(fā)送郵件

    一個師弟發(fā)了段代碼給我,說調(diào)試了很久發(fā)送郵件都沒有成功。自己使用過程中,也發(fā)現(xiàn)了很多問題,但最簡單的問題是“發(fā)件方”地址根本不支持smtp發(fā)送郵件。
    2009-04-04
  • .net core webapi 大文件上傳到wwwroot文件夾的操作代碼

    .net core webapi 大文件上傳到wwwroot文件夾的操作代碼

    這篇文章主要介紹了.net core webapi 大文件上傳到wwwroot文件夾的操作代碼,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • .NET中的Husky工具及安裝方式

    .NET中的Husky工具及安裝方式

    Husky.Net它支持兩種安裝方式,分別是全局安裝和本地安裝,接下來通過本文給大家介紹.NET中的Husky工具安裝過程,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • ASP.NET?MVC創(chuàng)建XML文件并實現(xiàn)元素增刪改

    ASP.NET?MVC創(chuàng)建XML文件并實現(xiàn)元素增刪改

    這篇文章介紹了ASP.NET?MVC創(chuàng)建XML文件并實現(xiàn)元素增刪改的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • asp.net 通過httpModule計算頁面的執(zhí)行時間

    asp.net 通過httpModule計算頁面的執(zhí)行時間

    有時候我們想檢測一下網(wǎng)頁的執(zhí)行效率。記錄下開始請求時的時間和頁面執(zhí)行完畢后的時間點,這段時間差就是頁面的執(zhí)行時間了。要實現(xiàn)這個功能,通過HttpModule來實現(xiàn)是最方便而且準確的。
    2011-02-02
  • 在ASP.NET中用存儲過程執(zhí)行SQL語句

    在ASP.NET中用存儲過程執(zhí)行SQL語句

    存儲過程:是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中。用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。存儲過程是數(shù)據(jù)庫中的一個重要對象,任何一個設(shè)計良好的數(shù)據(jù)庫應(yīng)用程序都應(yīng)該用到存儲過程。
    2010-04-04
  • ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法

    ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法

    這篇文章主要介紹了ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • asp.net開發(fā)微信公眾平臺之驗證消息的真實性

    asp.net開發(fā)微信公眾平臺之驗證消息的真實性

    這篇文章主要介紹了asp.net開發(fā)微信公眾平臺之驗證消息的真實性的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • asp.net實現(xiàn)生成靜態(tài)頁并添加鏈接的方法

    asp.net實現(xiàn)生成靜態(tài)頁并添加鏈接的方法

    這篇文章主要介紹了asp.net實現(xiàn)生成靜態(tài)頁并添加鏈接的方法,非常實用的功能,需要的朋友可以參考下
    2014-07-07

最新評論