前言 ASP.NET Core 2.0 怎麼發佈到Ubuntu伺服器?又如何在伺服器上配置使用ASP.NET Core網站綁定到指定的功能變數名稱,讓外網用戶可以訪問呢? 步驟 第1步:準備工作 一臺Liunx伺服器:筆者用的是【[搬瓦工][1]】的VPS伺服器(CDN加速,支持支付寶,多機房選擇) 低配版 ...
前言
ASP.NET Core 2.0 怎麼發佈到Ubuntu伺服器?又如何在伺服器上配置使用ASP.NET Core網站綁定到指定的功能變數名稱,讓外網用戶可以訪問呢?
步驟
第1步:準備工作
- 一臺Liunx伺服器:筆者用的是【搬瓦工】的VPS伺服器(CDN加速,支持支付寶,多機房選擇)--低配版[2.5$每月,29.99$每年],需要的同學點此瞭解詳情
- 一個Linux終端管理工具:筆者推薦Xshell,點擊下載Xshell
準備好Ubuntu伺服器器 [Ubuntu 17.04 x64] 和終端管理工具後,我們開始配置關於ASP.NET Core 2.0的Linux環境。
第2步:創建一個非root用戶
為了安全和管理的方便,我們不使用root用戶,而是創建一個非root用戶:
adduser myuser # [myuser為用戶名,可自定義指定]將提示你輸入登錄密碼,請輸入並牢記
usermod -aG sudo myuser # 將創建的用戶添加到sudo分組中,以便使用管理員的命令
exit # 結束終端會話
用戶創建完成後,使用這個用戶來重新連接linux伺服器
第3步:更新Linux伺服器
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot
註:如果你想自動更新,你也可以使用 unattended-upgrades
(以下命令根據自己需要選擇) :
sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
第4步: 安裝 .NET Core
在Linux環境中運行ASP.NET Core網站,我們需要安裝.NET Core運行時(當然也可以自己實現.NET Core程式的宿主)。
a. 註冊微軟產品KEY為被信任的:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
b. 設置所需要的版本主機包(Ubuntu 17.04,其他linux版本的請見https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x):
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-zesty-prod zesty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get update
c. 安裝.NET Core:
sudo apt-get install dotnet-sdk-2.0.0
d. 運行dotnet --version
命令檢查是否安裝成功:
dotnet --version
如果顯示:2.0.0 ,則說明linux伺服器中成功安裝了.NET Core 2.0.0版本。
第5步:創建示常式序
本文中,我們直接使用.NET Core 的命令創建一個ASP.NET Core 2.0 示例網站應用程式,創建目錄 /home/myuser/firstapp,執行命令:
dotnet new mvc
接著,發佈剛纔創建的ASP.NET Core 2.0 網站髮網站目錄,所以,我們先創建一個網站發佈目錄:/var/www/firstapp,運行dotnet發佈命令:
dotnet restore
dotnet publish -c release
dotnet命令將把ASP.NET Core 2.0 示例網站發佈到目錄:/home/myuser/firstapp/bin/release/netcoreapp2.0/publish/ 中,拷貝發佈後的ASP.NET Core 2.0網站程式:
scp -r /home/myuser/firstapp/bin/release/netcoreapp2.0/publish/* /var/www/firstapp
第6步:啟動網站
我們需要配置 systemd
來讓 dotnet
成為一個服務並啟動。
sudo vim /etc/systemd/system/kestrel-mysite.service
sudo systemctl enable kestrel-mysite.service # 註冊服務
sudo systemctl start kestrel-mysite.service # 啟動服務
sudo systemctl status kestrel-mysite.service # 檢查服務的運行狀態
現在,我們的示例網站就可以通過5000埠在伺服器端訪問了,在終端使用wget命令:
wget http://localhost:5000
可以看到如下的運行效果:
說明我們的ASP.NET Core 2.0網站應用程式在linux伺服器上配置成功了。
到這裡,是不覺得ASP.NET Core 2.0在linux上運行 so easy 呢!!!
但是,當你看到“但是”的時候,心裡怎麼想的呢?
但是,我們這個示常式序現在還只能在伺服器中訪問,外網是不能訪問的。
不急,本文給大家分享的是使用Nginx來作反向代理,實現外網的訪問,以及功能變數名稱訪問。
第7步:nginx反向代理
sudo apt-get install nginx
使用 vim 配置nginx的服務配置
sudo vim /etc/nginx/sites-available/default
將nginx的配置替換成如下的配置:
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;
}
}
測試配置:
sudo nginx -t
重新載入配置:
sudo nginx -s reload
現在是見證奇跡的時刻了,在瀏覽器中直接輸入你的伺服器IP地址並訪問,噔噔噔噔噔:
怎麼樣,現在你的ASP.NET Core 2.0 網站可以通過網路訪問了,如果你還想讓你的網站支持通過功能變數名稱訪問,那nginx中配置也是非常簡單的:
server {
listen 80;
server_name www.your_domain_name.com;
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;
}
}
其中:www.your_domain_name.com 即為你的功能變數名稱,修改配置後,重新載入nginx配置:
sudo nginx -s reload
愉快地使用功能變數名稱訪問吧。
註: 本文給大家分享了一些關於ASP.NET Core 2.0怎麼發佈/部署到Ubuntu Linux伺服器並配置Nginx實現反向代理,還有很多問題並沒有涉及到,比如:伺服器的安全(路由表IP的配置,nginx的高級配置等等),請在實際項目部署中查閱相關資料進行處理。
如果你覺得本文對你有幫助,請點個贊,讓更多需要瞭解、學習本文內容的同學知曉,謝謝你的支持。
本文同步發表至 圖享網 《ASP.NET Core 2.0怎麼發佈/部署到Ubuntu Linux伺服器並配置Nginx實現反向代理》