网站部署后无法访问sqlserver_.NET Core跨平台部署
1. Windows-IIS
大家對于在IIS上部署.NET站點已經駕輕就熟了,部署.NET Core也沒有什么本質區別,但是這其中仍然有一些細節是不同的,下面記錄了一些我在部署時遇到的問題
1.1 安裝.NET Core Windows Server Hosting
要在IIS上運行http://ASP.NET Core,必須安裝.NET Core Windows Server Hosting
安裝完成后最好重啟IIS
如果沒有安裝該組件就直接打開部署的網站會出現 500.19 相關的配置數據無效
1.2 配置應用程序池
Core的IIS站點應用程序池的.NET CLR版本要選擇 無托管代碼
1.3 使用發布文件
我最開始測試的時候,仍然使用Web根目錄作為網站的物理路徑,但是網站無法訪問,報HTTP403錯誤——Web 服務器被配置為不列出此目錄的內容,也是就是這個文件夾下沒有可以訪問的文件,在查閱網上的資料后發現其他人都是使用了發布文件夾作為物理路徑,生成發布版本設置相應路徑后.NET Core的示例站點即可正常訪問
發布文件夾結構
成功訪問
2 Linux
微軟官方給出了不同系統的部署方法Tutorial Guide,由于Linux有不同的版本,所以這里選擇CentOS作為示例,有以下幾個步驟
2.1 添加.NET產品依賴
在安裝.NET之前,你需要注冊微軟的Key,注冊產品倉庫,并且安裝需要的依賴,在每臺機器上只需要做一次。
直接執行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm2.2 安裝.NET SDK
更新可供安裝的產品,然后安裝.NET SDK
輸入以下命令:
sudo yum update sudo yum install dotnet-sdk-2.2中間有兩次手動確認,然后等待安裝完成即可
2.3 創建你的應用
通過輸入命令就可以創建一個官方的示例.NET Core程序
dotnet new console -o myApp cd myApp第一條命令新建應用,第二條進入應用文件夾
通過 ls 命令我們可以看到該文件夾下只有兩個文件,obj是文件夾
默認的主文件Program.cs的內容如下:
using System;namespace myApp {class Program{static void Main(string[] args){Console.WriteLine("Hello World!");}} }2.4 運行應用
dotnet run2.5 創建web應用
使用mkdir命令新建一個文件夾mvc,然后進入目錄
創建網站
dotnet new mvc然后發布這個網站程序
dotnet restore dotnet publish -c release默認的發布目錄是在/bin/release/netcoreapp2.x/publish/里,可以新建一個目錄拷貝進去
scp -r /root/mvc/bin/release/netcoreapp2.2/publish/* /root/www/firstapp2.6 從外網訪問web應用
完成發布后,已經可以通過執行dotnet命令來啟動網站了,但是只能在內網訪問,顯然這不是我們想要的,要想從外網訪問,我們需要反向代理服務器,這里選擇Nginx
使用yum命令遠程安裝
sudo yum install epel-release yum install nginx啟動
systemctl start nginx #啟用Nginx systemctl enable nginx #設置開機啟動這時候已經可以直接通過服務器的IP地址的80端口訪問Nginx的測試頁了,需要注意的是如果使用阿里云服務器,需要在安全組配置中開放80端口才能夠訪問
接下來根據需要進行一些端口的配置,dotnet默認的訪問端口為5000,但是我測試的時候好像是在linux上被占用了,所以對 Program.cs 進行修改,使其可以通過其他端口訪問,這里使用8080
public class Program {public static void Main(string[] args){CreateWebHostBuilder(args).Build().Run();}public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).UseUrls("http://*:8080").UseStartup<Startup>(); }改完之后需要重新生成發布,開始我使用的是微軟官方的示例程序,這里為了對比端口,我在自己Windows系統下新建了一個2.1的示例程序,使用VS2017進行程序修改,發布后通過xftp再上傳到Linux服務器上
然后去修改Nginx的配置,默認的路徑應該是/etc/nginx/nginx.conf,在server節點下的location節點加一句 proxy_pass http://localhost:8080; 就可以
server {listen 80 default_server;listen [::]:80 default_server;server_name _;root /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {proxy_pass http://localhost:8080;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {} }修改完成后測試并重啟Nginx服務
sudo nginx -t #測試配置 sudo nginx -s reload #重新加載配置配置完成之后,啟動網站訪問服務器IP地址的8080端口即可
但是啟動網站這里存在一個問題,如果像上面那樣沒有使用cd命令進入網站目錄啟動,樣式和腳本等文件的路徑就會出現錯誤,導致頁面顯示不正常所以要在網站目錄啟動
基本的網站部署就到這里,下一次講講用Docker如何進行.NET Core的部署與開發
總結
以上是生活随笔為你收集整理的网站部署后无法访问sqlserver_.NET Core跨平台部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小班教案《拍手点头》反思
- 下一篇: 苹果 iOS 16.3 新增的 Appl