[親測]七步學會ASP.NET Core 2.0怎麼發佈/部署到Ubuntu Linux服務器並配置Nginx實現域名訪問

前言

ASP.NET Core 2.0 怎麼發佈到Ubuntu服務器?又如何在服務器上配置使用ASP.NET Core網站綁定到指定的域名,讓外網用戶能夠訪問呢?php

步驟

第1步:準備工做

  • 一臺Liunx服務器:筆者用的是【搬瓦工】的VPS服務器(CDN加速,支持支付寶,多機房選擇)--低配版[2.5$每個月,29.99$每一年],須要的同窗點此瞭解詳情linux

    再推薦一個VPS服務器 Vultr.com (和 搬瓦工 差很少,也支持支付寶,但它支持月付,每個月僅 2.5$ )
  • 一個Linux終端管理工具:筆者推薦Xshell,點擊下載Xshell

準備好Ubuntu服務器器 [Ubuntu 17.04 x64] 和終端管理工具後,咱們開始配置關於ASP.NET Core 2.0的Linux環境。nginx

第2步:建立一個非root用戶

爲了安全和管理的方便,咱們不使用root用戶,而是建立一個非root用戶:shell

adduser myuser          # [myuser爲用戶名,可自定義指定]將提示你輸入登陸密碼,請輸入並牢記
usermod -aG sudo myuser # 將建立的用戶添加到sudo分組中,以便使用管理員的命令
exit                    # 結束終端會話

asp.net-core-2-publish-to-linux-ubuntu-server-01.png

用戶建立完成後,使用這個用戶來從新鏈接linux服務器ubuntu

第3步:更新Linux服務器

sudo apt-get update        
sudo apt-get upgrade       
sudo apt-get dist-upgrade  
sudo reboot

注:若是你想自動更新,你也可使用 unattended-upgrades(如下命令根據本身須要選擇) :vim

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...服務器

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-publish-to-linux-ubuntu-server-02.png

說明咱們的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-publish-to-linux-ubuntu-server-03.png

怎麼樣,如今你的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實現反向代理

相關文章
相關標籤/搜索