最近一個專案中,為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管理服務即可安裝上此服務。執行這一步是因為雲伺服器廠商在裝機時,不會為你安裝這個服務,因此需要我們手工打造。
安裝會等一會兒,安裝好了後會在IIS的管理介面有一個管理服務的圖示,如下圖所示:
安裝成功
安裝成功後,在服務裡面可以看到有一個服務叫:Web Management Service的服務程式。
執行到上面時,就表示安裝成功了
安裝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報錯
出現上面這個錯誤是因為Server 2008 R2伺服器上未安裝Web Deploy程式所造成的,這時你需要到伺服器上安裝最新版本的Web Deploy v3.6這個程式,安裝好了後會在服務列表看到一個叫:的程式。Web Deploy v3.6的下載地址是:https://www.microsoft.com/zh-CN/download/details.aspx?id=43717
下載後,這傢伙長這樣,直接雙擊安裝即可。
安裝成功後,在服務裡面有個叫:Web 部署代理服務 的服務程式,如下圖所示:
Web-Deploy-Services
經過上面步驟的折騰,基本上就配置好了,接下來我們來配置IIS7,允許我們在VS2017裡面直接釋出.net core的 web api到伺服器上。
第二:伺服器端配置好IIS7,允許VS2017通過Web部署方式釋出程式
設定管理服務
點選上面第3張圖片的管理服務圖示,進入下圖設定好即可,最後別忘記點右邊的啟用。
為VS2017釋出建立專用賬戶,用於更新,並授好許可權
此處是在伺服器端建個專門的釋出使用者,我是為了省事,直接授於這個賬號管理員許可權的,為Server 2008 r2單獨建個使用者不是什麼難事,就直接放個結果圖即可,此處操作如有什麼不會的童鞋,請google下。
在上面這個步驟完成後,再返回到IIS裡面,這時需要選中你的網站,再點選IIS管理許可權,將你在上個步驟建的賬號賦給這個網站,不然你咋遠端釋出.net core程式到這兒來呢?見下圖姿勢。
為網站設定釋出使用者
在上面這個圖裡面,把新建的使用者加進來。
好了,到此呢伺服器端就基本上配置完成了。接下來我們來配置我們本地開發環境的VS2017。
第三:VS2017釋出配置
選中你的專案,我這兒是web api介面,網站是一樣的操作,直接右鍵釋出出現下面這個介面,按圖提示選擇即可,這樣就是直接在本地開發環境釋出到遠端伺服器上了。正規點的開發團隊可以配置好持續整合工具,一有程式碼簽入經過自動化測試後,可以通過這種方式釋出到遠端伺服器上,這種方式釋出是增量釋出,不會每次把所有檔案釋出到伺服器上進行替換的。這比我們傳統通過複製或者FTP拷到伺服器上要方便得多,省事。
在上面圖這兒選擇IIS、FTP等這個專案,進入下一步後,按提示配置好即可,一般 來說,出現錯誤都是伺服器端沒有配置好的。
伺服器:填寫域名或者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目錄
- 第二:開啟CustomProfile.pubxml,在最後一個節點(_SavePWD)後增加一個節點,配置內容是:<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
如下圖所示:
經過這些處理後,就做到了隨時釋出,隨時更新.net core程式到伺服器上,不需要你再遠端到伺服器上覆制檔案,再手工替換了。