2015-08-13 41 views
0

我遇到了一個很大的問題,試圖找到一種方法來構建我的應用程序的縮放。以下是我目前的設置:結構PHP應用程序輕鬆升級和縮放?

我們有一個用PHP和MySql編寫的應用程序。理論上,應用程序的編寫方式可以使用相同的代碼庫爲數千個不同的網站提供服務(但每個網站都有不同的數據庫)。

  1. 在我們當前的設置,我們必須每1個網站1個nginx的配置文件,它們都指向同一個位置可以說,在/ var/WWW /當前版本。我們有一種方法可以讓我們知道應該渲染哪個網站。

  2. 我們每次升級,我們更新代碼到/ var/WWW /新版本

  3. 複製在/ var所有代碼/ WWW /當前版本/到/ var/WWW /老/

  4. 點從電流/老/通過搜索和替換所有nginx的配置文件和做服務重載從新

  5. 複製代碼/當前所有項目電流/

  6. 循環通過量小時的網站

    • 編輯相應的nginx的配置文件中的所有實例指向當前/文件夾
    • 同步新的更新配置文件
    • 運行更新腳本(我們不得不這樣做,因爲升級過程可能涉及遷移數據庫和其他一些東西)

此升級過程涉及相當多的步驟,並進行一定的問題,如當同步不會發生髮足夠了。

我不知道是否有更好的方法來做到這一點?

PS: 我不確定這是不是最好的地方問這種問題,stackexchange有太多的子網站,我很困惑。無論如何,請隨時讓我知道,如果我張貼在錯誤的地方

回答

0

爲什麼不只是使用符號鏈接?例如,所有nginx配置都設置爲/ var/www/website,這是/ var/realdir/website_1_1_0的符號鏈接。您將一個新代碼部署到/ var/realdir/website_1_2_0,然後只需更改一個符號鏈接以指向此新目錄。

+0

這是一個簡單但非常好的主意。不過,我確實有一個問題:我們有成千上萬的站點使用相同的代碼庫,但是當我們升級時,我們不能一次全部升級它們(因此我們不能一次簡單地切換所有代碼),因此我們必須逐一進行升級,因爲有可能我們必須在每個站點上運行數據庫遷移。 – mr1031011