将CakePHP Web应用程序部署到共享主机的最佳选择

时间:2011-09-28 08:07:00

标签: git svn cakephp deployment shared-hosting

我总是通过Coda或类似的FTP连接在网站上实时编辑代码,但是我刚刚为用户注册编写了我的第一个PHP Web应用程序,我非常谨慎,我将需要比“实时编辑”更好的计划。我在共享主机上,所以我认为像SVN和GIT这样的东西可能已经出来但是有没有任何软件/脚本/解决方案可以让我将代码实时推送到Web服务器并在我的Mac上拥有主副本。

人们对网络应用/部署和共享托管的体验是什么?

2 个答案:

答案 0 :(得分:3)

我编写了自己的部署系统,以避免在实时编辑。

它分为不同阶段 - 它们是:

  1. 从本地存储库导出SVN(这意味着您不会获得.svn目录的负载)
  2. rsync将代码导出到实时服务器 - 但是在--dry-run模式下,这样您就可以看到实际上将要生存的内容。这个命令有一些排除: - exclude app / tmp
  3. 正常模式下的rsync
  4. 我加入了一些额外内容。

    • 因为我在负载均衡器后面的多个Web服务器上运行代码,所以我排除了core.php和database.php。然后,我将每个Web服务器上的文件符号链接到可集中访问的NFS。
    • rsync to live运行,但它只上传一次(到NFS)。然后,部署脚本在远程服务器上运行命令(通过ssh),以启动NFS和Web服务器之间的rsync。这是一个bash脚本,这意味着我可以轻松管理Web节点以及文件如何被推出。

    希望有所帮助!

答案 1 :(得分:2)

我使用我编写的cakephp shell工具 - 它使用“rsynch”并且只上传delta(到目前为止所做的更改)。 使用这样的rsync脚本,可以快速上传更改的文件。只需1-2秒。

与另一个项目我必须提交所有内容并手动“svn更新”服务器一直。非常讨厌+你甚至需要提交“测试阶段”。

所以我建议使用上面的delta上传。 确保你不上传任何tmp的东西,甚至更糟,覆盖基于环境的文件,如上传,缓存文件等。 使用像rsynch这样的批处理脚本,通常可以排除一些目录。

我的配置例如是

server      xxx
username    xxx
password    xxx
local       C:\...\app\
remote      /var/www/site
protocol    ftp
permissions ignore
state       timesize
exclude     _*
exclude     *__*
exclude     *~*
exclude     .svn
exclude     .git
exclude     /tmp
exclude     /files/uploads/*
exclude     /webroot/files/tmp
exclude     /webroot/img/content/*