2010-08-07 135 views
1

如何部署到共享主機環境...代碼和數據庫(完整的SQL)。VS2010 ASP.NET部署

什麼是你最喜歡的方式來獲得一個50MB的單個項目ASP.NET Web應用程序項目和數據庫到FTP和SQL管理Studio端口可訪問的實時服務器?

勘探礦經過一天的是: - 使用Web.Debug.config,很容易讓不同的連接字符串,SMTP等

+0

感謝您的編輯羅布 - 正在被007引用帶走:-) – 2010-08-08 00:14:33

回答

1

的FileZilla deployme的.SQL腳本nt是可以的,只要您不介意這可能導致短暫停機。在部署時,該站點可能處於不一致的狀態(例如,您已經部署了一個.aspx文件,該文件引用了DLL中尚未實現的代碼隱藏功能)。因此,在此期間訪問該網站的訪問者可能會遇到錯誤 - 如果您沒有發現這些錯誤,他們會看到「黃色的死亡屏幕」。一旦部署了所有文件,這將清除。

下面是對我工作在過去,最少的停機時間部署在一臺服務器的過程:

  1. 在生產服務器上,從現場位置複製所有代碼(例如C:\網站\ MySite)到備份位置(例如c:\ Sites \ MySite_bak)
  2. 將網站的虛擬根從c:\ Sites \ MySite更改爲c:\ Sites \ MySite_bak。這會給網站訪問者造成一定的延遲,因爲ASP.NET需要重新編輯ASPX頁面;但訪問者不會看到錯誤。
  3. 使用FileZilla部署到c:\ Sites \ MySite,使用「覆蓋源代碼更新」
  4. 將站點的虛擬根從c:\ Sites \ MySite_bak更改回c:\ Sites \ MySite。這將原子切換到新版本的網站。會有另一個JIT延遲。
  5. 在活動服務器上保留備份版本以防萬一需要恢復您的更改。

如果您還在進行數據庫模式更改,則您希望與(4)同時執行此操作。或者,如果更改與舊版本的代碼兼容,則可以儘早執行。

我一直假設你只有一臺服務器。如果您有服務器場,則可以通過每次從負載平衡池中取出一臺服務器來執行滾動部署。

+0

我還假設你有權訪問活動服務器上的IIS - 如果你不這樣做,這種方法將無法工作。 – 2010-08-07 07:02:40

+0

謝謝理查德 - 我並不擔心目前停工,因爲該項目尚未上線。我最頭痛的事情是漫長的過程......只是開心尋找更好的方法。再次感謝關於現場活動的想法。 – 2010-08-07 07:05:14

+0

在IIS中更改目錄的另一種方法是,可以在目錄中放置一個app_offline.htm文件。 IIS將爲該網站的任何點擊提供該文件,擺脫潛在的黃色屏幕。該應用仍然處於離線狀態,但您可以顯示一條消息「正在更新,請稍後再試。」或任何你想要的HTML。 – 2010-08-08 03:10:42