PHP代码组织

时间:2011-12-31 02:39:43

标签: svn lamp

我们刚为新系统安装了新服务器,我想知道应该做些什么来使我的新代码尽可能高效,以及如何组织它。

我想要一个好的解决方案,所以我不需要在一年后重新组织它(例如),我想要最好的实践和技术,以确保我的代码能够存活足够长的时间,以避免以后重新使用它。 此处不使用框架

这是我的新环境:

  • 8个网络服务器LAMP(apache2,php 5.3.5,cent os 5) - (xeon E5645,32g ram,raid 10 1T 15k) - 1个负载均衡器来管理它们
  • 带有复制的12个数据库mysql 5.5服务器(与上面相同)(4个主服务器,8个从服务器)
  • 1个svn服务器(我们使用的旧服务器)

我的想法是镜像它们(Web服务器),然后将代码从SVN推送到所有服务器。这好吗?

1 个答案:

答案 0 :(得分:36)

您可以将代码集中在一个公共文件夹中(创建一个脚本,将所有代码复制到8个服务器或使用NFS)。

此集中式代码可以位于SVN中的一个或多个存储库中。因此,当你推动时,你只需推动你需要推动的东西。

例如,您可以为自己的PHP库创建1个存储库(数据库类,xml,imap等...)。在一个简单的结构中,当您调用这些文件时,您只需执行以下操作:

require('/web/lib/DatabaseMySQL.class.php');

这样,您就可以在同一个地方知道所有需要的文件,并且非常容易维护。特别是如果您的代码需要需要文件的必需文件。

您可以根据需要创建任意数量的存储库,如果您不想混淆文件,请重复此操作 - 例如第三方(Smarty,phpmailer)与您创建的代码。

另一件事是,不要重新发明轮子。有很多好的代码可能会做你已经需要做的事情。就像发送电子邮件(phpmailer或任何其他人)或模板系统(Smarty或任何其他人)。这样,您可以使用相同的开发时间和更新(如果可用),只需下载,复制(如果您在存储库中提交,则进行提交)并推送。

脚本VS NFS

创建一个脚本,可以轻松地将所有代码推送到8个Web服务器中。这样做的缺点是你需要确保每个服务器上的所有文件夹和所有文件都是相同的,以避免错误。此外,如果您的网络存在延迟或推送期间连接丢失,则某些服务器将不具有相同的代码。再次,更多的错误。与NFS解决方案相比,运行起来要快一些。

创建NFS修复上述问题,因为您只使用了1个位置,但如果该位置丢失,则所有服务器都无法正常运行。因此,当您推送代码时,您只需推送到1个位置,所有其他服务器自动拥有新代码。您需要知道的事情,这比代码直接在硬盘驱动器上要慢一些。

以下是您可以使用的示例脚本:

您可以创建一个.sh脚本,将您的存储库中的代码(例如,您从存储库中签出的代码)复制到所有服务器,如下所示:

// file: pushcode.sh
#!/bin/bash
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ user@server1:/path/to/code
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ user@server2:/path/to/code

使此脚本可执行并运行它:

./pushcode.sh

要确保代码正确复制而不提示每次密码,您必须bypass the ssh login

这是一个你可能喜欢的好词:https://serverfault.com/questions/195035/linux-nfs-performance-vs-other-fss