【问题标题】:Best practice for setting up Apache and SVN for multiple sites and users?为多个站点和用户设置 Apache 和 SVN 的最佳实践?
【发布时间】:2010-01-12 12:00:40
【问题描述】:

我刚刚开始为一家新公司工作,担任内部网络开发人员。到目前为止,他们一直在外包他们网站的开发工作,并决定将他们带到内部,因此得到了我的聘用。

我每个人都只在自己的项目上工作过,从未使用过版本控制。

我们刚刚聘请了另一位网络开发人员与我一起工作,我被要求研究版本控制,因为将有多达 4 人需要访问网站文件。

在版本控制下运行时,我完全无法获得良好的 Apache 站点设置。

我们目前有一个运行 Ubuntu 和 Apache2 的本地开发 Web 服务器和一个位于数据中心的实时 Web 服务器。本地服务器托管多个网站,每个网站在 Web 根目录中都有一个子文件夹,即 /home/htdocs/sitename_com 和 /home/htdocs/sitename2_com。我们目前使用 samba 共享或 FTP 在 PC 上编辑网站文件。我想要做的是安装 SVN,以便用户可以签出单个站点代码的工作副本,进行任何更改,然后将更改提交回存储库。然后,我们需要能够测试这些站点,然后在满意时将文件通过 FTP 传输到我们的实时服务器。

现在,在考虑设置 SVN 时,我很早就意识到,当用户在他们的机器上签出工作副本时,他们实际上无法测试更改,直到将更改提交回存储库。这是因为文件是 PHP 文件,需要通过 Web 服务器执行。现在我可以将 XAMP 放在每台机器上,但是这将与开发服务器上的 Apache2 安装有不同的配置。这对我来说不是一个选择。

我猜工作副本必须不是在用户机器上创建,而是在开发服务器的 Web 根目录中创建,这与存储库本身是同一台服务器。我可以为用户的工作副本文件夹创建一个 samba 共享,以便他们可以从他们的 Windows 机器上进行更改。

我有几个问题:

  1. 您可以在浏览器中查看存储在存储库中的网站而无需先检查它吗?
  2. 如果不是,则必须将站点检出到同一服务器的 Web 根目录中的某个位置?
  3. 我应该为每个站点使用一个存储库还是为每个站点使用一个包含子文件夹的存储库?
  4. 当用户将他们对工作副本所做的更改提交回存储库时,我们需要测试这些更改以及其他所有人可能已提交的更改。是否可以让 SVN 将提交的更改复制到 Web 根目录中的暂存区域进行测试?

或者有更好的方法吗?

在为网站设置 SVN 时,我似乎无法在 Internet 上找到有关最佳做法的任何明确信息。很清楚 SVN 与 C++ 应用程序的源代码之间的关系,您只需在计算机上编译工作副本以进行测试,但网站必须在 Web 服务器上运行,并且每个工作副本都需要在 Web 服务器上进行测试,然后再进行检查进入存储库。

服务器上有多个站点,每个站点上有多个用户。我们需要能够同时在站点上工作,测试暂存区域中的所有更改,并且还想要一个实时区域,我们将在其中拥有实时站点的精确镜像,我们可以合并任何更改并在之前进行测试上传到实时服务器。

我在 Internet 上找到的所有示例都使用托管单个站点的单个服务器的示例。在我的例子中,我们的实时服务器托管了大约 10 个站点。

如果有人能给我关于如何设置、Apache 目录结构、存储库结构等方面的建议,我将不胜感激。

提前致谢!

【问题讨论】:

    标签: svn version-control apache2


    【解决方案1】:

    我们有一些类似的需求并做了以下事情:

    • 设置一个 SVN 服务器(Git 是一个选项,但在这种情况下太复杂了,因为当时没有很好的 GUI 可用) - 我们使用的是 SVN 附带的 svn-daemon。
    • 设置测试网络服务器,运行您需要的软件(Apache 等)。
    • 让用户更新提交他们对SVN存储库的更改。
    • 设置一个简单的脚本,执行类似于以下脚本的操作。基本上每小时(或在需要时)从 SVN 服务器中提取所有更改。

      cd /var/www/testdata/

      svn update -f

    当然,之前您必须checkout 存储库。

    您不必担心用户会覆盖彼此的更改。 SVN 检测到并强制提交冲突更改的用户合并它们)。

    这将允许快速测试所做的更改。您还可以选择安装Redmine,它与 SVN 紧密集成,允许您将 SVN 存储库与票证和错误报告紧密集成。


    听起来你需要的是 Git。 Git 允许在准备就绪时合并单独的分支(例如,针对每个用户或实现的功能)。

    如果您想查看每个提交,您也可以直接将每个提交/修订签出到其自己的 Web 子目录中,这样您就可以使用 Web 浏览器访问每个提交的源代码状态。

    但无论如何都需要服务器端的脚本。

    【讨论】:

      猜你喜欢
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 2012-05-10
      相关资源
      最近更新 更多