我遇到了一个大问题,试图找到一种方法来构建我的应用程序的缩放。下面是我当前的设置:
我们有一个用PHP和MySql编写的应用程序。从理论上讲,该应用程序的编写方式可以使用相同的代码库为数千个不同的网站提供服务(但每个网站都有不同的数据库)。
-
在我们目前的设置中,我们有1 nginx配置文件每1个网站,他们都指向相同的位置,比如/var/www/current-version。我们有一种方法可以让我们知道哪个网站应该被渲染
-
每次升级时,我们都会将代码更新到/var/www/new-version
-
将所有代码从/var/www/current-version/复制到/var/www/old/
-
通过搜索和替换所有nginx配置文件,将所有当前项目从当前/指向旧/,并重新加载服务
-
从新/复制代码到当前/
-
通过网站循环到
- 编辑相应的nginx配置文件,指向当前/文件夹
- 在所有实例中同步新更新的配置文件
- 运行更新脚本(我们必须这样做,因为升级过程可能涉及迁移db和其他一些东西)
此升级过程涉及相当多的步骤,并受到某些问题的影响,例如当同步发生得不够快时。
我想知道是否有更好的方法来做这件事?PS:我不确定这是否是问这类问题的最佳地点,stackexchange有太多的子站点,我很困惑。无论如何,如果我发错了地方,请随时告诉我
为什么不直接使用符号链接呢?例如,所有nginx配置都设置为/var/www/website,这是一个指向/var/realdir/website_1_1_0的符号链接。将新代码部署到/var/realdir/website_1_2_0,然后更改一个符号链接指向这个新目录。