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


一、前言

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

二、環境安裝

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

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

Linux版本(ubuntu),這里選擇了ubuntu系統,也是比較常用的,大家可以去找一些國內的下載源,比如 阿里的,網易的,下載速度是很快的。

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

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

進去之后這里有很多版本,我選擇的是16.04,點擊進入

選擇如圖所示的,下載就可以了。desktop是含有桌面版本的,使用起來比較方便,server版本是不帶桌面的(當然選帶桌面的啊,不然心里慌,看到黑屏還以為電腦壞了呢。[捂臉])

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

三、安裝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訪問我們的站點就可以了。

3.8.4 替代方案

當然,也可以用Linux原生的命令nohup命令來替代,意思是不掛起的執行某個命令,就可以了,具體可以搜索一下使用方法。

四、總結

磕磕絆絆總算是部署完成了,感覺還是有點問題,不過總算運行起來,可能有很多配置還沒配好,以后再說吧,用到的時候再研究,這只是練練手。    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM