我在共享托管上有一些
PHP个人项目;这里有几点想法,从我在其中一个上做的(最活跃的,需要一些至少半自动同步方式):
关于我的设置几句话:
>前段时间,我在SVN上拥有一切;现在,我正在使用bazaar;但这个想法是完全一样的(除了有市集,我有本地历史和所有这些)
>我有一个ssh访问生产服务器,就像你一样
>我专门在Linux上工作(所以,我做的事情可能不像Windows一样容易)
现在,我的工作方式:
>生产服务器上的所有东西(源代码,图像……)都被提交给SVN / bazarr /等等
>我在本地工作,使用Apache / PHP / MySQL(我使用我偶尔在本地导入的生产数据库的转储)
>我是唯一一个从事该项目的人;对于一个由2/3开发人员组成的小团队来说,这可能是可以的,但不会更多.
我之前做过的事:
>我有一些PHP脚本检查SVN服务器在“最后一次推送到生产的版本”和HEAD之间的修改
>我猜这个自制的PHP脚本看起来像你目前使用的Perl脚本^^
>该脚本构建了要上载到生产环境的目录/文件列表
>并通过FTP访问上传
>这不是很令人满意(我认为我的剧本中有错误;我从来没有花时间纠正这些错误);并强迫我记住我上次投入生产的时间的修订号(好吧,它被脚本自动存储在一个文件中,所以不是那么难^^)
我现在应该做什么 :
>当切换到集市时,我不想重写那个无论如何都不能很好地工作的脚本
>我完全放弃了剧本
>由于我有ssh访问生产服务器,我使用rsync从我的开发机器同步到生产服务器,当我在本地的东西被认为是稳定/生产就绪.
关于这种做事方式的几点注意事项:
>我没有登台服务器:我的本地设置足够接近生产的设备
>对于具有一个或两个开发人员的简单项目,没有登台服务器是可以的
>如果我有一台登台服务器,我可能会选择:
>当你想要登台时,对它进行“svn更新”
>当它没问题时,从登台服务器启动rsync命令(这将是最新的“稳定”版本,因此可以推送到生产中)
>随着更大的项目,更多的开发人员,我可能不会采用这种设置;但我觉得这个(不是太大的)个人项目很不错.
这里唯一的“特殊”,可能是“面向Linux”的是使用rsync;快速搜索似乎表明可以在Windows上安装rsync可执行文件:http://www.itefix.no/i2/node/10650
不过,我从未尝试过.
作为旁注,这是我的rsync命令的样子:
rsync --checksum \
--ignore-times \
--human-readable \
--progress \
--itemize-changes \
--archive \
--recursive \
--update \
--verbose \
--executability \
--delay-updates \
--compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \
--exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \
/LOCAL_PATH/ \
USER@HOST:/REMOTE_PATH/
我正在使用私钥/公钥机制,所以rsync不会要求输入密码,顺便说一句.
而且,当然,我一般都用在“干运行”模式相同的命令第一,看什么将要synchorised,还可以选择“–dry运行”
ignore-rsync.txt包含一个我不想被推送到生产的文件列表:
.svn
cache/cbfeed/*
cache/cbtpl/*
cache/dcstaticcache/*
cache/delicious.cache.html
cache/versions/*
在这里,我只是阻止缓存目录被推送到生产 – 似乎逻辑上不发送它们,因为生产数据与开发数据不同.
(我只是注意到这个文件中还有“.svn”…我可以删除它,因为我不再使用SVN用于该项目^^)
希望这个对你有帮助…