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

來源:互聯網
上載者:User
這篇文章主要為大家詳細介紹了ASP.NET Core程式發布到Linux生產環境,具有一定的參考價值,感興趣的小夥伴們可以參考一下。

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

章節:

  • 準備

  • 複製你的應用程式

  • 配置一個反向 Proxy伺服器

  • 監控我們的應用程式

  • 啟動我們的應用程式

  • 觀察日誌

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

準備工作

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控制台應用。

配置一個反向 Proxy伺服器

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

為什麼要使用反向 Proxy伺服器

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

安裝Proxy 伺服器

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.dlldirectory=/var/aspnetcore/HelloMVC/autostart=trueautorestart=truestderr_logfile=/var/log/hellomvc.err.logstdout_logfile=/var/log/hellomvc.out.logenvironment=ASPNETCOREENVIRONMENT=Productionuser=www-datastopsignal=INT

重啟supervisord


sudo service supervisor stopsudo 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.