12

我想为我用 PHP 编写的新网站设置两个环境。一 - 开发新版本并对其进行测试。第二个产品将提供我实际稳定的网站版本。

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

您能否给我一些建议,从这个起点到哪里去?有没有关于这方面的书(从实际的角度来看?)或者你有经验或提示需要注意什么,什么是重要的,以使这个过程对我和参与开发新项目的其他人有益?

4

4 回答 4

13

对于初学者,请使用以下三个:

  1. SVN - 这将为您提供源代码控制并允许您跟踪更改。您可能希望在此基础上获得 GUI(Tortoise 是一种流行的)以简化学习曲线。

  2. RSYNC - 这将允许您使用单个命令简化本地和远程站点之间的同步。RSYNC 使用差异引擎进行同步,这意味着增量同步会在几秒钟内发生。在紧张的编程过程中,我有时会在一小时内同步 4-5 次,因为我可以很容易地快速推出小改动。

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

从长远来看,仅这三个就可以为您节省大量时间并允许您扩展。稍后您可以研究自动化构建工具、单元测试框架、xml 文档框架等来构建一些重要的产品。

于 2009-01-01T16:53:58.330 回答
6

我使用这样的设置,所以我可以给你一些关于如何做到这一点的提示。我已经这样做了一段时间了,在这里和那里解决问题,感觉这是一个我可以诚实地说非常有效的设置。

小提示:我在 OSX 上工作,因此如果您是 linux/windows 用户,使用的特定应用程序可能与您有所不同。

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

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

我使用 Subversion(或简而言之,SVN)来满足我的版本控制需求,此外,每当我将新更新的版本发送到 SVN 服务器时,我可以轻松添加“挂钩”以自动更新我的在线生产服务器。SVN 还允许您在同一个项目中轻松地与多个人一起工作。有关 SVN 以及如何使用它的更多信息,我建议在这里找到一本很棒的(免费的)在线书籍:http: //svnbook.red-bean.com/

简而言之:我在本地使用 MAMP 为我提供本地“工作”服务器。之后,我在 staging.abc.com 位置进行在线测试,看看是否一切正常,可能允许其他人看到该项目(例如,如果您希望您的客户看到正在发生的事情),然后我实际上是通过将项目放在实际域上来发布项目的。

可以做更多的事情来优化您的工作流程,但这应该可以帮助您入门。

希望这可以帮助!

-戴夫

于 2009-01-01T16:39:46.143 回答
3

如果可能的话,我更喜欢在开发人员本地机器上进行开发。如果涉及到其他开发人员,您可能希望设置您的版本控制,以便数据库架构、javascript、css 和 php 代码都可以很容易地在开发人员的个人框中检出和设置(假设他们有正确的 LAMP/ WAMP 设置)

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

测试网站签出后,只需将代码从版本控制导出到实时网站所在的位置即可。使用 svn,您实际上可以使用 svn update 指定指示当前实时版本的修订版或标签来更新实时代码。

我会进一步建议将一些设置(例如 db access/username/pass)保留在不受版本控制的单独包含文件中。将其保留在其他地方,让开发人员在他们的 PC 上插入对本地数据库的访问权限。在您的服务器上,插入访问数据库所需的一切。这应该是非常微不足道的代码(定义一些变量),因此不对其进行版本控制应该没什么大不了的。如果您愿意,您可以对模板版本进行版本控制,但我不会将真实的数据库信息放入版本控制中。

于 2009-01-01T16:32:54.443 回答
0

如果您想使用 MAMP 或 WAMP 在本地开发,然后将其推送到 github,然后从 github 更新您的实时站点,这是一个很好的起点: http ://www.mybringback.com/bringers/14509/git-local -and-shared-server-development-environment-with-ssh-setup/

希望有帮助。

于 2013-10-12T20:50:25.153 回答