2011-12-31 98 views
29

我们刚刚为我们的新系统获得了新服务器,我想知道我应该如何使我的新代码尽可能高效,以及如何组织它。php代码组织

我想要一个好的解决方案,所以我不必在现在1年后重新组织它(例如),我希望最佳实践和技巧能够确保我的代码能够存活足够长的时间以避免重新进行重新设计后来。 无框架这里使用

这是我的新环保:

  • 8 Web服务器LAMP(的Apache2,PHP 5.3.5,分OS 5) - (至强E5645,32G内存,RAID 10 1T 15K) - 1个负载均衡器来管理它们
  • 12 mysql数据库服务器5.5(同上)与复制(4主控,8个从站)
  • 1 SVN服务器(旧服务器,我们使用)

我的想法是为了镜像他们(网络服务器),他们将代码从SVN推送到所有服务器。这个好吗?

+2

是同一网络的Web服务器上的SVN服务器?或者您有svn托管在不属于您的单独域名中? – 2011-12-31 02:41:48

+0

svn服务器是在相同的IP范围,所以是在与服务器相同的网络,但不能从外部访问 – 2011-12-31 02:44:45

回答

36

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

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

例如,您可以为您自己的PHP库(数据库类,xml,imap等)创建1个存储库。在一个简单的结构,当你调用这些文件,你只需要做:

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

这样,你知道你的所有必需的文件,在同一个地方,很容易维护。特别是如果你的代码需要需要文件的文件。

您可以根据需要创建任意多个存储库,如果您不想将文件(例如第三方(Smarty,phpmailer))与您创建的代码混合在一起,请重复此操作。

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

脚本VS NFS

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

创建一个NFS解决上述问题,因为您只使用1个位置,但如果该位置丢失所有服务器将无法正常运行。因此,当您推送代码时,您只会推送到一个地方,所有其他服务器都会自动获得新代码。有些东西你也需要知道,这会比直接在硬盘上的代码慢一点。

下面是一个示例脚本,您可以使用:

您可以创建一个.SH脚本,将代码从你的资料库复制(例如,从资源库中签出代码),这样所有的服务器:

// file: pushcode.sh 
#!/bin/bash 
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ [email protected]:/path/to/code 
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ [email protected]:/path/to/code 

将这个脚本可执行文件并运行它:

./pushcode.sh 

要正确确保代码副本,而不每次都提示密码,您将有bypass the ssh login

这里有一个很好的,你可能会喜欢:https://serverfault.com/questions/195035/linux-nfs-performance-vs-other-fss

+0

谢谢你,这非常有用。我认为生病的脚本一开始,看起来似乎比较容易,然后,对脚本的任何建议?我该怎么做? – 2011-12-31 03:17:20

+0

我更新了我的答案 – 2011-12-31 03:28:46

+0

非常感谢您的帮助 – 2011-12-31 03:32:01