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

为多个站点和用户设置Apache和SVN的最佳实践?,svn,version-control,apache2,Svn,Version Control,Apache2,我刚开始为一家新公司工作,是一名内部网络开发人员。到目前为止,他们一直在外包网站的开发工作,并决定将其内部,因此我的就业 我只在自己的项目上工作过,从未使用过版本控制 我们刚刚聘请了另一名web开发人员与我一起工作,我被要求研究版本控制,因为将有多达4人需要访问网站文件 在版本控制下运行Apache站点时,我完全无法获得良好的设置 我们目前有一个运行Ubuntu和Apache2的本地开发web服务器和一个数据中心的实时web服务器。本地服务器承载多个网站,每个网站的根目录中都有一个子文件夹,即/

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

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

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

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

我们目前有一个运行Ubuntu和Apache2的本地开发web服务器和一个数据中心的实时web服务器。本地服务器承载多个网站,每个网站的根目录中都有一个子文件夹,即/home/htdocs/sitename\u com和/home/htdocs/sitename2\u com。我们目前使用samba共享或FTP在PC上编辑网站文件。我想做的是安装SVN,这样用户就可以签出单个站点代码的工作副本,进行任何更改,然后将更改提交回存储库。然后我们需要能够测试站点,然后当happy将文件FTP到我们的实时服务器时

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

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

我有几个问题:

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

    在为网站设置SVN时,我似乎无法在互联网上找到任何关于最佳实践的明确信息。很明显,VSN如何与C++应用程序的源代码相关,在那里你只需在机器上编译你的工作副本进行测试,但是网站必须运行在Web服务器上,并且每个工作副本都需要在Web服务器上进行测试,然后再回到存储库。 服务器上有多个站点,每个站点上有多个用户。我们需要能够同时在站点上工作,在一个临时区域中测试所有更改,并且还希望有一个实时区域,在该区域中我们将有一个实时站点的精确镜像,在上传到实时服务器之前,我们可以合并任何更改并进行测试

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

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


    提前谢谢

    我们有一些类似的需求,并做了以下工作:

    • 设置SVN服务器(Git是一个选项,但在本例中太复杂了,因为当时没有非常好的GUI可用)-我们使用SVN附带的SVN守护进程
    • 设置测试web服务器,运行所需的软件(Apache等)
    • 让用户更新并向SVN存储库提交更改
    • 设置一个简单的脚本,该脚本执行以下类似的操作。基本上每小时(或在需要时)从SVN服务器中提取所有更改

      cd/var/www/testdata/

      svn更新-f

    当然,以前您必须签出存储库

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

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


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

    如果您想查看每个提交,您也可以直接将每个提交/修订签出到其自己的web子系统中,这将允许您使用web浏览器访问每个提交的源代码状态

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