Php 如何将网站部署到Web服务器?
在我的公司,我们的商业网站有一个由8名web开发人员组成的团队(完全用PHP编写,但这不重要)。团队中的每个人都在同一时间从事不同的项目,每当他们完成任务时,他们都会立即部署它(因为现在业务发展很快) 目前,开发是在一个共享服务器上进行的,所有开发人员都在同一个代码库上工作(使用RCS将文件“锁定”到其他人之外)。当部署到期时,更改的文件被复制到“暂存”服务器,然后同步脚本将文件上载到主Web服务器,并从主Web服务器分发到其他9台服务器 非常高兴的是,web开发团队向我们寻求帮助以改进流程(在我们抱怨了一段时间之后),现在我们对设置他们的开发环境的想法如下:Php 如何将网站部署到Web服务器?,php,svn,deployment,webserver,Php,Svn,Deployment,Webserver,在我的公司,我们的商业网站有一个由8名web开发人员组成的团队(完全用PHP编写,但这不重要)。团队中的每个人都在同一时间从事不同的项目,每当他们完成任务时,他们都会立即部署它(因为现在业务发展很快) 目前,开发是在一个共享服务器上进行的,所有开发人员都在同一个代码库上工作(使用RCS将文件“锁定”到其他人之外)。当部署到期时,更改的文件被复制到“暂存”服务器,然后同步脚本将文件上载到主Web服务器,并从主Web服务器分发到其他9台服务器 非常高兴的是,web开发团队向我们寻求帮助以改进流程(在
- 一个带有虚拟目录的开发服务器,这样每个人都有自己的代码库
- SVN(或任何其他VCS)负责跟踪变更
- 用于测试保存最新签入代码的中央服务器
- 连续积分
- 对代码的签入运行单元测试以检查它是否没有bug
- 如果代码包含bug,则可能会拒绝该代码
- 夜间锻炼
- 只发布最后一个没有bug的构建
您可能无法找到完美的解决方案,尤其是一开始,但您使用所选解决方案的次数越多,每个人都会感到更舒适,并且能够提出改进建议。我们每晚都会检查稳定性。并使用ant脚本进行部署。它的配置和使用非常简单。Cassy-显然,要完全理顺源代码管理,您还有很长的路要走,但听起来您已经走上了正轨 拥有单独的沙盒肯定会对事情有所帮助。接下来,请确保网站始终只是subversion的特定修订、标记或分支的干净签出 我们使用git,但我们有类似的设置。我们用一个版本号标记一个特定的版本(在git中,我们还可以在标记中添加一个描述;这对于发行说明很好!),然后我们有一个脚本,任何有权“发布”的人都可以运行该脚本,它包含两个参数——将要更新的系统(数据中心,以及如果我们正在更新测试或生产服务器)然后是版本号(标签) 该脚本使用sudo在共享帐户中运行发布脚本。它对相关版本进行签出,最小化javascript和CSS,将代码推送到环境的相关服务器,然后重新启动需要重新启动的内容。发布脚本的最后一行连接到其中一个Web服务器并跟踪错误日志 在上,我们在每个页面的底部添加一条html注释,注释中包含当前服务器名称和版本,这样就很容易看到“现在正在运行什么?”
还有一大堆其他的内务管理任务,比如…您可能可以使用Capistrano,尽管它更适合ruby,但有一些描述了如何在PHP中使用它 我认为Phing可以用于CVS,但不能用于SVN(至少这是我上次读到的) 还有一些类似Capistrano的项目是用PHP编写的 否则,还有一个定制的解决方案:
特定目录
您应该考虑对单个项目(在相同的代码库)使用分支和合并,如果它们对共享代码库进行了巨大的更改。
我们通常有一个本地开发环境用于测试(也就是说,webserver本地)未受限制的代码(您根本不想提交不起作用的代码),但该开发环境甚至可以位于使用共享文件夹的Separate服务器上 然而,提交的代码在投入生产之前应该部署到临时服务器进行测试。我昨天对另一个问题给出了答案。基本上,您可以在分支中工作并在上线之前进行集成 你需要做的最重要的事情是处理文件的更改,而不是单个文件。一旦有了分支,就没有真正的当前版本,只有在中有不同更改的版本。自然地检查存储库,跟踪内容,并进行部署基本过程是在Subversion中进行管理,在Trac中跟踪repositoy和开发人员,并使用Ant部署脚本将站点推出所需的设置。Ant允许您轻松地将项目部署到特定位置。(Dev/test/prod)等。不幸的是,无法确定构建是否没有bug。事实上在当前的工作方式中,没有构建这样的东西……听起来像是在开玩笑——这些都是很好的事情,但他们必须先走才能运行。如果你安装VersionControl_SVN PEAR包,Phing实际上可以使用SVN。