为了处理这种类型的 DEV 和 PRODUCTION 环境,我编写了一个 perl 脚本来帮助我完成原本需要手动完成的工作。我给了某些步骤熟悉的名称,所以我记得以正确的顺序运行它们。我只有SVN下的DEV。我每次都用这个脚本创建一个生产环境。这样我就不用担心维护 2 个代码分支了。
我正在使用 SVN,因此我选择了我的 DEV 代码的新结帐目录(如 /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 签出。这个新的结帐将被转换成 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。像这样删除 webroot 中的所有 .svn 目录:
find /PRODUCTION/WEBROOT -ignore_readdir_race -name .svn -exec rm -fr {} \; >/dev/null 2>&1
现在,您的 DEV 代码已转换为您的 PRODUCTION 代码,替换了所有硬编码的 URL,并确保了不在 SVN 中的上传目录周围的安全。你甚至可以让它停止并为你启动 apache。我希望我的解决方案有助于解决您的问题。