【问题标题】:What is a good solution for deploying a PHP/MySQL site via FTP?什么是通过 FTP 部署 PHP/MySQL 站点的好解决方案?
【发布时间】:2008-11-09 15:23:08
【问题描述】:

我目前正在开发一个使用 PHP 和 MySQL 的 Web 应用程序,但我没有对服务器的 shell 访问权限(已经在解决这个问题......)。目前,我在本地计算机上有带有颠覆的源代码控制,并且我在本地计算机上有一个数据库,我对它进行了所有更改。然后,一旦我在本地计算机上测试了所有更新,我就会手动部署该站点。我使用 filezilla 上传更新的文件,然后转储我的本地数据库并将其导入部署服务器。

显然,我目前的解决方案并不理想。对于一件主要的事情,我需要一种方法来避免复制我的 .svn 文件......有谁知道这个特定设置的最佳解决方案是什么?我对 Capistrano 和 Ant 进行了一些研究,但是这两个看起来都是我没有 shell 访问权限的问题......

【问题讨论】:

    标签: php mysql deployment


    【解决方案1】:

    我正在使用Weex 通过 FTP 同步服务器。 Weex 基本上是一个非交互的 FTP 客户端,可以自动上传和删除远程服务器上的文件/目录。它可以配置为不上传某些路径(如SVN目录),以及保留某些远程路径(如Log目录)。

    不幸的是,我手头也没有同步 MySQL 数据库的解决方案...

    也许您可以在“SQL 补丁脚本”中记录您的数据库更改(或使用完整的转储),使用 Weex 上传这些更改,然后调用远程 PHP 脚本执行 SQL 补丁。

    【讨论】:

      【解决方案2】:

      我在生产中使用 rsync,但你可以这样做:

      在您的站点中添加一个配置表来保存您当前所处的数据库级别。

      在开发过程中,将每组 SQL 更改存储到一个文件中(我使用类似 delta_X-up.sql 的文件)。这些也将保留在您的 SVN 中。因此,例如,如果您在 delta_5 并在当前版本和新版本之间添加一个表,则所需的所有 SQL 都将放在 delta_6-up.sql 中

      当需要构建时,导出 repo 而不是使用结帐。这让您可以忽略所有出现的 SVN 垃圾,因为您不需要将其用于生产。

      使用Weex 将这些更改推送到生产中(如果我会使用 rsync 但您没有该选项)。调用一个远程脚本来检查您的配置数据库以查看您当前处于什么增量级别,使用您的 delta_x-up.sql 文件解析目录并查看是否有任何新文件。如果有,请阅读它们并运行其中的 SQL。

      【讨论】:

      • 好主意。我想我会尝试一下。
      【解决方案3】:

      你可以从你的工作副本导出(而不是签出)到不同的目录,然后它会为你删除所有 .svn 的东西

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        • 1970-01-01
        • 2016-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多