[親測]七步學會ASP.NET Core 2.0怎麼發佈/部署到Ubuntu Linux伺服器並配置Nginx反向代理實現功能變數名稱訪問

来源:http://www.cnblogs.com/bobositlife/archive/2017/12/18/asp-dotnet-core-2-publish-to-liunx-ubuntu-server-and-config-nginx.html
-Advertisement-
Play Games

前言 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                    # 結束終端會話

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

用戶創建完成後,使用這個用戶來重新連接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-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實現反向代理


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Part VII. Spring Cloud Sleuth 46. Introduction Spring Cloud Sleuth為Spring Cloud實現了分散式的跟蹤解決方案 46.1 Terminology Spring Cloud Sleuth借用了Dapper的術語 Span: 基本 ...
  • 相信各位都在在網上買過東西吧?那麼今天我的主題就是寫個線上購物系統,是不可能的,哈哈(後期確實有這個項目),那麼購物都填寫過快遞地址吧?然後網上查個地址都有地址管理吧? 要求: 1.列印出省、市、縣等多級目錄 2.每一級可以返回到上一級,第一級不能再往上返回 3.可以隨時退出系統 分析: 1.簡單的 ...
  • 使用fmsb包繪製雷達圖 {r} library("fmsb") radarfig ...
  • 1.解釋器路徑 2.編碼 1.ascill 00000000 (8個位表示) 缺點:表示不了英文 2.unicode 0000000000000000+ (至少16位表示) 缺點:消耗記憶體,當表示位不需要16位以上,造成多餘記憶體消耗 Python3 無需關註 Python2 每個文件中只要出現中文, ...
  • [TOC] 一、簡介 java中的日期處理一直是個問題,沒有很好的方式去處理,所以才有第三方框架的位置比如joda。 文章主要對java日期處理的詳解,用1.8可以不用joda。 1. 相關概念 首先我們對一些基本的概念做一些介紹,其中可以將GMT和UTC表示時刻大小等同。 1.1 UT時間 UT反 ...
  • 一、簡介 JavaBean組件是一些可移植、可重用並可組裝到應用程式中的Java類,類必須是具體的和公共的。 符合下列設計規則的任何Java類均是以JavaBean: 1.對數據類型“protype”的每個可讀屬性,Bean下必須有下麵簽名的一個方法:public proptype getPrope ...
  • 1 import java.util.HashMap; 2 import java.util.Iterator; 3 import java.util.Map; 4 5 public class TestMap { 6 public static void main(String[] args) {... ...
  • 背水一戰 Windows 10 之 控制項(自定義控制項): 自定義控制項的 Layout 系統, 自定義控制項的控制項模板和事件處理的相關知識點 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...