首頁  >  文章  >  後端開發  >  ASP.NET Core程式發佈到Linux生產環境詳解

ASP.NET Core程式發佈到Linux生產環境詳解

Y2J
Y2J原創
2017-04-20 09:12:082056瀏覽

這篇文章主要為大家詳細介紹了ASP.NET Core程式發佈到Linux生產環境,具有一定的參考價值,有興趣的小夥伴們可以參考一下。

在這篇文章裡我們將介紹如何在 Ubuntu 14.04 Server上部署ASP.NET Core應用程式。我們將把ASP.NET Core應用程式放到一個反向代理伺服器的後面,由代理伺服器把請求轉交給我們的Kestrel伺服器。除此之外,我們還將保證我們的web應用程式作為一個守護程序來進行啟動。我們需要配置一個進程管理工具來幫助我們在程序崩潰時恢復程序,以確保高可用性。

章節:

  • 準備

  • #複製你的應用程式

  • #配置一個反向代理伺服器

  • 監控我們的應用程式

  • 啟動我們的應用程式

  • 觀察日誌

  • 使我們的應用程式安全化

準備工作

1、使用一個特定有sudo權限的標準帳號存取Ubuntu 14.04 Server;

2、ASP.NET Core應用程式。

複製你的應用程式

執行dotnet publish把你的ASP.NET Core應用程式打包成一個自包含(Self-Contained)的目錄(publish目錄,這個目錄下的程式將上傳到伺服器並執行)。什麼是自包含(Self-Contained)程序,請參考我的這篇文章:

 .NET Core應用程式類型(Portable apps & Self-contained apps) 。在操作之前,透過FTP工具(WinSCP等)把publish目錄下的程式全部上傳到伺服器指定的目錄下。接下來我們運行我們的程序,具體怎麼運行程序請參考這篇文章:使用.NET Core 1.0創建一個Self-Contained控制台應用。

設定一個反向代理伺服器

 對於動態web應用程式來說,反向代理程式是一個非常常用的設定。反向代理會終止目前的請求並將請求轉交給後端的ASP.NET Core應用程式。

為什麼要使用反向代理伺服器

Kestrel作為一個web伺服器,在處理動態內容方面是非常優秀的,但它並不像那些成熟的web伺服器一樣功能完備,這些伺服器包括: IIS, Apache or Nginx。反向代理伺服器可以把一些工作從Http伺服器上卸掉,這些工作包括:靜態內容處理、快取、壓縮以及SSL等。反向代理伺服器可以部署在一個專用的伺服器上或和Http伺服器在同一個叢集裡。本例我們將使用Nginx作為反向代理伺服器並和Http伺服器部署在同一個機器上。

安裝代理伺服器

sudo apt-get install nginx

安裝Nginx

#sudo service nginx start

#啟動Nginx

設定Nginx

編輯檔案:/etc/nginx/sites -available/default為如下:


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

監聽在80端口,Http的預設端口;代理使用HTTP版本為:HTTP 1.1;將原始請求轉交給:http://localhost:5000

上述設定完成後使用以下指令來驗證設定檔語法是否正確:

sudo nginx -t

如果設定語法沒有問題,則重新啟動Nginx以使配置生效:

sudo nginx -s reload

##監控我們的web應用




 Nginx將轉發請求給你的Kestrel伺服器,但Kestrel並不像Windows上的IIS,它並不管理你的Kestrel進程

,在這篇文章中我們將使用supervisor來啟動我們的應用程序,當系統啟動的時候或當進程崩潰時進行自我恢復。

安裝supervisor:
sudo apt-get install supervisor

設定supervisor:#/etc/supervisor/ conf.d/

hellomvc.conf ###(新增的一個檔案)#############
[program:hellomvc]
command=/usr/bin/dotnet /var/aspnetcore/HelloMVC/HelloMVC.dll
directory=/var/aspnetcore/HelloMVC/
autostart=true
autorestart=true
stderr_logfile=/var/log/hellomvc.err.log
stdout_logfile=/var/log/hellomvc.out.log
environment=ASPNETCOREENVIRONMENT=Production
user=www-data
stopsignal=INT
######重啟supervisord########## ######
sudo service supervisor stop
sudo service supervisor start
######啟動我們的web應用程式#########在這個案例中因為我們使用了supervisor來管理我們的應用,應用程式將會被supervisor自動開啟。當作業系統啟動的時候,supervisor作為守護程式使用一個System V的初始化腳本來啟動,supervisor啟動後緊接著會啟動你的應用程式。 #########觀察日誌#########supervisord日誌#########sudo tail -f /var/log/supervisor/supervisord.log##### #######我們自己應用的日誌#########tail -f /var/log/hellomvc.out.log######

原文翻譯:Publish to a Linux Production Environment
作者:Sourabh Shirhatti

以上是ASP.NET Core程式發佈到Linux生產環境詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn