注意:前面的想法非常以mac/linux/unix为中心。包括许多命令行fu。
团队的开发人员端将在本地工作,测试并提交任何更改,然后将代码推送到一个中央存储库(Github带有私有repo、Beanstalk、您的服务器,这无关紧要)。从那里,您可以使用部署工具(Capistrano等)或简单地将SSH连接到开发服务器中(请参见步骤2),然后git pull
在您的更改中。
确保将静态文件目录(例如上载的图像和内容)添加到.gitignore
文件
设置一个开发服务器,例如在主站点的子域上安装WordPress,如staging.yoursite.com
或dev.yoursite.com
. 这是新代码的测试场,您的内容制作人将在这里工作。我建议把它完全放在单独的服务器上。
为内容产品提供登台站点的用户名和密码,并让他们在那里生成和写入所有内容。在将最新的代码更改推送到生产(实时)站点之前,您还将在此站点中引入最新的代码更改进行测试。
从开发服务器,您可以进行硬数据库导出,并使用该导出将所有内容放在实时站点上。
在开发服务器上:
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限制您的开发站点,因此不是每个人都可以访问它。
同步本地开发站点显然,如果您打算在本地工作,您希望本地站点与开发和生产站点保持同步。您的所有代码都将在版本控制下,所以这没有问题。但同步数据库和静态文件是另一回事。
Syncing the Database
这里有两个选项。
您可以每隔一段时间用SSH将数据库转储到一个文件中,然后下载并导入到本地计算机。使用上述命令如果主机允许外部数据库连接,请创建一个对开发人员站点数据库具有只读访问权限的用户。然后,您可以在本地计算机上使用mysqldump命令指定一个主机参数,并将数据库直接转储到您的计算机上——我使用media temple来实现这一点示例mysqldump
有一个主机。
shell$ mysqldump -p -u your_dbuser -h the-externa.db.host.com the_database > the-file.sql
您还可以登录到主机PHPMyAdmin并从那里导出。
Syncing Static Files (Uploaded Images, etc)
rsync
是你的朋友。它允许您从一个位置到另一个位置进行增量更新,包括通过SSH进行更新。换句话说,您可以使用它只下载您没有本地计算机的文件。
示例:
shell$ rsync -avze ssh [email protected]:/path/to/static/files/ /path/to/your/local/static/files/
假设您的主机使用密码进行SSH访问,则在运行该命令后会提示您输入密码。如果您的主机不这样做,例如使用无密码、公钥SSH访问,那么您需要使用一个使用SSH代理的小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 [email protected]:/path/to/static/files/ /path/to/your/local/static/files/
kill $SSH_AGENT_PID # kill the ssh agent
您还可以使用
rsync
使静态文件在生产服务器和开发服务器之间保持同步。
以上是我如何与我的个人网站和一些客户的网站。