如何优化升级Web应用程序?

时间:2011-07-04 07:50:14

标签: php mysql upgrade

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

我为升级应用程序所采取的步骤:

  1. 通过FTP访问(Filezilla)
  2. 上传.htaccess文件,将所有人(我的IP除外)重定向到mantain.html文件
  3. 检查除我的以外的其他IP的访问是否被拒绝。
  4. 备份旧代码
  5. 上传新代码
  6. 转到PhPMyAdmin
  7. 备份数据库
  8. 执行DB的脚本
  9. 测试一切正常(如果没有 - >还原备份)
  10. 删除.htaccess文件
  11. 我通常花费30分钟来完成这些步骤,我想知道是否有任何方法可以优化,自动化或做一些事情来花更少的时间。此外,我知道如果我可以自动化某些步骤,则不太容易出错。

4 个答案:

答案 0 :(得分:1)

查看像Capistrano这样的部署工具,它允许您自动执行这些步骤。

答案 1 :(得分:1)

  

我通常花费30分钟来完成这些步骤,我想知道是否有任何方法可以优化,自动化或做一些事情以减少花费的时间。

有很多方法。对于初学者,可以在单个shell脚本中完成第一步到第八步。您可以签出Phing,一个自动部署系统。此外,您可能希望深入研究continuous integration,以便更好地控制软件的部署方式和时间。

就像你说的那样,手动执行此操作会遇到麻烦。

答案 2 :(得分:1)

其他几个答案建议使用特定于PHP的部署工具,但由于我不熟悉PHP,因此我将提供一些常规技巧。但是,这些建议可能是已经建议的其他一些工具的冗余。

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

我还会写一个shell脚本来为我做大部分事情。我的新工作流程看起来像这样:

  1. 将新代码上传到名为 new /
  2. 的目录中的服务器
  3. 通过shell登录服务器,然后执行升级脚本
  4. 测试新网站
  5. 运行 upgrade-finalize
  6. 结束。

    现在,对于有趣的部分,升级脚本将执行此操作:

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

      upgrade-finalize 脚本只是:

      1. 删除 .htaccess 符号链接,然后重新创建,再次指向 .htaccess-permanent
      2. 这里唯一可能棘手的部分是获取PHPMyAdmin用于备份数据库的确切命令,但它可能是一个简单的mysqldump命令,您可以从PHPMyAdmin或某些日志或其他东西获取该信息。对不起,我不太了解PHPMyAdmin在这个特定领域的帮助。

答案 3 :(得分:0)

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

如果您不关心数据库中的一致性,也可以在操作期间进行备份。对于不“破坏”功能的迁移,如果一致性不是问题,您还可以迁移它并使用其他主机名在新的webroot上进行测试。

最好的选择总是使用多个网络服务器,这样你就可以让一个离线进行测试,而另一个是可操作的,但你仍然会遇到一致性问题,但我认为这不是一个选项,因为你没有提到它。