在多个服务器上部署PHP的最佳实践

我目前正在我的服务器上部署一些PHP Zend应用程序,这是目前我得到的。

第一层 – 负载平衡器+ Httpcaching。

第二层 – networking服务器(在这里将有更多的networking服务器,这就是为什么负载平衡器)。

第三层 – MySql(将有复制,奴隶主,也许分裂每个客户或一群客户)。

问题是,目前我在networking服务器上运行nginx + php-fpm,所有的php代码都保留在用户各自的home文件夹中。 当时间过去了,我想增加服务器的数量,php-fpm和nginx实例。

我应该把php放在哪里,因为我不能在服务器之间复制它,否则更新会影响一致性;)

我想可能是一个NFS将持有所有的PHP代码,服务器将指向这一点。

这里的正确方法是什么?

我对服务器体系结构很陌生。

感谢你的帮助。

罗德里戈

你真的不应该把它放在NFS上。 这会使你的NFS服务器出现单点故障。 如果您的NFS无法访问(也许它崩溃,也许有一个networking问题..),那么你的整个网站是离线的。

相反,将PHP存储在某个中心位置 – 在任何地方。 哪里没关系。 然后,当您需要将文件推送到新服务器时,只需复制到新服务器。

您将不得不确保您的用户不直接更新Web服务器上的PHP。 他们应该在中央位置更新它们。

例如,假设您将web1web2作为您的Web服务器,并且您的PHP文件保存在/home/foo/php/home/bar/php 。 这是目前您的权威位置,可能需要更改。
设置类似/var/code/foo/php/var/code/bar/php ,并告诉你的用户在那里更新。 当他们进行更新时,运行一个脚本,将文件复制到每个Web服务器上的/home/foo/php和/ home / bar / php`。

现在和将来仍然存在的一部分难题是,您将数据存储在用户主目录中。
你应该考虑转移到适当的版本控制系统,如Mercurial,Git或SVN。 将所有的数据存储在同一个位置,然后检查那些你想要的地方。

这方面的一个例子:
使用服务器(我们称之为dev1 )并安装SVN。 在SVN中创build一个新项目(我们称之为php_project1 )。 告诉你的用户检查svn://dev1/php_project1/userN ,并编辑和提交文件到SVN。
然后在您的Web服务器上,您可以执行如下操作:

 cd /home/user1/php svn checkout svn://dev1/php_project1/user1 

任何时候你需要更新你的Web服务器,你只需在主目录下运行svn update

还有更多我可以去。 欢迎来到pipe理一个networking农场。

  • 第一层 – 唯一的负载平衡器
  • 第二层 – 静态/图像/videonetworking服务器(nginx); 通用networking服务器(nginx + php-fpm); 脚本服务器(nginx + php-fpm或cpp;运行“重”脚本); memcached服务器
  • 第三层 – 分割主从MySQL服务器

和监控(Zabbix)和邮件服务器。 Pinba实时监控/统计服务器为PHP使用MySQL。

我想可能是一个NFS将持有所有的PHP代码,服务器将指向这一点。

不好的主意,使用版本控制系统(git,svn,mercurial,…)和部署脚本