ASP.Net Core 應用 Linux 安裝部署

在 .net core 發(fā)布之后另假,基于 .Net 開發(fā)的 Web 應用(AspNet.Core)可以平滑的部署到Linux系統(tǒng)上何之,拋棄了坑爹的IIS后岸夯,應用的穩(wěn)定性也大大提升读第。這里總結(jié)一下如何在 Linux 上部署 .net core 開發(fā)的應用胶哲。

總的來說昧诱,發(fā)布 ASP.Net Core? 應用晓淀,一般需要以下步驟:

1)從Visual Stuido中 發(fā)布(Publish)到服務器的某個目錄
2)設置進程管理
3)設置反向代理

1、服務器運行環(huán)境設置

以下部署盏档,基于CentOS 7.2 完成凶掰,其他系統(tǒng)可參考?https://www.microsoft.com/net/learn/get-started-with-dotnet-tutorial

按如圖位置選擇,可查看具體步驟蜈亩,本文中都使用 CentOS锄俄,其他系統(tǒng)可自行選擇。

圖 官方安裝指南

具體步驟:

? ? 1)進入Centos系統(tǒng)勺拣,命令行下執(zhí)行下面的命令奶赠,加入 dotnet 產(chǎn)品源

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

? ? 2)安裝 .net SDK 或 runtime

sudo yum updatesudo
yum install dotnet-sdk-2.1?

# 如果只需要運行環(huán)境,可不用安裝 dotnet-sdk-2.1药有,直接安裝 dotnet-runtime-2.1即可
yum install dotnet-runtime-2.1??

? ? 3)測試安裝毅戈,輸入下面的命令查看 版本信息

dotnet --version


2、安裝 Nginx

ASP.NET Core 應用是一個控制臺程序愤惰,需要用到一個服務管理軟件來進行管理苇经,在服務器啟動時啟動應用,在崩潰時重啟該應用宦言。ASP.NET Core 應用常見部署環(huán)境有以下:

? ? Window:IIS扇单,Windows Service
? ? Linux: Nginx, Apache

本例中,我們采用Nginx進行反向代理奠旺。

CENTOS 7.2 中安裝Nginx 可使用以下命令

yum install nginx

3蜘澜、配置 Systemd 服務

Systemd 是 Linux 系統(tǒng)工具,用來啟動守護進程响疚,已成為大多數(shù)發(fā)行版的標準配置鄙信。CentOS上可用Systemd來進行服務管理。

具體步驟

1)上傳 ASP.NET Core應用到指定目錄忿晕。本例中装诡,將應用部署到 /data/www/website,并將該目錄owner設置為nginx:nginx

cd /data/www
chown -R nginx:nginx /data/www/website

2)假設應用啟動文件為? WebApplication1.dll,創(chuàng)建 app1.service 配置文件

cd /etc/systemd/system
vim app1.service

app1.service 文件內(nèi)容如下

[Unit]
Description=WebApplication1

[Service]
WorkingDirectory=/data/www/website?
ExecStart=/usr/bin/dotnet /data/www/website/WebApplication1.dll
Restart=always
RestartSec=30
SyslogIdentifier=Web Application 1
User=nginx
Environment=ASPNETCORE_ENVIROMENT=Production
Environment=ASPNETCORE_URLS=http://127.0.0.1:5002

[Install]
WantedBy=multi-user.target

其中粗斜體內(nèi)容鸦采,可根據(jù)實際情況進行修改

3)啟動該服務

systemctl enable app1.service
systemctl start app1.service

4)查看服務狀態(tài)

systemctl status app1.service

如果顯示為 active=running 宾巍,則表明服務已正確啟動,如果顯示錯誤渔伯,可使用 journalctl -xe 命令查看完整的錯誤日志進行排查

4顶霞、配置Nginx

在第三步,我們配置的APP的服務 咱旱,是在 127.0.0.1 的 5002 端口上監(jiān)聽确丢,外網(wǎng)是無法訪問的,這里我們需要用到 nginx 進行反向代理吐限。反向代理nginx的介紹鲜侥,就不在這里贅述了。

ASP.NET Core 默認是用?Kestrel 來運行服務诸典,Kestrel 是一個精簡的http服務描函,有較高的性能,但多個服務無法共享同一個IP和端口狐粱,不能通過Http中的Host來區(qū)分不同的服務舀寓,因此這時候就需要用到反向代理服務。

使用反向代理服務肌蜻,可以減少應用對外暴露更多細節(jié)互墓,提供額外的配置層與防御,可以與已有架構集成得更好蒋搜,簡化負載均衡與SSL配置篡撵,只需要在反向代理服務器上配置SSL證書。

配置步驟如下豆挽,這里我們演示使用虛擬服務器的方式來進行配置

1)創(chuàng)建Nginx虛擬配置文件

cd /etc/nginx/conf.d
vim app1.test.com.conf

2)配置文件內(nèi)容如下:

server
{
????listen 80;
? ? server_name app1.test.com;
????root /data/www/website;? ??
? ? access_log /var/log/www/app1.test.com.log main;
? ? error_log /var/log/www/app1.test.com_error.log;
? ? location / {
? ? ? ? proxy_pass http://localhost:5002;
? ? ? ? proxy_http_version 1.1;
? ? ? ? proxy_set_header X-Real-IP $remote_addr;
? ? ? ? proxy_set_header Upgrade $http_upgrade;
? ? ? ? proxy_set_header Connection keep-alive;
? ? ? ? proxy_set_header Host $host;
? ? ? ? proxy_cache_bypass $http_upgrade;
? ? ? ? client_max_body_size 8m;
? ? }
}

3)檢查配置文件

nginx -t

顯示如下育谬,表示nginx配置文件沒有語法錯誤

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4)重啟nginx

systemctl restart nginx


至此,部署步驟完畢帮哈,將app1.test.com 域名解析到服務器地址膛檀,或者使用hosts文件 進行配置 之后,即可通過 app1.test.com 訪問到已部署的 ASP.NET Core服務娘侍。

參考:

【1】https://www.microsoft.com/net/learn/get-started-with-dotnet-tutorial

【2】https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x#when-to-use-kestrel-with-a-reverse-proxy

【3】https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.1&tabs=aspnetcore2x

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咖刃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子私蕾,更是在濱河造成了極大的恐慌僵缺,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踩叭,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機容贝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門自脯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斤富,你說我怎么就攤上這事膏潮。” “怎么了满力?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵焕参,是天一觀的道長。 經(jīng)常有香客問我油额,道長叠纷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任潦嘶,我火速辦了婚禮涩嚣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掂僵。我一直安慰自己航厚,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布锰蓬。 她就那樣靜靜地躺著幔睬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芹扭。 梳的紋絲不亂的頭發(fā)上麻顶,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音冯勉,去河邊找鬼澈蚌。 笑死,一個胖子當著我的面吹牛灼狰,可吹牛的內(nèi)容都是我干的宛瞄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼交胚,長吁一口氣:“原來是場噩夢啊……” “哼份汗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蝴簇,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杯活,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后熬词,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旁钧,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡吸重,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了歪今。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嚎幸。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寄猩,靈堂內(nèi)的尸體忽然破棺而出嫉晶,到底是詐尸還是另有隱情,我是刑警寧澤田篇,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布替废,位于F島的核電站,受9級特大地震影響泊柬,放射性物質(zhì)發(fā)生泄漏椎镣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一彬呻、第九天 我趴在偏房一處隱蔽的房頂上張望衣陶。 院中可真熱鬧,春花似錦闸氮、人聲如沸剪况。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽译断。三九已至,卻和暖如春或悲,著一層夾襖步出監(jiān)牢的瞬間孙咪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工巡语, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翎蹈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓男公,卻偏偏與公主長得像荤堪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枢赔,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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