2011-07-04 29 views
5

我维护托管在Web服务器中的自定义PHP应用程序(为我构建)。有时我会添加新功能或修复错误,并且在本地测试后,我会将更改上传到Web服务器。这不是一个关键的应用程序(是一个游戏),但大多数时候有一些人连接。如何优化升级Web应用程序?

我做升级的应用程序的步骤:

  1. 通过FTP(FileZilla中)访问
  2. 上传重定向所有的人(除了我的IP).htaccess文件到mantain.html文件
  3. 检查访问被拒绝,除了我的其他IP。
  4. 备份旧的代码
  5. 上传新的代码
  6. 进入到phpMyAdmin
  7. 备份数据库
  8. 执行脚本的DB
  9. 测试,所有工作正常(如果不是 - >还原的备份)
  10. 删除.htaccess文件

我通常平均花30分钟做这些步骤,我很想如果有什么方法可以优化,自动化或做点什么来花费更少的时间,就可以响铃。另外我知道,如果我可以自动化某些步骤,则不太容易出现错误。

+0

你有通过shell访问远程机器吗?如果是这样,那将使得很多东西自动化变得更容易。 – Flimzy

+0

是的,我有shell访问 –

+0

搜索“部署php应用程序”。 – cweiske

回答

1

其他几个答案建议PHP特定的部署工具,但由于我对PHP不太熟悉,我会提供一些一般性提示。不过,这些建议对于已经提出的一些其他工具可能是多余的。

首先,不要每次都上传一个新的.htaccess文件 - 只要在你的服务器上有两个文件。也许称他们为。htaccess-permanent。htaccess-maintenence。然后创建一个符合链接的应该是活动的。然后,一旦您测试了访问被正确拒绝一次,您不必每次执行升级时都要执行此手动测试阶段。

我还会写一个shell脚本来为我做所有事情。我的新的工作流程是这样的:

  1. 上传新的代码服务器在一个名为新目录/
  2. 登录通过外壳的服务器,并执行升级脚本
  3. 测试新网站
  4. 运行升级封边

结束。

现在到了有趣的部分,该升级脚本将做到这一点:

  1. 将删除的.htaccess符号链接,并重新创建它,指向的.htaccess-maintenence
  2. 它将复制当前代码电流/备份/
  3. 将备份数据库,使用PHPMyAdmin的使用
  4. 它会移动的内容完全一样的命令新/ (刚刚上传)到电流/
  5. 它将执行脚本的DB

升级封边脚本只是:

  1. 删除的.htaccess符号链接,并重新创建它,指向的.htaccess永久再次

唯一的可能是棘手的部分这里将获得PHPMyAdmin用来备份数据库的确切命令,但它可能是一个简单的mysqldump命令,您可能从PHPMyAdmin或某些日志中获取该信息,或者其他信息。对不起,我不知道更多关于PHPMyAdmin在这个特定领域的帮助。

1

看一下像Capistrano这样的部署工具,可以让您自动执行这些步骤。

1

我通常平均花费30分钟时间来完成这些步骤,而且我想知道是否有任何方法可以优化,自动化或做某些事情以节省更多时间。

有很多方法。对于初学者来说,第一步到第八步可以在一个shell脚本中完成。您可以结账Phing,一个自动部署系统。另外,您可能需要深入研究continuous integration以更好地控制软件的部署方式和时间。

手动执行此操作就像您所说的那样要求麻烦。

0

对于初学者,您可以将文件上传到新的webroot中,完成后,切换Apache中的DocumentRoot,使其在复制过程中保持可用状态。对于任何共享文件,您可以使用符号链接到公用文件夹(例如,上传的图像等)

如果您不关心数据库的一致性,那么您也可以在操作期间进行备份。对于不会“中断”功能的迁移,如果一致性不成问题,您也可以迁移它并在另一个主机名的新webroot上对其进行测试。

最好的选择总是使用多个网络服务器,以便您可以在另一个服务器运行时将其中一个脱机进行测试,但是您仍然会遇到一致性问题,但是我认为这不是一个选项,不要提及它。