Linux+Nginx+Asp.net Core及守護進程部署

  上篇《Docker基礎入門及示例》文章介紹了Docker部署,以及相關.net core 的打包示例。這篇文章我將以oss.offical.site站點爲例,主要介紹下在linux機器下完整的部署流程,.net core在docker容器中的運行已經介紹,這裏.net core運行環境我會介紹直接在linux運行的場景,內容主要包含如下幾個部分:html

1. 基礎工具和Linux環境準備linux

2. .Net Core環境安裝及端口配置nginx

3. Nginx的安裝配置git

4. Supervisor守護進程安裝配置github

  一. 基礎工具和Linux環境準備docker

    工具介紹:shell

  Ubuntu:azure雲端linux主機ubuntu

  Xshell:免費的linux客戶端工具服務器

  FileZilla: 免費文件上傳(sftp、ftp)工具工具

   vs2017:  開發工具

  本次部署主要是經過Nginx負載代理.net core服務,提供對外站點訪問。.net core 自己的宿主則經過其自帶的Kestrel服務運行。若是你是雲主機請記得在管理控制檯添加80訪問端口。

  那這裏我先建立一個www文件夾,做爲後邊存放站點文件的根目錄,同時設置相關權限,這裏可能會有一個小的須要注意的問題,如今不少雲主機直接登陸後權限是很低的,須要使用:sudo -s 命令提高權限,不然建立文件夾會出現權限不足的錯誤。

  1. mkdir /home/www/ossoffical     // 建立ossoffical站點文件夾

  2. chown [-R] 帳號名稱 ossoffical    // 把帳號名稱添加到www文件夾的全部者中,保證後續sftp上傳文件夾等在沒法提權的狀況下也能操做

  二. .Net Core環境安裝及端口配置

  1. 安裝,這裏參照微軟官網便可,我這裏使用的是Ubuntu 14.04版本,主要執行如下幾條命令

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893

sudo apt-get update

sudo apt-get install dotnet-dev-1.0.1

  2. vs端口相關設置

  這裏須要注意一下,當前版本建立的.net core項目在不制定具體端口的狀況下,會默認使用5000端口。可是這個在後續的版本中會移除,見官方文檔:

  而且我也但願本身指定具體的端口,這樣之後站點多了以後防止衝突,我修改本身項目中的Program文件中內容,指定8000端口,如圖:

  請注意前後的順序,不然在vs中可能會出現調試沒法打開的狀況,發佈當前項目。

  3. 上傳項目文件運行

  a. 經過filezilla上傳項目文件到ossoffical目錄下

  b. 經過命令客戶端進入ossoffical目錄(cd /home/www/ossoffical),執行:dotnet OSS.Offical.Site.dll(我當前站點項目程序集名稱),結果如圖:

 

  退出執行ctrl+c 。固然咱們也能夠執行 「 dotnet OSS.Offical.Site.dll & 」 ,讓其在後臺運行,只是這個更方便讓咱們查看。這個時候你能夠訪問對應的8000端口便可訪問(雲主機請注意開放訪問端口)。

 

  三. Nginx安裝

  1. 執行:sudo apt-get install nginx  命令

  2. 安裝完成以後訪問對應的80端口,應該以下:

  3. 配置代理

  a. mkdir /etc/nginx/hosts   建立一個文件夾,用來放置站點配置文件

  b. 執行 cd /etc/nginx/hosts   進入目錄, 執行: vi ossoffical   按 「i」 添加以下內容:


server {
listen 80;

index index.html index.htm;

server_name www.osscoder.com; #域名

location / {
proxy_pass http://127.0.0.1:8000; # 剛纔設置的地址端口
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;
}
}

  退出保存。

  4. 修改nginx配置文件,vi /etc/nginx/nginx.conf

  在http節點末尾,添加 :include /etc/nginx/hosts/*;

  5.  重啓nginx服務器: sudo service nginx restart(reload)

  6. 進入站點目錄,dotnet OSS.Offical.Site.dll & ,確保站點正確運行,訪問 www.osscoder.com,以下:

 

      四. 守護進程安裝配置

  爲了保證服務可以穩定運行,咱們安裝守護進程以確保在應用程序出現異常中斷時可以正常重啓。

   1. 安裝,執行:sudo apt-get install supervisor

  2. 安裝成功後進入:/ect/supervisor/conf.d/ 目錄,添加 ossoffical.conf 文件,添加以下內容:

[program:OSS.Offical.Site]
command=dotnet OSS.Offical.Site.dll //要執行的命令
directory=/home/www/ossoffical //命令執行的目錄
environment=ASPNETCORE__ENVIRONMENT=Production #環境變量
user=osscoder //進程執行的用戶身份
stopsignal=INT
autostart=true
autorestart=true
startsecs=3    //自動重啓間隔
stderr_logfile=/var/log/ossoffical.err.log    //標準錯誤日誌
stdout_logfile=/var/log/ossoffical.out.log     //標準輸出日誌

   把對應的目錄和名稱換掉便可,請刪除註釋,不然有時會出現命令執行失敗的狀況。完畢以後重啓supervisor:

  sudo service supervisor stop

  sudo service supervisor start

  完成以後能夠殺掉進程或者重啓機器測試。

 

我最近正在開發OSS系列開源項目,如今已有OSS.Common,OSS.HttpOSS.Social 和 OSS.PayCenter 幾個項目,若是你也有興趣,請聯繫我或者關注公衆號OSSCoder

相關文章
相關標籤/搜索