设置开发服务器

时间:2010-02-22 20:53:35

标签: php

在开发PHP应用程序时,最好有一个你开发/测试的服务器,然后是一个现成的服务器,一旦它准备就把它放好。

好的,但是怎么样?

如果您通过托管公司托管,您如何设置自己的开发服务器进行测试,模仿所有LAMP设置作为您的实时服务器?因为如果它们不同,那么测试一个与现场不同的那个,就会失去目的吗?

通过同一个托管公司更好地使用另一台服务器,并要求他们让开发和实时设备具有完全相同的设置吗?

在“开发服务器”中,从“实时服务器”检查文件的最佳工作流程是什么,然后将它们重新检入实时服务器?

谢谢!

5 个答案:

答案 0 :(得分:14)

我日常工作中的两点:

  • XAMPP是您在Windows上设置Apache / mySQL / PHP堆栈的一站式商店。我用它开发并部署到Linux机器上,没问题。

  • 如果您想在家庭服务器或虚拟机上设置Linux环境,我刚才提出了一个您可能感兴趣的问题:Pre-installed Linux for Web Developers?

  

通过同一个托管公司更好地使用另一台服务器,并要求他们让开发和实时设备具有完全相同的设置吗?

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

不要忘记PHP是一种非常便携的语言。如果你不使用任何特定的命令行工具或完全奇特的扩展,使PHP应用程序在Linux上工作,甚至在Windows上都是一些设置和细节的问题,但不再是一个大问题。

  

在“开发服务器”中,从“实时服务器”检查文件的最佳工作流程是什么,然后将它们重新检入实时服务器?

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

  1. 在IDE中本地编辑文件

  2. 通过IDE的内置FTP功能上传到开发服务器

  3. 在开发服务器上测试

  4. 一旦测试了某个功能并在开发服务器上运行(即它已“完成”),请将整个包检查到Subversion(或其他)存储库

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

  6. 这样,您对实时环境所做的每一项更改都会记录在版本控制系统中,如果是秒,则还原到以前的版本是一个问题。对我而言,与在任何地方使用纯FTP相比,这是一个巨大的解脱。

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

答案 1 :(得分:3)

您可以通过phpinfo()检查所有生产服务器的设置,并将其复制到您的开发环境中,无需将它们放在同一个提供商上。

我通常将代码提交到生产环境中的源代码控制和结帐,通过.htaccess隐藏所有存储库信息,例如,请参阅here

另一个(不太推荐)选项是在开发机器中拥有主源,一旦准备好FTP,就会有各种免费工具只能上传更改的文件。

答案 2 :(得分:2)

至于服务器端,您有多种可能性。你有Apache时可以使用vHosts,有两个不同的DocumentRoots:一个用于实时版本,一个用于开发。 或者您可以在本地计算机上使用开发环境,然后在专用服务器/网站空间上使用实时(+ staging)。

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

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

考虑到推出的工作流程,您应该创建一个应用程序配置,您可以在其中定义多个应用程序环境(开发和生产),这些环境会根据URL,已定义的环境变量或其他内容自动选择其环境。因此,在Zend Framework中,这种配置驱动的行为内置于您的应用程序中。在config.ini文件中,您有一个如下所示的模板:

[production]

[staging : production]

[testing : production]

[development : production]

在那里,您可以为数据库连接定义不同的选项,例如

因此,当您将开发机器上的更改检查到subversion并在实际系统上进行部署时,您不必更改配置。它应该工作。

答案 3 :(得分:0)

就工作流程而言,这通常是针对小型网站的情况。但是,根据项目的大小,使用Git或Subversion等版本控制可能是个好主意。

答案 4 :(得分:0)

要求托管公司为您设置两个相同的托管环境,您无需前往任何地方。大多数时候他们拥有最新版本的php,mysql和apache。我在Linux机器上开发,已经有灯泡设置,所以我的工作流程非常无缝,我使用带有post-commit钩子的svn上传到实时服务器。 如果您担心您的'dev'服务器和托管服务器之间不兼容,最简单的方法就是创建一个phpinfo文件,

<?php phpinfo(); ?>

并检查您的托管服务器是否禁止您在开发服务器上使用的任何特殊功能(托管公司很少阻止重要的事情,如果他们这样做,您可以轻松地发送支持电子邮件和99%的他们将协助你启用你需要的任何细节的时间。但是就设置你的开发环境而言,我会走上抓住虚拟盒的轨道,并安装ubuntu,找到一个教程,让ubuntu成为一个web服务器(严重的只是一个很少有apt-get命令),你将抽烟加油!