为多个站点和用户设置Apache和SVN的最佳实践?

时间:2010-01-12 12:00:40

标签: svn version-control apache2

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

我只是自己在项目上工作,从未使用过版本控制。

我们刚聘请了另一位网络开发人员与我一起工作,并且我被要求调查版本控制,因为最多有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根目录中的暂存区域进行测试?
  5. 或者有更好的方法吗?

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

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

    我在互联网上找到的所有示例都使用托管单个站点的单个服务器的示例。在我的情况下,我们的实时服务器托管大约10个站点。

    如果有人能就如何设置它,Apache目录结构,存储库结构等方面给我建议我会非常感激。

    提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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

    cd /var/www/testdata/

    svn update -f

当然,以前你必须checkout存储库。

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

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


它几乎听起来像你需要的是Git。 Git允许在准备好时合并的单独分支(例如,对于每个用户或已实现的功能)。

如果要查看每个提交的提交,您可以选择将每个提交/修订直接签出到自己的web子站点,这样您就可以使用Web浏览器访问每个提交的源代码状态。

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