如何设置我的开发环境以将代码滚动到实时网站?

时间:2009-04-06 00:40:27

标签: php cakephp

过去,我一直在编辑我的所有网站;并不太关心我的2位访客看到错误信息。

然而,有一天我可能会有超过2位访客。测试我的更改然后使所有更改同时生效的最佳方法是什么?

我是否应该将单个文件复制并粘贴到子文件夹中并进行编辑,然后在完成后将其复制回来?如果我的代码中包含完整的URL(如果我移动它们会破坏)会怎样?也许我可以使用一些.htaccess hackery绕过这个?数据库虚拟测试数据怎么样?我应该欺骗我所有的MySQL表并引用它们吗?

我正在使用CakePHP来处理我所关注的特定项目,但我很想知道人们正在采用哪种方法使用Cake(哪些可能有工具来帮助解决这个问题? ),没有框架。


我已经收到很多关于SVN的建议,这听起来不错,但不幸的是我的主持人不支持它:\

5 个答案:

答案 0 :(得分:18)

您可以做的最好的事情是创建一个测试更改的临时环境。登台环境(理想情况下)是生产系统的完整工作副本。这样可以防止您遇到很多麻烦和无意中的生产崩溃。

如果您正在处理一个小项目,最好的办法是在本地重建您的远程站点(包括数据库)。对所有更改进行编码,然后,一旦您对完成后感到满意,就可以一次性将更改部署到远程站点。

答案 1 :(得分:5)

我建议将您的网站代码置于完全版本控制之下(git或subversion)。在单独的私有沙盒服务器中测试和维护您的源代码,并在生产站点准备发布时查看最新的稳定版本。

对于数据库支持,即使是小型项目,我也会维护单独的开发和生产数据库。您可以对用于生成和维护架构的SQL进行版本控制,并测试或引导数据以及站点的其余部分。从一个易于分离的配置文件管理您的站点使用的数据库环境,并告诉您的版本控制解决方案忽略它。

绝对网址将成为一个问题。如果您无法避免它们,您可以始终将主机名存储在同一配置文件中并根据需要进行读取...当然,除了样式表和Javascript资源之外。我对该问题的第二个选择是URL重写魔术或它在开发服务器中的等价物,当我想测试依赖于它们的功能时,我的最后选择就是弄乱/etc/hosts文件。

答案 2 :(得分:3)

我在我的笔记本电脑上设置了一个开发服务器,它尽可能地复制我的Web服务器(服务器软件和配置,操作系统,文件系统布局,安装的软件等)。这样我就可以在笔记本电脑上编写代码了在本地测试;一旦我在那里工作,我就把它复制到服务器上。有时会出现一些问题,因为两台计算机之间存在细微差别,但这些问题总是很快得到解决(如果不是这样的话,我将我的网站放在SVN存储库中,以便我可以随时恢复它)。

在我曾经维护的另一个网站上,我使用了一种略有不同的策略:我在网站中指定了一个URL路径,该路径将是基站的开发版本。也就是说,http://www.example.com/devweb通常会镜像http://www.example.comhttp://www.example.com/devweb/foo/bar.php会镜像http://www.example.com/foo/bar.php等。我在文档根目录下创建了一个文件夹devweb,而不是复制所有文件,我配置服务器,以便如果/devweb目录中不存在请求的文件,它将在文档根目录下查找它。不过,这是一个比单独的开发服务器更脆弱的设置。

答案 3 :(得分:2)

我有许多用CakePHP编写的网站。我使用生产服务器上的数据库在我的本地机器上开发和测试(我只有一个适用于我的静态IP地址的MySQL登录)。

所有代码都被检入Subversion,然后我有一个持续集成服务器--Hudson:

https://hudson.dev.java.net/

这将在生产计算机上构建和部署我的项目。它只是检查特定项目的subversion中的代码,然后运行一个简单的脚本来SSH /将文件复制到服务器上的登台或生产位置。您可以将其设置为手动过程(我当前已经过)或者您可以对其进行设置,以便在签入代码后进行部署。还有许多其他CI工具可以设置为执行此操作(具有看看Xinc吧。

http://code.google.com/p/xinc/

对于绝对URL,您始终可以在主机文件中设置某些内容,以便在您的计算机上本地解析该站点。它适用于我,只是不要忘记以后把它拿出来:))

希望有帮助...

答案 4 :(得分:2)

我有一个config / database.php版本,它使用php服务器变量“SERVER NAME”来确定运行该应用程序的系统。然后,当我在我的家庭系统,开发站点(与实时机器共享相同规格)和实时机器上克隆我的git repo时,它们都连接到各自的数据库。

我粘贴在这里,但我也相信它可以在面包上找到。

http://pastebin.com/f1a701145