【发布时间】:2016-04-11 14:01:09
【问题描述】:
所以我在我的私人服务器上创建了一个 www 站点。它基本上是一个 PHP + javascript 页面。现在我需要将其移至 BlueMix。唯一的问题是,虽然我现在在我的私人服务器上使用了 MySQL 数据库,但我现在需要在 BlueMix 上使用 SQL Database-s2 和所有(我的 php 页面和数据库)。
迈克
【问题讨论】:
所以我在我的私人服务器上创建了一个 www 站点。它基本上是一个 PHP + javascript 页面。现在我需要将其移至 BlueMix。唯一的问题是,虽然我现在在我的私人服务器上使用了 MySQL 数据库,但我现在需要在 BlueMix 上使用 SQL Database-s2 和所有(我的 php 页面和数据库)。
迈克
【问题讨论】:
您必须从 VCAP_SERVICES\service 凭据中解析数据库信息。
如果您的数据库服务是“SQL 数据库”,您可以使用此示例代码连接到 SQLDB:
//parse VCAP_SERVICES Environment variable
$vcap_services = $_ENV["VCAP_SERVICES"];
$services_json = json_decode($vcap_services,true);
$sqldb = $services_json["sqldb"];
if (empty($sqldb)) {
echo "No sqldb service instance is bound. Please bind a sqldb service instance";
return;
}
//Get Credentials object (db,host,port,username,password)
$sqldb_config = $services_json["sqldb"][0]["credentials"];
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=".
$sqldb_config["db"].
";HOSTNAME=".
$sqldb_config["host"].
";PORT=".
$sqldb_config["port"].
";PROTOCOL=TCPIP;UID=".
$sqldb_config["username"].
";PWD=".
$sqldb_config["password"].
";";
$conn = db2_connect($conn_string, '', ''); //db connection
信息会自动从 VCAP_SERVICES 中检索。 应用程序读取环境。变量并自动检索用户名、主机、数据库密码字段。
但是你可以手动设置db、host、port、username、password 查看 服务的服务凭证:
如何检索凭证信息:
来自仪表板用户界面
从 CF 命令行
cf env your_app_name
在我们使用 DB2 模块的代码中:当您将 SQLDB 与 PHP 一起使用时,请使用以下 buildpack https://github.com/ibmdb/db2heroku-buildpack-php。它将安装“ibm_db2”php 模块供您使用。
您可以在将应用程序推送到 Bluemix 上时设置 buildpack:
cf push <your_app_name> -b https://github.com/ibmdb/db2heroku-buildpack-php
【讨论】:
您可以使用 PHP buildpack 在 Bluemix 上部署您的应用程序。在创建 SQL 数据库实例并将其绑定到 Bluemix 上的 PHP 应用程序之后,要连接到 Bluemix 中的 SQLDB 服务,您可以使用 db2_connect 和从 VCAP_SERVICES 环境变量中检索到的凭证。我不知道您的业务需求,但是如果您想保持跨环境的一致性并且不想迁移到另一个 RDBMS,您可以尝试ClearDB,这是一个可靠、容错、地理分布的数据库-as -a-service 用于 MySQL 驱动的应用程序。
【讨论】: