【IIS】VS2017部署Web網站到遠程服務器

轉自:https://jhrs.com/2018/26157.html

最近一個項目中,爲App開發後臺接口,技術選型爲最新 .net core版本,使用.net core開發web api接口過程中,爲了方便app團隊成員直接在線調用接口,找了公網上的一臺服務器做爲app後臺接口的測試服務器,並做了域名解析。服務器配置爲Windows Server 2008 R2企業版,剛購買時,雲服務器廠商只是安裝了IIS的基本功能。所以接下來咱們基於Windows Server 2008 R2 服務器開始今天的教程。

第一:首先在IIS上安裝管理服務,配置好IIS7 允許使用VS2017遠程發佈

爲IIS7安裝管理服務

桌面右鍵我的電腦,打開服務器管理,展開Roles(角色),選中IIS右鍵,添加角色服務,如下圖所示:

安裝管理服務

安裝管理服務

點擊添加角色服務後,會出現一個窗口:添加角色服務窗口。在下圖中選擇“Web管理服務”,因我操作太快,忘記截圖上傳,因此找了一張英文圖供大家查看,操作方式是一樣的,中文時,勾選Web管理服務即可安裝上此服務。執行這一步是因爲雲服務器廠商在裝機時,不會爲你安裝這個服務,因此需要我們手工打造。

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

 

安裝會等一會兒,安裝好了後會在IIS的管理界面有一個管理服務的圖標,如下圖所示:

安裝成功

安裝成功

安裝成功後,在服務裏面可以看到有一個服務叫:Web Management Service的服務進程。

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

執行到上面時,就表示安裝成功了

安裝Web Deploy程序

安裝Web Deploy程序也是必須的,如果不安裝時,在VS2017發佈時會報以下錯誤,具體見下圖。

未能連接到遠程計算機(“www.jhrs.com”)。請確保在遠程計算機上安裝了Web Deploy 並啓動了所需的進程(“Web 部署代理服務”)。在以下位置瞭解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE。遠程服務器返回錯誤:(404)未找到。

不安裝Web Deploy報錯

不安裝Web Deploy報錯

出現上面這個錯誤是因爲Server 2008 R2服務器上未安裝Web Deploy程序所造成的,這時你需要到服務器上安裝最新版本的Web Deploy v3.6這個程序,安裝好了後會在服務列表看到一個叫:的程序。Web Deploy v3.6的下載地址是:https://www.microsoft.com/zh-CN/download/details.aspx?id=43717

下載後,這傢伙長這樣,直接雙擊安裝即可。

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

 

安裝成功後,在服務裏面有個叫:Web 部署代理服務 的服務程序,如下圖所示:

Web-Deploy-Services

Web-Deploy-Services

經過上面步驟的折騰,基本上就配置好了,接下來我們來配置IIS7,允許我們在VS2017裏面直接發佈.net core的 web api到服務器上。

第二:服務器端配置好IIS7,允許VS2017通過Web部署方式發佈程序

設置管理服務

點擊上面第3張圖片的管理服務圖標,進入下圖設置好即可,最後別忘記點右邊的啓用。

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

爲VS2017發佈建立專用賬戶,用於更新,並授好權限

此處是在服務器端建個專門的發佈用戶,我是爲了省事,直接授於這個賬號管理員權限的,爲Server 2008 r2單獨建個用戶不是什麼難事,就直接放個結果圖即可,此處操作如有什麼不會的童鞋,請google下。

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

在上面這個步驟完成後,再返回到IIS裏面,這時需要選中你的網站,再點擊IIS管理權限,將你在上個步驟建的賬號賦給這個網站,不然你咋遠程發佈.net core程序到這兒來呢?見下圖姿勢。

爲網站設置發佈用戶

爲網站設置發佈用戶

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

在上面這個圖裏面,把新建的用戶加進來。

好了,到此呢服務器端就基本上配置完成了。接下來我們來配置我們本地開發環境的VS2017。

第三:VS2017發佈配置

選中你的項目,我這兒是web api接口,網站是一樣的操作,直接右鍵發佈出現下面這個界面,按圖提示選擇即可,這樣就是直接在本地開發環境發佈到遠程服務器上了。正規點的開發團隊可以配置好持續集成工具,一有代碼簽入經過自動化測試後,可以通過這種方式發佈到遠程服務器上,這種方式發佈是增量發佈,不會每次把所有文件發佈到服務器上進行替換的。這比我們傳統通過複製或者FTP拷到服務器上要方便得多,省事。

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

在上面圖這兒選擇IIS、FTP等這個項目,進入下一步後,按提示配置好即可,一般 來說,出現錯誤都是服務器端沒有配置好的。

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

服務器:填寫域名或者IP地址,不要帶 http:// 這個前綴。

站點名稱:你在IIS上網站的名稱

用戶名和密碼:就是你在服務器上專門建立的賬戶和密碼

目標URL:發佈成功後,它會自動打開這個地址。

好了,經過上面的配置,我們就可以愉快的用.net core編寫web api接口隨時發佈給app團隊使用了。

第四:我遇到的錯誤及處理方法

錯誤一:

未能連接到遠程計算機(“www.jhrs.com”)。請確保在遠程計算機上安裝了Web Deploy 並啓動了所需的進程(“Web 部署代理服務”)。在以下位置瞭解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_DESTINATION_NOT_REACHABLE。遠程服務器返回錯誤:(404)未找到。

處理方法:
出現上面這個錯誤是因爲Server 2008 R2服務器上未安裝Web Deploy程序所造成的,這時你需要到服務器上安裝最新版本的Web Deploy v3.6這個程序,安裝好了後會在服務列表看到一個叫:Web 部署代理服務 的程序。Web Deploy v3.6的下載地址是:https://www.microsoft.com/zh-CN/download/details.aspx?id=43717

錯誤二:

已使用Web部署代理服務連接到”www.jhrs.com”,但未能授權。請確保你是“www.jhrs.com”上的管理員。在以下位置瞭解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_ADMIN。遠程服務器返回錯誤:(401)未經授權。

處理方法:

我在部署這個時出現上面這個錯誤,尋找原因花了近1個小時,很是浪費哥哥時間,原來是粗心大意犯的一個錯誤,在填寫服務器時,它這兒不需要帶 “http://”這個前綴。

錯誤三:

配置正確後,如果你的VS重啓或者重新開關機後,再次發佈會出現不信任的證書的問題,具體報錯的提示內容如下:

C:\Program Files\dotnet\sdk\2.1.402\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets(139,5): 錯誤 : Web deployment task failed. (已使用指定的進程(“Web Management Service”)連接到遠程計算機(“api.jhrs.com”),但未能驗證服務器的證書。如果你信任該服務器,請再次連接並允許不信任的證書。 在以下位置瞭解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED。)

已使用指定的進程(“Web Management Service”)連接到遠程計算機(“api.jhrs.com”),但未能驗證服務器的證書。如果你信任該服務器,請再次連接並允許不信任的證書。 在以下位置瞭解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED。
基礎連接已經關閉: 未能爲 SSL/TLS 安全通道建立信任關係。
根據驗證過程,遠程證書無效。
Publish failed to deploy.

處理方法:

  • 第一:打開Properties->PublishProfiles目錄通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程
  • 第二:打開CustomProfile.pubxml,在最後一個節點(_SavePWD)後增加一個節點,配置內容是:<AllowUntrustedCertificate>True</AllowUntrustedCertificate>

如下圖所示:

通過VS2017發佈.net core程序並使用Web 部署到遠程服務器最新教程

經過這些處理後,就做到了隨時發佈,隨時更新.net core程序到服務器上,不需要你再遠程到服務器上覆制文件,再手工替換了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章