问题描述
我正在想出两个 (现在) 人的工作流程。其中一人正在做主题工作,另一个将在写内容。我们不是 co-located 将不会很快。
作者对源代码管理非常陌生,最好是第二阶段的事情。我可以把 MAMP 放在她的盒子上,让她写在那里,如果是这样的方法,最好将这两个解决方案进行整合?
我已经看过这个问题:How to best setup for development for a two person bi-coastal team?,但由于它是两岁,我以为我会看到有什么变化。
最佳解决方案
注意:非常 mac /linux /unix 为中心的想法。包括很多命令行 fu 。
将所有代码放在版本控制下
我喜欢 git Mark Jaquith 对于使用 Git 和子模块的 WordPress 核心的 k eeping an entire site under version control 有一些很好的建议。您也可以将插件作为 git 子模块。
团队的开发人员结束将在本地工作,测试和提交任何更改,然后将代码推送到中央存储库 (Github 与私人备份,Beanstalk,您的服务器,没关系) 。从那里您可以使用部署工具 (Capistrano 等) 或简单的 SSH 到您的开发服务器 (参见步骤 2) 和 git pull
在您的更改。
确保将您的静态文件目录 (例如上传的图像和内容) 添加到.gitignore
文件中。
设置开发服务器
例如。在主站点的子域上安装 WordPress,如 staging.yoursite.com
或 dev.yoursite.com
。这是新代码的测试基础,您的内容制作者将在哪里工作。我建议完全保持在一个独立的服务器上。
为您的内容产品提供登录站点的用户名和密码,并让他们生成并写入所有内容。您还将把最新的代码更改提交到此网站,以便在将其推送到生产 (实时) 站点之前进行测试。
从开发服务器,您可以进行硬数据库导出,并将其用于将所有内容放在实时站点上。
在 dev 服务器上:
shell$ mysqldump -p -u your_dbuser yourdatabase > the-file.sql
通过生产服务器发送文件和…
shell$ mysql -p -u your_dbuser your_database < the-file.sql
还有另一个选择,我刚刚很高兴与所谓的 RAMP by Crowd Favorite 合作。它会将内容从一个服务器部署到另一个服务器。太棒了。强烈推荐。
当一切准备就绪时,将内容和代码推送到实时网站。
作为最后的警告:IP 限制您的开发站点,所以不是每个人都可以访问它。
同步您的本地开发网站
显然,如果您要在本地工作,您希望让本地站点与开发和生产站点同步。所有的代码都将被版本控制,所以没有问题。但是同步数据库和静态文件是另一回事。
同步数据库
这里有两个选择。
-
您可以一次不间断地将 SSH 登录到 dev 服务器中,并将数据库转储到可以下载并导入到本地计算机的文件中。使用上面的命令。
-
如果您的主机允许外部数据库连接,请创建一个只能访问您的开发站点数据库的用户。然后,您可以使用本地机器上的 mysqldump 命令指定主机参数,并将数据库直接转储到计算机上 – 我使用 media temple 进行操作。
mysqldump
与宿主的实例。
shell$ mysqldump -p -u your_dbuser -h the-externa.db.host.com the_database > the-file.sql
您还可以登录到您的主机 PHPMyAdmin 并从那里导出。
同步静态文件 (上传的图像等)
rsync
是你的朋友。它允许您从一个位置到另一个位置进行增量更新,包括通过 SSH 。换句话说,您可以使用它来仅下载您没有本地机器的文件。
例:
shell$ rsync -avze ssh your_user@yoursite.com:/path/to/static/files/ /path/to/your/local/static/files/
假设您的主机使用密码进行 SSH 访问,则在运行该命令后将提示您输入密码。如果你的主机不这样做,例如使用无密码的公钥 SSH 访问,您需要通过一些使用 ssh-agent 的 shell 脚本跳过一些环:
#! /bin/bash
eval "$(ssh-agent)" # start ssh-agent user daemon
ssh-add /path/to/your/id_rsa # add your public key
rsync -avze ssh your_user@yoursite.com:/path/to/static/files/ /path/to/your/local/static/files/
kill $SSH_AGENT_PID # kill the ssh agent
您还可以使用 rsync
来保持生产和开发服务器之间的静态文件同步。
以上是我如何与我的个人网站和几个客户的网站合作。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。