我曾在一家网络开发公司工作,在那里我们有本地机器,登台服务器和许多生产服务器。我们在perl中处理mac并使用svn提交stage,并将perl脚本加载到生产服务器。现在我正在开发自己的项目,并希望在使用共享Web托管时找到良好的Web开发实践,而不是在基于unix的环境中工作(我可以使用perl / bash脚本/ cron作业完成所有的魔术)< / p>
所以我的问题是我的条件,这是:
您建议对代码/数据的测试,部署和迁移进行哪些设置?我在本地计算机上安装了xampp服务器,但不确定哪些方法用于在Windows下迁移数据等。
答案 0 :(得分:10)
我在共享托管上有一些PHP个人项目;这里有几点想法,从我在其中一个(最活跃的,需要一些至少半自动同步方式)上做的事情:
关于我的设置的几句话:
现在,我的工作方式:
我之前做过的事情:
我现在做的事情:
关于这种做事方式的几点说明:
这里唯一的“特殊”,可能是“面向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/
我正在使用私钥/公钥mecanism,因此rsync不会要求输入密码,顺便说一句。
当然,我通常首先在“干运行”模式中使用相同的命令,以查看将要同步的内容,并选择“--dry-run
”
ignore-rsync.txt
包含我不想被推送到制作的文件列表:
.svn
cache/cbfeed/*
cache/cbtpl/*
cache/dcstaticcache/*
cache/delicious.cache.html
cache/versions/*
在这里,我只是阻止缓存目录被推送到生产阶段 - 由于生产数据与开发数据不同,因此似乎不合理地发送缓存目录。
(我只是注意到这个文件中还有“.svn
”...我可以将其删除,因为我不再使用SVN进行该项目^^)
希望这有点帮助...
答案 1 :(得分:1)
关于SVN,我建议你选择像beanstalk这样的专用SVN主机,或者使用相同的服务器来运行SVN服务器,这样两个开发人员都可以解决它。
在后一种情况下,您的部署脚本只会将位移动到暂存Web文件夹(可通过beta.mysite.com访问),然后另一个部署脚本可以将其移动到实时Web目录。直接部署到实际站点显然不是一个好主意。
如果您决定使用专用主机或想要从计算机部署到服务器,请使用rsync。这也是我目前的设置。 RSync 执行差异同步(通过SSH),所以它很快,它只是为这类东西而构建。
随着您的成长,您可以开始使用构建工具和单元测试等等。这只留下了数据同步问题。
我只从远程同步数据 - &gt;本地并使用DOS批处理文件,使用 mysqldump 通过SSH执行此操作。 Cygwin对Windows机器很有用,但您可以跳过它。 SQL导入脚本还运行一行查询来更新某些单元,例如主机名和Web根,以进行本地部署。
完成此设置后,您可以专注于编写代码和远程部署,或者本地同步和部署成为一键式处理。
答案 2 :(得分:1)
一种选择是为任务使用专用框架。 Capistrano非常适合像php这样的脚本语言。它基于Ruby,但如果你进行搜索,你应该能够找到如何使用它来部署php应用程序的说明。