gpt4 book ai didi

svn - 用于部署到我们服务器的 PHP 代码组织

转载 作者:行者123 更新时间:2023-12-02 03:56:21 25 4
gpt4 key购买 nike

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

我想要一个好的解决方案,这样我就不必从现在起一年后重新组织它(例如),并且我想要最佳实践和技术来确保我的代码能够存活足够长的时间,以避免以后重新设计它。 这里没有使用框架

这是我的新环境:

  • 8 台网络服务器 LAMP(Apache 2、PHP 5.3.5、CentOS 5)-(Xeon E5645、32 GB RAM、RAID 10 1 TB 15k RPM)- 一个负载均衡器来管理它们
  • 12 个数据库 MySQL 5.5 服务器(同上),具有复制功能(四主八从)
  • 一个SVN服务器(我们使用的旧服务器)

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

最佳答案

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

这一集中式代码可以位于 SVN 安装中的一个或多个存储库中。所以当你推送时,你只推送你需要推送的内容。

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

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

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

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

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

脚本VS NFS .

创建一个脚本将所有代码推送到八个 Web 服务器中很容易制作。这样做的缺点是您需要确保每台服务器上的所有文件夹和所有文件都相同,以避免错误。

此外,如果您的网络出现延迟或在推送期间连接断开,某些服务器将不会有相同的代码。再次,更多错误。与 NFS 相比,它的运行速度要快一些。解决方案。

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

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

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

// 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-file-systems

关于svn - 用于部署到我们服务器的 PHP 代码组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com