本篇文章主要講解的是如何在Linux CentOS7操做系統搭建.NET Core運行環境併發布ASP.NET Core應用程序,以及配置Nginx反向代理服務器。由於公司的項目一直都是託管在Window服務器IIS上,對於Linux服務器上託管.NET Core項目十分好奇。由於好奇,所以就有了這篇文章關於如何在Linux CentOS7系統中配置.NET Core運行環境,部署項目和反向代理服務器的配置。linux
是一個強大的安全終端模擬軟件,它支持SSH1, SSH2, 以及Microsoft Windows 平臺的TELNET 協議。Xshell 經過互聯網到遠程主機的安全鏈接以及它創新性的設計和特點幫助用戶在複雜的網絡環境中享受他們的工做。nginx
是一個功能強大的SFTP、FTP 文件傳輸軟件。使用了 Xftp 之後,MS Windows 用戶能安全地在 UNIX/Linux 和 Windows PC 之間傳輸文件。Xftp 能同時適應初級用戶和高級用戶的須要。它採用了標準的 Windows 風格的嚮導,它簡單的界面能與其餘 Windows 應用程序緊密地協同工做,此外它還爲高級用戶提供了衆多強勁的功能特性。redis
固然這兩個工具提供了非商業用途的無償使用權限,你只須要填寫對應的信息便可。shell
下載地址:https://www.netsarang.com/en/free-for-home-school/vim
環境下載地址:https://dotnet.microsoft.com/downloadcentos
lsb_release -a
概述:.NET Core SDK 是一組庫和工具,開發人員可用其建立 .NET Core 應用程序和庫。瀏覽器
它包含如下用於構建和運行應用程序的組件:緩存
.NET Core CLI 工具。
.NET Core 庫和運行時。
DotNet 驅動程序(https://docs.microsoft.com/zh-cn/dotnet/core/tools/index?tabs=netcore2x#driver)。安全
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm sudo yum install dotnet-sdk-2.2
官網最新安裝教程:服務器
https://dotnet.microsoft.com/download/linux-package-manager/centos7/sdk-current
dotnet --info
部署方式選擇框架依賴
緣由:由於前面咱們已經安裝好了.Net Core應用程序運行所須要的運行環境和對應的SDK了。
目標運行時選中可移植的
緣由:能夠適用全部操做系統。
首先要進入項目目錄:
cd MyDotNetApplication/
運行項目:
dotnet FirstCore.dll -d &
wget http://localhost:5000
或者
curl http://localhost:5000
warn: Microsoft.AspNetCore.Server.Kestrel[0] Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.
出現這個警告的話,IPV6s回送的時候不可達,也就是說你只可以在服務器內部經過本地訪問,可是沒法經過外網ip對網站進行訪問。
解決方法:
首先中止網站: 查看運行程序端口:jobs -l 結束當前程序:kill 端口號 從新運行程序,最後設置以下訪問方式【固然這樣子作只是爲了看運行效果,下面咱們須要配置Nginx以及守護服務】: dotnet FirstCore.dll --server.urls="http://*:5000"
而後在輸入外網ip+5000端口號進行訪問,訪問成功,頁面以下圖所示:
Kestrel 很是適合從 ASP.NET Core 提供動態內容。 可是,Web 服務功能不像服務器(如 IIS、Apache 或 Nginx)那樣功能豐富。 反向代理服務器能夠卸載 HTTP 服務器的工做負載,如提供靜態內容、緩存請求、
壓縮請求和 HTTPS 終端。 反向代理服務器可能駐留在專用計算機上,也可能與 HTTP 服務器一塊兒部署。
反向代理服務器接收來自網絡的 HTTP 請求,並將這些請求轉發到 (邊緣服務器)Kestrel,請求流程圖以下所示:
sudo yum install epel-release
EPEL(Extra Packages for Enterprise Linux)是由 Fedora 社區打造的、爲 RHEL 及其衍生髮行版(如 CentOS 等)提供高質量軟件包的項目。安裝了 EPEL 源以後,就像在 Fedora 上同樣,經過「yum install 軟件包名」,便可安裝不少以前須要編譯安裝的軟件、經常使用的軟件以及一些比較流行的軟件,好比如今流行的 nginx、redis 等。安裝了EPEL源以後,均可以使用 EPEL 很方便的安裝更新。
sudo yum install nginx
sudo service nginx start
或者:
sudo systemctl start nginx
查看Nginx的運行狀態:
systemctl status nginx
用ps -ef列出進程列表,而後經過grep過濾nginx:
ps -ef | grep nginx
sudo systemctl enable nginx
service iptables status
以下圖所示個人防火牆是關閉的:
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
以下圖所示能看到 Nginx 的默認轉發網頁則說明Nginx運行成功了:
若要將 Nginx 配置爲反向代理服務器用來將請求轉接到 ASP.NET Core 應用,請修改Nginx的默認配置文件 /etc/nginx/nginx.conf 在文本編輯器中打開它,並將內容替換爲如下內容:
vim /etc/nginx/nginx.conf
替換的內容:
server { listen 80; server_name example.com *.example.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; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
esc+:wq 保存修改並退出vim編輯器
nginx -t
netstat -an | grep 80
nginx -s reload
提示502 Bad Gateway:
緣由:Linux CentOs中的項目沒有運行!
到對應的項目目錄,運行項目,輸入如下命令: 進入項目目錄: cd MyDotNetApplication/ 運行項目: dotnet FirstCore.dll -d &
再次訪問服務器Ip,項目成功運行: