Linux系統(ubuntu)部署Asp.Net Core網站

1、前言javascript

  親自動手嘗試部署.Net Core在Linux,看了很多文章,感受是很簡單,可是作下去也會有不少問題,今天就寫個文章記錄下來。java

2、環境安裝linux

   虛擬機(VMware),在網上找就行。nginx

  地址:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-12.5.6-5528349.exe ,直接下載就行。web

  Linux版本(ubuntu),這裏選擇了ubuntu系統,也是比較經常使用的,你們能夠去找一些國內的下載源,好比 阿里的,網易的,下載速度是很快的。ubuntu

  阿里的:http://mirrors.aliyun.com/  網易的 http://mirrors.163.com/vim

  以阿里的舉個栗子,拉到最下邊,選擇ubuntu-releases 點擊進去windows

  

   進去以後這裏有不少版本,我選擇的是16.04,點擊進入api

  

   選擇如圖所示的,下載就能夠了。desktop是含有桌面版本的,使用起來比較方便,server版本是不帶桌面的(固然選帶桌面的啊,否則內心慌,看到黑屏還覺得電腦壞了呢。[捂臉])瀏覽器

   

 

  下載好安裝就好了。虛擬機怎麼安裝在這裏就不說了,不會的去百度一下。

3、安裝DotNet Sdk

  3.1 登陸系統。

  開機界面以下。輸入密碼登陸進去以後,是這個界面(前幾天還有小夥伴說我用的是mac,給我嚇一跳,不得不說,還真的像)。

  

 

  

  3.2 使用terminal終端。

  在windows中叫cmd 命令行,就那個黑白屏。點擊最上邊一個圖標,搜索ter ,而後點擊拖拽出來到右邊的欄裏。方便咱們之後點擊隨時使用。

         

  3.3 下載dotnet sdk。

  地址:https://www.microsoft.com/net/download/linux  dotnet sdk  是爲了給開發人員開發時使用的,裏邊包括了運行時,嚴格來講,在服務器上部署網站不作開發,只用安裝一個運行時就好了。這裏不講究那麼多。

  

 

 

   3.4 安裝到linux系統裏

  下載好後把下邊這個東西拖拽到你的系統裏,記得改個名字,好比就叫dotnet.tar.gz。tar.gz 是linux下的一種壓縮包格式。先放到home文件夾下。

  

  

   右鍵點擊出現菜單,點open terminal ,準備開始寫命令。

   

   執行命令:mkdir -p $HOME/dotnet && tar zxf dotnet.tar.gz -C $HOME/dotnet  (這一步就是在當前文件夾下 建立一個dotnet的文件下,並把dotnet.tar.gz解壓到裏邊)

   執行命令:export PATH=$PATH:$HOME/dotnet   (這一步就是設置環境變量,$HOME至關於你的home目錄)

   環境變量對java開發者來講並不陌生,然而好多人也只是知道須要配這個東西,可是爲何就不知道了。

   科普一下環境變量:就是當你執行一個命令的時候,若是當前目錄沒有,它就會去當前的環境變量裏去找(環境變量裏存放的是一系列的目錄,假若在這些目錄裏找到了就能夠執行),因此,爲了咱們在每一個目錄任何路徑下均可以執行某個命令,就須要配置一下。 

   

   注意:linux 爲每一個用戶建立了一個文件夾,默認/home/[username]下邊,當前用戶就是我本身songlin 因此點擊home就直接顯示了個人文件夾。下邊是我本身相對於整個系統的目錄,

   這一點若是不懂能夠下去以後學習,今天不作介紹。

   

  3.6 檢查命令

  運行dotnet命令,出現如下狀況,說明安裝成功。可是這種方式設置的臨時的,當你關閉terminal的時候就沒有了。

  

  若是要設置永久有效的,須要執行命令 sudo vim /etc/profile ,即用vim打開這個文件,在這個文件最下邊加上一行 export PATH=$HOME/dotnet:$PATH 保存。

  設置以後 重啓一下就好了。由於這個東西是開機就啓動的,執行了這一句話就至關於事先把環境變量設置好了。

   

 

  接下來發布咱們的站點,並把發佈的網站複製到服務器的某個目錄下邊,我複製到了home/wwwroot/webapi下邊,以下所示:

  

  3.7 安裝nginx配置代理ip訪問

   3.7.1 安裝:sudo apt-get install nginx
    3.7.2 而後配置nginx的代理轉發,修改/etc/nginx/sites-available/default,修改內容以下,這一步須要root權限修改,注意是所有覆蓋,直接添加可能會出問題。

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

     3.7.3 從新加載

sudo nginx -t  //檢查配置是否正確
sudo nginx -s reload //從新加載

  這樣就能實現ip訪問了。打開你的虛擬機,使用ifconfig 查看ip地址,而後瀏覽器輸入ip地址就能夠訪問了。

  3.8 安裝Supervisor

  3.8.1 安裝:sudo apt-get install supervisor

   3.8.2 配置:

  安裝完成以後,在 /ect/supervisor/confg.d/ 目錄下新建一個配置文件,取名爲 TestCore.conf (我取的是當前項目的名稱)

       使用命令新建文件: sodu touch testcore.conf

       打開testcore.conf,寫入以下命令(若是沒有權限,請參照上面的方法):  

[program:testcore]
command=dotnet WebApplication.dll #要執行的命令
directory=/home/songlin/wwwroot/webapi #命令執行的目錄
environment=ASPNETCORE__ENVIRONMENT=Production #環境變量
user=www-data #進程執行的用戶身份
stopsignal=INT
autostart=true #是否自動啓動
autorestart=true #是否自動重啓
startsecs=1 #自動重啓間隔
stderr_logfile=/var/log/testcore.err.log #標準錯誤日誌
stdout_logfile=/var/log/testcore.out.log #標準輸出日誌

注意:#後邊的內容要去掉,這裏是註釋,可是supervisor不識別,並且直接輸dotnet命令還找不到,如今暫時用下邊的配置,直接輸入命令的全路徑 /home/songlin/dotnet/dotnet,我環境變量以前是配過的,這個問題我也不知道爲何。

[program:testcore]
command=/home/songlin/dotnet/dotnet WebApplication1.dll
directory=/home/songlin/wwwroot/webapi 
environment=ASPNETCORE__ENVIRONMENT=Production
user=www-data 
stopsignal=INT
autostart=true 
autorestart=true 
startsecs=1
stderr_logfile=/var/log/testcore.err.log 
stdout_logfile=/var/log/testcore.out.log 

  3.8.3 重啓

sudo service supervisor stop
sudo service supervisor start

以後重啓虛擬機就好了,而後直接用ip訪問咱們的站點就能夠了。

 4、總結
 
 磕磕絆絆總算是部署完成了,感受仍是有點問題,不過總算運行起來,可能有不少配置還沒配好,之後再說吧,用到的時候再研究,這只是練練手。    
相關文章
相關標籤/搜索