我保留了一个托管在Web服务器中的自定义PHP应用程序(为我构建)。有时我会添加新功能或修复错误,在本地测试后我将更改上传到Web服务器。它不是一个关键的应用程序(是一个游戏),但大多数时候有一些人连接。
我为升级应用程序所采取的步骤:
我通常花费30分钟来完成这些步骤,我想知道是否有任何方法可以优化,自动化或做一些事情来花更少的时间。此外,我知道如果我可以自动化某些步骤,则不太容易出错。
答案 0 :(得分:1)
查看像Capistrano这样的部署工具,它允许您自动执行这些步骤。
答案 1 :(得分:1)
我通常花费30分钟来完成这些步骤,我想知道是否有任何方法可以优化,自动化或做一些事情以减少花费的时间。
有很多方法。对于初学者,可以在单个shell脚本中完成第一步到第八步。您可以签出Phing,一个自动部署系统。此外,您可能希望深入研究continuous integration,以便更好地控制软件的部署方式和时间。
就像你说的那样,手动执行此操作会遇到麻烦。
答案 2 :(得分:1)
其他几个答案建议使用特定于PHP的部署工具,但由于我不熟悉PHP,因此我将提供一些常规技巧。但是,这些建议可能是已经建议的其他一些工具的冗余。
首先,不要每次都上传新的.htaccess文件 - 只需在服务器上安装两个.htaccess文件。也许称他们为 .htaccess-permanent 和 .htaccess-maintenence 。然后创建一个应该处于活动状态的符号链接。然后,一旦您测试了访问权限被正确拒绝一次,您每次升级时都不必执行此手动测试阶段。
我还会写一个shell脚本来为我做大部分事情。我的新工作流程看起来像这样:
结束。
现在,对于有趣的部分,升级脚本将执行此操作:
upgrade-finalize 脚本只是:
这里唯一可能棘手的部分是获取PHPMyAdmin用于备份数据库的确切命令,但它可能是一个简单的mysqldump命令,您可以从PHPMyAdmin或某些日志或其他东西获取该信息。对不起,我不太了解PHPMyAdmin在这个特定领域的帮助。
答案 3 :(得分:0)
对于初学者,您可以将文件上传到新的webroot中,完成后,在Apache中切换DocumentRoot,在复制过程中保持可用状态。对于任何共享文件,您可以使用符号链接到公共文件夹(例如,上传的图像等)
如果您不关心数据库中的一致性,也可以在操作期间进行备份。对于不“破坏”功能的迁移,如果一致性不是问题,您还可以迁移它并使用其他主机名在新的webroot上进行测试。
最好的选择总是使用多个网络服务器,这样你就可以让一个离线进行测试,而另一个是可操作的,但你仍然会遇到一致性问题,但我认为这不是一个选项,因为你没有提到它。