2010-02-22 123 views
9

在开发PHP应用程序时,最好先开发一个服务器或测试一个服务器,然后将一切准备就绪的服务器放入其中。设置开发服务器

好的,但是怎么样?

如果您通过托管公司托管,您如何设置自己的开发服务器以进行测试,以模拟所有LAMP设置作为您的实时服务器?因为如果他们不同,那么测试一个与活的不相同的测试,是否会破坏目的?

它是否更好地通过同一托管公司使用另一台服务器,并要求他们让开发人员和活动人员拥有完全相同的设置?

什么是最好的工作流程,用于检查“活动服务器”中的文件在“开发服务器”上工作,然后将它们检入到活动服务器中?

谢谢!从我的日常工作

回答

14

两点:

  • XAMPP是在Windows上建立的Apache/MySQL的/ PHP解决您的一站式服务。我用它开发并部署到Linux机器上,没问题。

  • 如果你想建立一个Linux环境中的主服务器或虚拟机上,我问了一个问题,前一段时间您可能会感兴趣:Pre-installed Linux for Web Developers?

它是更好地使用另一台服务器通过同一个托管公司,并要求他们让开发人员和活着的人员拥有完全相同的设置?

如果你可以买得起第二台服务器,它可能是最好的选择。另一方面,您可以随意升级和摆弄本地机器,而这只需要第二台租用服务器的长期成本的一小部分。如果有疑问,我会去当地的一台机器。

别忘了PHP是一种非常便携的语言。如果您没有使用任何特定的命令行工具或完全异常的扩展,使PHP应用程序跨Linux甚至在Windows上工作是一些设置和细节的问题,但不是什么大不了的事情。

什么是最好的工作流程,用于检查“活动服务器”中的文件在“开发服务器”上工作,然后将它们检查回到活动服务器中?

在这个领域有很多很多的意见和做法。就我个人而言,无论我在哪里使用它,以下工作流程都是理想的 - 我仍然在为所有项目和所有客户实现这一目标。通过

  1. 编辑本地的文件在IDE

  2. 上传到开发服务器内置IDE

  3. 测试开发服务器

  4. 上一旦功能测试和工程的FTP功能在开发服务器上(即“完成”),检查整个包到Subversion(或其他)存储库中

  5. 在实时服务器上,建立脚本检查存储库中的最新版本,将其下载到具有版本号的目录中,完成后,将指向前一版本的符号链接更改为最新版本。

这样,每次改变您对真实环境中的版本控制系统记录下来,并恢复到以前的版本是,如果秒的问题。对我来说,与使用纯FTP到处相比,这是一个巨大的缓解。

也可能是有趣的问题:Setting up a deployment/build/CI cycle for PHP projects

+0

注意:如果你有一台Linux机器,不需要XAMPP,大多数Linux都会预先配置好(或者可以通过他们的软件包管理工具轻松进行配置)。 – 2010-02-22 21:17:34

+0

步骤1-3我完全理解,我没有任何版本控制系统的经验,所以我将在第4步中向Google Subversion提供信息。但是,您能否指出我将在何处解释如何实现第5步?谢谢!!! – 2010-02-22 21:41:26

+0

当我检查时,XAMPP和其他堆栈做了一个垃圾工作。他们应该建立一个_development_环境,但他们都没有为开发设置PHP。 display_errors应该是On,但事实并非如此。使用它们的人最终会问这些愚蠢的问题。 – 2012-10-13 20:33:46

3

您可以通过phpinfo()检查所有生产服务器的设置,并将其复制在你的开发环境,没有必要让他们在同一个供应商。

我通常会将代码提交到源代码管理,并在生产环境中签出,通过.htaccess隐藏所有存储库信息,例如,请参见here

另一个(不太推荐的)选项是在开发机器上安装你的主源代码,一旦它准备好了FTP,就有各种免费工具可以上传更改后的文件。

+1

一个这样的工具是FileZilla。上传文件时,可以选择是否覆盖文件,覆盖不同的文件大小,或者覆盖源文件是否更新 – Tarka 2010-02-22 21:08:19

2

至于服务器端,你有多种可能性。当你有Apache时,你可以使用vHosts,有两个不同的DocumentRoots:一个用于live版本,另一个用于开发。 或者您可以在您的本地机器上安装开发环境,然后在您的专用服务器/网络空间上进行实时(+临时)任何操作。

在我们目前的项目,我们有一个三层系统:

开发,分期和生活。分期和生活几乎是一样的,所以我可以消除从开发到分期的任何问题。它在启用之前为我提供了另一个安全层,并最终注意到出现了问题。

考虑到推出的工作流程,您应该创建一个应用程序配置,您可以在其中定义几个基于URL,已定义的环境变量或其他内容自动选择环境的应用程序环境(开发和生产)。因此,例如,在Zend Framework中,这种配置驱动的行为被嵌入到您的应用程序中。在您的config.ini文件,你有一个模板,看起来像这样:

[production] 

[staging : production] 

[testing : production] 

[development : production] 

在那里,你可以定义不同的选项,让说,你的数据库连接即

因此,当您在开发机器上检查您的更改并将其转换到实时系统上时,您无需更改配置。它应该只是工作。

0

就工作流程而言,这通常是小型站点发生的情况。不过,根据项目的规模,使用版本控制如Git或Subversion可能是个好主意。

0

只需要托管公司为您设置两个相同的托管环境,您不需要去任何地方。他们大部分时间都具有最新版本的php,mysql和apache。我在一台Linux机器上开发,已经安装了灯管设置,所以我的工作流程非常流畅,我使用带提交后挂接的svn上传到实时服务器。 如果您之间你“开发”服务器和托管服务器都担心不兼容,最容易做的事情是做一个的phpinfo文件,

<?php phpinfo(); ?> 

,并检查您的托管服务器不禁止任何特殊功能你可以在你的开发服务器上使用(这很少有托管公司阻止重要的事情发生,如果他们这样做,你可以很容易地发送支持电子邮件,99%的时间他们会帮助你启用任何你需要的细节。就像设置你的开发环境一样,我会走下去抓取virtualbox,并安装ubuntu,找到一个使ubuntu成为web服务器的教程(严重的只有几个apt-get命令),你会用吸气!