2016-04-16 25 views
1

私はherokuでMySQLを使用してアプリケーションを実行したいです。私はすでにこの目的のためにcleardbをインストールして設定しました。私がしなければならないことは、環境変数を設定することだけです。しかし、私はこれを行う適切な方法を見つけることができません。このarticle
herokuでプロダクション環境変数を設定する方法は?

、マットが挙げ変数を設定する方法について説明します。

// 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' => '', 
), 

を彼も言う:

あなたが実際に本物のサイト上で作業している場合、あなたがする必要があります プロダクション環境用のデータベース資格情報を編集するだけです

ひょっとして、cleardbを使用してMySQLを実行するには、環境変数をどのように設定する必要がありますか?

答えて

4

Laravel 5.2とタグ付けされているため、.envファイルに環境変数を設定する必要があります。このファイルは、バージョン管理には含まれていません。インストールごとに異なるバージョンが存在するはずです。 A .env.exampleがデフォルトで提供されています。一例として、

、あなたのURLがある場合:

CLEARDB_DATABASE_URL => mysql://adffdadf2341:[email protected]/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手つかずのままにしておきます。

もう1つの解決策は、上記のURLを.envファイルに定義し、提案されたとおりに動的に解析することです。これらの変数には、env("CLEARDB_DATABASE_URL")を使用してアクセスすることに注意してください。 CLEARDB_DATABASE_URLが自動的に設定されているので

EDIT

、おそらく、それを利用する方が良いでしょう。

// 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' => '', 
     ], 
+0

答えをありがとう!あなたは次の問題を明確にしていただけますか? 1.データベースのURLが変更されないことは保証されていますか?それ以外の場合、資格情報をハードコーディングしても良い解決策はありません。 2. URLの解析は動的に安全ですか? –

+0

実際には、ハードコーディングではありません。これは、ソースファイルと一緒に移動する必要のない構成ファイルであるためです。データベースのURLが変更された場合(おそらく別のデータベースを作成した場合)、これらをサーバーに適用することができます。考慮する必要がある唯一の問題は、ファイルが各要求で解析される必要があるため、小さなパフォーマンスヒットです。このためのソリューションは、Heroku CLIを介してこれらの同じ変数を定義することです。 – BeS

0

Herokuの環境変数を設定するのは非常に簡単です。 次のようにあなたは、HerokuのCLIを使用することができます。 Herokuのコンフィグを:設定CLEARDB_DATABASE_URL =「あなたのDBのURL」

あなたはまた、簡単にHerokuのダッシュボードを経由して環境変数を設定することができます。

+0

clearedbをインストールするとすぐにCLEARDB_DATABASE_URLが自動的に設定されます。問題は、そのURLをどのように利用するかです。 –