我目前正在开发一个使用PHP和MySQL的Web应用程序,但我没有shell访问服务器(已经解决了这个问题......)。目前,我在本地计算机上有subversion的源代码控制,我在本地计算机上有一个数据库,我对其进行了所有更改。然后,一旦我在本地计算机上测试了所有更新,我就手动部署了该站点。我使用filezilla上传更新的文件,然后转储我的本地数据库并将其导入部署服务器。
显然,我目前的解决方案并不理想。对于一件重要的事情,我需要一种方法来避免复制我的.svn文件...有谁知道这个特定设置的最佳解决方案是什么?我已经看了一下Capistrano和Ant,但是这两个看起来都是一个问题,我没有shell访问...
答案 0 :(得分:3)
我正在使用Weex通过FTP同步服务器。 Weex基本上是一个非交互式FTP客户端,可以自动上传和删除远程服务器上的文件/目录。它可以配置为不上传某些路径(如SVN目录),以及保留某些远程路径(如日志目录)。
不幸的是,我手头没有同步MySQL数据库的解决方案......
也许您可以在“SQL补丁脚本”中记录数据库更改(或使用完整转储),使用Weex上传这些更改并调用后续执行SQL补丁的远程PHP脚本。
答案 1 :(得分:2)
我在生产中使用rsync但你可以这样做:
在您的网站中添加配置表,以保存您当前所在的数据库级别。
在开发过程中,将每组SQL更改存储到一个文件中(我使用delta_X-up.sql之类的东西)。这些也将保留在您的SVN中。因此,例如,如果您在delta_5并在当前版本和新版本之间添加一个表,则所需的所有SQL都将放入delta_6-up.sql
到了构建时,导出回购而不是使用结帐。这使您可以忽略所有出现的SVN残骸,因为您不需要将其投入生产。
使用Weex将这些更改推送到生产中(这可能是我会使用rsync但你没有这个选项)。调用一个远程脚本来检查您的配置数据库以查看您当前所处的增量级别,使用delta_x-up.sql文件解析该目录并查看是否有任何新文件。如果有,请阅读它们并在里面运行SQL。
答案 2 :(得分:1)
您可以将subversion导出(而不是结帐)导出到工作副本中的不同目录,然后它会删除所有.svn内容