如何在 heroku 上设置生产环境变量?
How to set production environment variables on heroku?
我想 运行 在 heroku 上使用 MySQL 的应用程序。为此,我已经安装并配置了 cleardb
。我剩下要做的就是配置环境变量。但是,我找不到合适的方法来做到这一点。
在此 article 中,Matt 解释了如何配置提到的变量:
// config/database.php
$url = parse_url(getenv("CLEARDB_DATABASE_URL"));
$host = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$database = substr($url["path"], 1);
// . . .
'mysql' => array(
'driver' => 'mysql',
'host' => $host,
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
他还说:
if you're actually working on a real site, you should be making sure
you're just editing the database credentials specifically for your
production environment
那么,在 heroku 上如何使用 cleardb
在生产中将环境变量准确配置为 运行 MySQL?
在Heroku 上设置环境变量非常简单。
您可以使用 Heroku CLI,如下所示:
heroku config:set CLEARDB_DATABASE_URL="Your DB URL"
您还可以通过 Heroku 仪表板轻松配置环境变量。
被标记为Laravel 5.2,需要在.env
文件中设置环境变量。该文件不包含在版本控制中,因为您应该在每次安装时使用不同的版本。默认提供一个.env.example
。
例如,如果您的 URL 是:
CLEARDB_DATABASE_URL => mysql://adffdadf2341:adf4234@us-cdbr-east.cleardb.com/heroku_db?reconnect=true
然后在您的 .env
文件中,您可以输入:
DB_CONNECTION=mysql
DB_HOST=us-cdbr-east.cleardb.com
DB_PORT=3306
DB_DATABASE=heroku_db
DB_USERNAME=adffdadf2341
DB_PASSWORD=adf4234
并保持 config/database.php
不变。
另一个解决方案是在 .env
文件中定义上面的 URL 并按照建议动态解析它。请注意,这些变量是使用 env("CLEARDB_DATABASE_URL")
.
访问的
编辑
由于 CLEARDB_DATABASE_URL 是自动设置的,使用它可能会更好。
// config/database.php
if ($url = env('CLEARDB_DATABASE_URL', false)) {
$parts = parse_url($url);
$host = $parts["host"];
$username = $parts["user"];
$password = $parts["pass"];
$database = substr($parts["path"], 1);
} else {
$host = env('DB_HOST', 'localhost');
$username = env('DB_USERNAME', 'forge');
$password = env('DB_PASSWORD', '');
$database = env('DB_DATABASE', 'forge');
}
// ...
'mysql' => [
'driver' => 'mysql',
'host' => $host,
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],
我想 运行 在 heroku 上使用 MySQL 的应用程序。为此,我已经安装并配置了 cleardb
。我剩下要做的就是配置环境变量。但是,我找不到合适的方法来做到这一点。
在此 article 中,Matt 解释了如何配置提到的变量:
// config/database.php
$url = parse_url(getenv("CLEARDB_DATABASE_URL"));
$host = $url["host"];
$username = $url["user"];
$password = $url["pass"];
$database = substr($url["path"], 1);
// . . .
'mysql' => array(
'driver' => 'mysql',
'host' => $host,
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
他还说:
if you're actually working on a real site, you should be making sure you're just editing the database credentials specifically for your production environment
那么,在 heroku 上如何使用 cleardb
在生产中将环境变量准确配置为 运行 MySQL?
在Heroku 上设置环境变量非常简单。 您可以使用 Heroku CLI,如下所示: heroku config:set CLEARDB_DATABASE_URL="Your DB URL"
您还可以通过 Heroku 仪表板轻松配置环境变量。
被标记为Laravel 5.2,需要在.env
文件中设置环境变量。该文件不包含在版本控制中,因为您应该在每次安装时使用不同的版本。默认提供一个.env.example
。
例如,如果您的 URL 是:
CLEARDB_DATABASE_URL => mysql://adffdadf2341:adf4234@us-cdbr-east.cleardb.com/heroku_db?reconnect=true
然后在您的 .env
文件中,您可以输入:
DB_CONNECTION=mysql
DB_HOST=us-cdbr-east.cleardb.com
DB_PORT=3306
DB_DATABASE=heroku_db
DB_USERNAME=adffdadf2341
DB_PASSWORD=adf4234
并保持 config/database.php
不变。
另一个解决方案是在 .env
文件中定义上面的 URL 并按照建议动态解析它。请注意,这些变量是使用 env("CLEARDB_DATABASE_URL")
.
编辑
由于 CLEARDB_DATABASE_URL 是自动设置的,使用它可能会更好。
// config/database.php
if ($url = env('CLEARDB_DATABASE_URL', false)) {
$parts = parse_url($url);
$host = $parts["host"];
$username = $parts["user"];
$password = $parts["pass"];
$database = substr($parts["path"], 1);
} else {
$host = env('DB_HOST', 'localhost');
$username = env('DB_USERNAME', 'forge');
$password = env('DB_PASSWORD', '');
$database = env('DB_DATABASE', 'forge');
}
// ...
'mysql' => [
'driver' => 'mysql',
'host' => $host,
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],