在CentOS 7上部署ASP.NET Core 2.0 Web應(yīng)用程序

在CentOS 7上部署ASP.NET Core 2.0 Web應(yīng)用程序

說(shuō)明:
??在Windows平臺(tái)上用Visual Studio 2017編寫ASP.NET Core 2.0的Web MVC項(xiàng)目腕让,并用VS 2017發(fā)布項(xiàng)目滥玷。
??在虛擬機(jī)上安裝CentOS 7系統(tǒng),將Web項(xiàng)目部署在Cent OS 7上碱妆。
??使用Nginx(服務(wù)器和反向代理服務(wù)器)蜘拉。
??使用Supervisor進(jìn)行進(jìn)程管理嘹裂。

目錄

  • 部署環(huán)境
  • 發(fā)布ASP.NET Core 2.0程序
  • 安裝CentOS 7
  • 安裝.NET Core SDK
  • 在CentOS 7上部署程序
  • 配置Nginx
  • 配置進(jìn)程守護(hù)(Supervisor)

部署環(huán)境

??系統(tǒng):CentOS 7
??相關(guān)軟件和工具:.NET Core SDK市框、Nginx、Supervisor佑笋、policycoreutils-python

發(fā)布ASP.NET Core 2.0程序

??發(fā)布方式有兩種翼闹,一種是使用Visual Studio 2017上的發(fā)布,另一種是在控制臺(tái)使用命令方式在項(xiàng)目文件夾下發(fā)布蒋纬,即dotnet publish(發(fā)布)命令

安裝CentOS 7

??安裝方式很多猎荠,比如:https://blog.csdn.net/hui_2016/article/details/68927487

安裝.NET Core SDK

??這里丟出一個(gè)官方鏈接:https://www.microsoft.com/net/learn/get-started/linux/centos
??要是不想看鏈接,看下面:
??照著做:

    sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
    
    sudo yum update
    sudo yum install libunwind libicu
    sudo yum install dotnet-sdk-2.1.200 //最好選最新版本

??做完后可以輸入dotnet --info看一下是否安裝成功颠锉。

在CentOS 7上部署程序

??弄完之后就是準(zhǔn)備在CentOS 7上部署Webc程序了法牲。
??先將發(fā)布后的文件夾放到CentOS 7下史汗,檢查一下能否運(yùn)行琼掠,使用dotnet命令。
??如果成功了停撞,就繼續(xù)瓷蛙。此時(shí)悼瓮,無(wú)法訪問(wèn)這個(gè)Web程序的頁(yè)面,需要部署一個(gè)Web容器進(jìn)行轉(zhuǎn)發(fā)艰猬,就是Nginx横堡。

配置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(啟動(dòng)Nginx)
    systemctl enable nginx (設(shè)置nginx的開機(jī)啟動(dòng))

??如果需要冠桃,可以配置防火墻命贴。

??命令:firewall-cmd --zone=public --add-port=80/tcp –permanent(開放80端口)
??命令:systemctl restart firewalld(重啟防火墻以使配置即時(shí)生效)
??輸入ip地址測(cè)試Nginx是否可以訪問(wèn)。

??配置Nginx對(duì)ASP.NET Core應(yīng)用的轉(zhuǎn)發(fā):

??修改 /etc/nginx/conf.d/default.conf 文件食听。(如果對(duì)文件沒(méi)有修改權(quán)限胸蛛,就用chmod命令修改文件權(quán)限)
??根據(jù)需要修改文件內(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;
     }
 }

??執(zhí)行nginx –s reload 命令使配置生效。

??使用dotnet命令啟動(dòng)Web程序樱报。
??在瀏覽器輸入ip地址訪問(wèn)葬项,如果訪問(wèn)成功就表示已經(jīng)在CentOS 7上部署成功。

??如果訪問(wèn)顯示“502 Bad Gateway”,可能是由于SELinux保護(hù)機(jī)制所導(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

??成功,部署完成盗飒。

配置進(jìn)程守護(hù)(Supervisor)

??在CentOS 7上嚷量,如果關(guān)閉終端,開啟的進(jìn)程就會(huì)關(guān)閉逆趣,導(dǎo)致程序無(wú)法訪問(wèn)津肛。
??為了解決這個(gè)問(wèn)題,就用到了Supervisor這個(gè)工具汗贫,Supervisor使用Python開發(fā)的身坐,用于監(jiān)聽ASP.NET Core 應(yīng)用程序的狀況。在應(yīng)用程序停止運(yùn)行的時(shí)候立即重新啟動(dòng)落包。

??Supervisor(http://supervisord.org/)是用Python開發(fā)的一個(gè)client/server服務(wù)部蛇,是Linux/Unix系統(tǒng)下的一個(gè)進(jìn)程管理工具,不支持Windows系統(tǒng)咐蝇。它可以很方便的監(jiān)聽涯鲁、啟動(dòng)、停止有序、重啟一個(gè)或多個(gè)進(jìn)程抹腿。用Supervisor管理的進(jìn)程,當(dāng)一個(gè)進(jìn)程意外被殺死旭寿,supervisort監(jiān)聽到進(jìn)程死后警绩,會(huì)自動(dòng)將它重新拉起,很方便的做到進(jìn)程自動(dòng)恢復(fù)的功能盅称,不再需要自己寫shell腳本來(lái)控制肩祥。

??安裝Supervisor(...我在安裝的時(shí)候碰到一些問(wèn)題后室,弄了很久才成功安裝。)
??這里丟出兩個(gè)鏈接:https://blog.csdn.net/bbg221/article/details/78715734
??https://blog.csdn.net/fenglailea/article/details/77146248

1混狠、安裝Python包管理工具(easy_install)
??easy_install是setuptools包里帶的一個(gè)命令岸霹,使用easy_install實(shí)際上是在調(diào)用setuptools來(lái)完成安裝模塊的工作,所以安裝setuptools即可。
??wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python 或 yum install python-setuptools

2将饺、安裝supervisor
??easy_install supervisor 或 yum install supervisor

3贡避、配置Supervisor
??mkdir /etc/supervisor
??echo_supervisord_conf > /etc/supervisor/supervisord.conf (注意文件權(quán)限,沒(méi)有讀寫權(quán)限必出錯(cuò))
??修改supervisord.conf文件予弧,一般修改最后兩行就行贸桶。去掉兩行前面的分號(hào),把files后改成conf.d/*.conf
??如果服務(wù)已經(jīng)啟動(dòng)桌肴,修改配置文件可用“supervisorctl reload”命令來(lái)使其生效皇筛。

4、配置對(duì)ASP.NET Core應(yīng)用的守護(hù)
??創(chuàng)建一個(gè) WebApplication1.conf文件坠七,內(nèi)容大概如下:(根據(jù)需要修改)

        [program:WebApplication1]
        command=dotnet WebApplication1.dll ; 運(yùn)行程序的命令
        directory=/home/wwwroot/WebApplication1/ ; 命令執(zhí)行的目錄
        autorestart=true ; 程序意外退出是否自動(dòng)重啟
        stderr_logfile=/var/log/WebApplication1.err.log ; 錯(cuò)誤日志文件(如果文件不存在就創(chuàng)建一個(gè))
        stdout_logfile=/var/log/WebApplication1.out.log ; 輸出日志文件
        environment=ASPNETCORE_ENVIRONMENT=Production ; 進(jìn)程環(huán)境變量
        user=root ; 進(jìn)程執(zhí)行的用戶身份
        stopsignal=INT

??然后水醋,將文件拷貝到:“/etc/supervisor/conf.d/WebApplication1.conf”下
??運(yùn)行supervisord,查看是否生效。命令如下:

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep WebApplication1

??如果存在dotnet WebApplication1.dll 進(jìn)程則代表運(yùn)行成功彪置,這時(shí)候在使用瀏覽器進(jìn)行訪問(wèn)拄踪。
??如果訪問(wèn)成功,關(guān)于ASP.NET Core應(yīng)用程序的守護(hù)就配置完成了拳魁。
??再將Supervisor設(shè)為開機(jī)自啟動(dòng)惶桐,就完了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末潘懊,一起剝皮案震驚了整個(gè)濱河市姚糊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌授舟,老刑警劉巖救恨,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異释树,居然都是意外死亡肠槽,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門奢啥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秸仙,“玉大人,你說(shuō)我怎么就攤上這事桩盲〖偶停” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵正驻,是天一觀的道長(zhǎng)弊攘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)姑曙,這世上最難降的妖魔是什么襟交? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮伤靠,結(jié)果婚禮上捣域,老公的妹妹穿的比我還像新娘。我一直安慰自己宴合,他們只是感情好焕梅,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卦洽,像睡著了一般贞言。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阀蒂,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天该窗,我揣著相機(jī)與錄音,去河邊找鬼蚤霞。 笑死酗失,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昧绣。 我是一名探鬼主播规肴,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼夜畴!你這毒婦竟也來(lái)了拖刃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤贪绘,失蹤者是張志新(化名)和其女友劉穎序调,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兔簇,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡发绢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垄琐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边酒。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖狸窘,靈堂內(nèi)的尸體忽然破棺而出墩朦,到底是詐尸還是另有隱情,我是刑警寧澤翻擒,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布氓涣,位于F島的核電站牛哺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏劳吠。R本人自食惡果不足惜引润,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痒玩。 院中可真熱鬧淳附,春花似錦、人聲如沸蠢古。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)衫生。三九已至措拇,卻和暖如春助隧,著一層夾襖步出監(jiān)牢的瞬間乓旗,已是汗流浹背方淤。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工润樱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留单雾,地道東北人践啄。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓浇雹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親屿讽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昭灵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容