Webserver

實時 PHP webapp 部署

  • March 14, 2017

我正在尋找設置 Bamboo 來進行實時 PHP 部署(同樣的原則可以適用於 Jenkins)

我希望能夠通過按下 Bamboo 應用程序中的按鈕來進行實時發布。

但是,我想確保會話保持活躍。即網路使用者不會經歷任何停機時間。如果有問題,那麼它會盡力保持彈性。

關於如何實現這一目標的高級概念有什麼建議嗎?

我的想法是它可以像下面這樣工作

兩個 Web 伺服器正在執行

webapp-live -- port 80 public 
webapp-deploy -- port 81 private

戰略

1) Push project files onto server
2) /var/www/releases/web-app-tag-number.zip
3) unzip file
4) deploy to webapp-deploy
5) sanity checks i.e. webapp-deploy loads homepage ok
6) swap deploy with live - use symlink to re-point files?  (will this keep sessions alive?)

我敢肯定這種事情已經做過好幾次了。

想知道是否有更好的策略?

這個怎麼樣:

1 public facing load balancer (e.g. HAproxy)

Two backend webservers.

  1. 從池中刪除一個網路伺服器(使用 Haproxy,這是通過管理套接字完成的。見這個問題
  2. 等待會話在該伺服器上結束。
  3. 將項目文件推送、解壓縮、部署到禁用的伺服器。
  4. 在不通過負載均衡器的情況下進行測試。(即本地主機)
  5. 重新啟用伺服器。
  6. 對第二台伺服器從步驟 1 開始重複。

在等待所有目前連接到期後,“禁用”伺服器會將伺服器置於維護模式。當然,連接不一定等於“會話”。因此,根據您處理會話的方式,可能需要在兩台伺服器之間進行一些會話複製或兩台伺服器都依賴的單獨會話數據庫(新的SPOF )。

這樣您的使用者就不會遇到任何停機時間。此外,您還可以獲得一些負載平衡的額外好處。

可悲的是,以這種方式設置 HAproxy 可能會很痛苦。

引用自:https://unix.stackexchange.com/questions/350005