2009-01-01 129 views
12

我想为我用PHP编写的新网站设置两个环境。一个 - 开发新版本并测试它们。第二次生产,我的实际稳定版本的网站将可用。PHP中的开发和生产环境

PHP中的网站将包含许多PHP和其他文件(JS,图像等)。所以我认为如何以最好的方式准备这个环境,以便轻松实现源代码管理,将网站从开发环境快速复制到生产环境,并为网络上的人员提供开发版本,以便他们能够看到实际的工作进度并建议更改或报告错误。

你能否给我一些建议,从哪里出发呢?有没有关于这方面的书籍(从实际的角度来看?),或者您有经验或技巧要注意什么,以及让这个过程变得简单并且对我和其他参与开发新项目的人来说很重要。

回答

3

如果可能的话,我更愿意在开发者本地框上进行开发。如果涉及其他开发人员,则可能需要设置版本控制,以便数据库架构,javascript,css和php代码可以很容易地签出并设置在开发人员的个人框中(假设他们具有正确的LAMP/WAMP设置)

我也看到过,人们在服务器上维护一个测试网站,在那里进行主动开发。我会避免这种情况进行积极的开发,但将其用于最新签入代码(最新版本)的黑盒测试。

一旦您的测试网站检出,那么它将代码从您的版本控制导出到实时网站的位置。有了svn,你可以用svn update更新实时代码,指定一个修订版或标签来指示当前的实时版本。

我会进一步建议保留一些设置,如db访问/用户名/密码,在一个单独的不受版本控制的包含文件中。保持这个地方,让开发人员在他们的PC上插入对本地数据库的访问权限。在您的服务器上,插入您需要访问数据库的所有内容。这应该是非常简单的代码(定义了一些变量),所以没有版本控制应该不是什么大问题。如果你喜欢,你可以版本控制一个模板版本,但我不会把真正的数据库信息放入版本控制。

6

我用这样的设置工作,所以我可以给你一些关于如何做到这一点的提示。我一直这样做了一段时间,在这里和那里找出纠结的问题,并且觉得这是一个我可以诚实地说的设置是非常富有成效的。

小记:我在OSX上工作,所以如果你是linux/windows用户,使用的特定应用程序可能与你有点不同。

我使用MAMP(www.mamp.info)在我的Mac上运行一个生产“服务器”,使用PHP和MySQL轻松为我提供Apache服务器。您可以使用类似XAMPP的工具或手动安装所有内容,这取决于您。

然后我有我的活服务器,我的网站和客户网站的托管。对于每个新的网站项目(让我们以abc.com为例),我创建了一个名为staging.abc.com的子域,我在其中进行测试。在实际上线之前测试完全相同的硬件和软件是件好事。

我使用Subversion(或者简称SVN)来满足我的版本需求,并且增加了额外的好处,只要我将最新版本发送到SVN服务器,我就可以轻松添加'钩子'来自动更新在线生产服务器。SVN还允许您轻松地与同一项目上的多个人一起工作。有关SVN以及如何使用它的更多信息,我建议您在这里找到很棒的(免费的)在线书籍:​​

简而言之:我在本地与MAMP一起工作,为我提供本地“工作”服务器。之后,我在staging.abc.com上的在线测试中查看是否一切正常,可能允许其他人看到该项目(例如,如果您希望客户端看到正在发生的事情),以及之后我实际上将该项目发布到实际的域名上。

还有很多事情可以做,以优化您的工作流程,但这应该让你开始。

希望这会有所帮助!

-Dave

13

对于初学者使用以下三种:

  1. SVN - 这会给你的源代码控制,并允许您跟踪更改。你可能想要在这个之上获得图形用户界面(乌龟很受欢迎),以减轻学习的难度。

  2. RSYNC - 这将允许您使用单个命令简化本地和远程站点之间的同步。 RSYNC使用diff引擎进行同步,这意味着增量同步在几秒钟内发生。在强烈的节目编排过程中,我有时会在一小时内同步4-5次,因为我可以如此轻松地快速地推出很小的变化。

  3. MySQLDump - 这将允许您从生产站点导入/导出数据。我通常每周都会这样做一次,以便在本地服务器上获取生产数据,这不仅为我提供了本地备份,还让我可以在本地测试环境中查看生产数据。

仅仅这三个就能为您节省大量时间,并且可以让您缩放。稍后,您可以查看自动构建工具,单元测试框架,xml文档框架等来构建一些严重的产品。

+0

为什么rsync如果你能从服务器上的SVN检出你当前的修订版? – 2009-02-03 10:49:34