我开始一个项目,两个人将在WordPress上开发一个网站。可能还需要安装开发服务器,以便我的客户可以在我们上线站点之前查看对站点的更改。从开发到开发再到生产的整个过程中,都可能存在数据库更改(例如wordpress设置)。

我想知道什么是最好的工作流程。我了解一般概念,因为我通常在Rails中进行开发,因此要运行迁移并使用capistrano和git,但是我希望WordPress网站具有相同的紧密工作流程。有经验丰富的WordPress开发人员吗?

更新:也许我不够清楚,但是我了解wordpress。我创建了5-10个wordpress博客和自定义功能。但是,我从未与多人一起在wordpress网站上工作,也从未处理过具有开发,暂存和生产环境的工作。

谢谢!

最佳答案

为了处理这种类型的DEV和PRODUCTION环境,我编写了一个perl脚本来帮助我完成否则将是手动的工作。我给了某些步骤熟悉的名称,所以我记得要以正确的顺序运行它们。我只有SVN下的DEV。我每次都使用此脚本创建一个PRODUCTION环境。这样,我不必担心维护2个代码分支。

我正在使用SVN,因此我选择了我的DEV代码的新 checkout 目录(例如/tmp/foobar)。它不会在那里存在很长时间。

可选步骤0:差异数据库结构

mysqldump -d -u USER -pPASS mydotcom > production.sql
mysqldump -d -u USER -pPASS mydotcom_dev > development.sql
vim -d production.sql development.sql

有时,插件会添加表,这将表明这一点。否则,当不需要比较某些表并复制SQL语句时,我会重放表中所做的更改(安装插件)。

步骤1清洁:
该脚本将删除当前目录中的所有文件,并对DEV分支进行新的svn checkout 。这个新的 checkout 将被转换为PRODUCTION代码,并复制到其webroot。

第2步:
perl运行vim搜索并替换wpconfig.php中的数据库名称。在perl中可以轻松地进行搜索和替换。
system('vim -c "%s/define(\'DB_NAME\', \'mydotcom_dev\'/define(\'DB_NAME\', \'mydotcom\'/g | w | q" wp-config.php');

删除本地文件上载目录(因此我们不会覆盖PRODUCTION)。 wpcontent/uploads我相信它是标准安装。

例如,在具有我的DEV URL的项目中的所有文本文件上进行另一个查找和替换
vim -c "%s/dev\.mydot\.com/www.mydot.com/g | w | q FILENAME.php

第3步安装。
为了安全起见,请使用dircopy()备份wpcontent/uploads。将此清理目录的dircopy()复制到PRODUCTION网络根目录。删除webroot中的所有.svn目录,如下所示:
find /PRODUCTION/WEBROOT -ignore_readdir_race -name .svn -exec rm -fr {} \; >/dev/null 2>&1

现在,您的DEV代码已转换为PRODUCTION代码,从而替换了所有硬编码的URL,并保护了不在SVN中的上载目录周围。您甚至可以停止它并为您启动apache。希望我的解决方案可以解决您的问题。

10-04 23:01
查看更多