我在appfog上设置了wordpress安装(使用rackspace),并将安装克隆到我的本地机器进行开发。我知道安装工作(使用MAMP),因为我创建了一个本地mysql数据库并更改了wp-config.php指向它。但是,我希望在每次提交时都不必更改wp-config.php。在做了一些研究后,似乎Appfog服务Caldecott允许我使用af tunnel
隧道进入服务器上的mysql数据库。不幸的是,我遇到了让它运转的问题。即使我将我的MAMP mysql端口更改为8889,并通过端口3306隧道mysql,它看起来已经连接但是在加载我的localhost Wordpress时仍然会出现“建立数据库连接时出错”。当我退出mysql监视器(使用ctrl+x, ctrl+c
)时,我收到一条消息,指出“错误:'mysql'执行失败;它是否在你的$ PATH中?'。原来,不,不是,但是我'我在我的本地机器上修复了我的PATH变量,这样当我进入终端并输入mysql
时,它就会加载。
所以我猜我的问题是两部分:
1.)我是否在本地机器上使用正确的Wordpress开发方法
和
2.)如果是这样,为什么隧道不工作?
答案 0 :(得分:2)
解决此问题的一种方法是使用本地数据库设置模拟本地系统上的VCAP_SERVICES
环境变量。这将允许您使用相同的自定义AppFog wp-config.php文件,该文件查看VCAP_SERVICES以获取其数据库信用。
export VCAP_SERVICES='{"mysql-5.1": [{"credentials": {
"hostname": "localhost",
"port": 3306,
"password": "root",
"name": "LOCAL_DATABASE_NAME",
"user": "root"}}]}'
编辑:设置此env var后,您需要在MAMP中重新启动Apache服务器。 (谢谢Dex)
这将消除将开发代码指向生产数据库的需要。
答案 1 :(得分:1)
只测试vcap_services是否可用。如果是,请使用一个配置。如果他们不是,请使用不同的配置。
这是我本地+ appfog开发网站配置文件的一个示例。
if(getenv("VCAP_SERVICES")){
//if in webserver
$services_json = json_decode(getenv("VCAP_SERVICES"),true);
$mysql_config = $services_json["mysql-5.1"][0]["credentials"];
$username = $mysql_config["username"];
$password = $mysql_config["password"];
$hostname = $mysql_config["hostname"];
$port = $mysql_config["port"];
$db = $mysql_config["name"];
define("DB_SERVER", "$hostname");
define("DB_USER", "$username");//enter your database username
define("DB_PASS", "$password");//databse password
define("DB_NAME", "$db");//database name
} else {
//if in local development
define("DB_SERVER", "localhost");
define("DB_USER", "website");//enter your database username
define("DB_PASS", "dfgdfgdf");//databse password
define("DB_NAME", "fgdf_web");//database name
}
另外,您可以使用.afignore,使用.gitignore忽略af更新功能中的某些文件。您可以使用适当的配置更新一次,然后添加afignore,然后它将永远不会再次更新。
答案 2 :(得分:0)
这是一个快速的非常脏脚本,可以根据Tim Santeford的答案自动执行该过程。请务必更改LOCAL_DATABASE_NAME
#!/bin/bash
export VCAP_SERVICES='{"mysql-5.1": [{"credentials": {"hostname": "localhost", "port": 8889, "password": "root", "name": "LOCAL_DATABASE_NAME", "user": "root"}}]}'
/Applications/MAMP/Library/bin/httpd -k stop
sleep 3
/Applications/MAMP/Library/bin/httpd -k start