2016-04-16 1 views
1

Je veux lancer une application en utilisant MySQL sur heroku. J'ai déjà installé et configuré cleardb à cet effet. Il ne me reste plus qu'à configurer les variables d'environnement. Cependant, je ne peux pas trouver un moyen approprié de le faire.
Comment définir les variables d'environnement de production sur heroku?

dans ce article, Matt explique comment configurer les variables mentionnées:

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

Et il dit aussi:

si vous travaillez actuellement sur un site réel, vous devriez être en vous assurant que vous modifiez simplement les informations d'identification de la base de données spécifiquement pour votre environnement de production

Alors, comment exactement les variables d'environnement doivent-elles être configurées en production pour exécuter MySQL en utilisant cleardb sur heroku?

Répondre

4

Etiqueté comme Laravel 5.2, vous devez définir la variable d'environnement dans le fichier .env. Ce fichier n'est pas inclus dans le contrôle de version, car vous devez avoir des versions différentes pour chaque installation. Un .env.example est fourni par défaut.

À titre d'exemple, si votre URL est:

CLEARDB_DATABASE_URL => mysql://adffdadf2341:[email protected]/heroku_db?reconnect=true 

puis dans votre fichier .env vous pouvez mettre:

DB_CONNECTION=mysql 
DB_HOST=us-cdbr-east.cleardb.com 
DB_PORT=3306 
DB_DATABASE=heroku_db 
DB_USERNAME=adffdadf2341 
DB_PASSWORD=adf4234 

et laisser le intact config/database.php.

L'autre solution consisterait à définir l'URL ci-dessus dans le fichier .env et à l'analyser dynamiquement comme suggéré. Notez que ces variables sont accessibles en utilisant env("CLEARDB_DATABASE_URL").

EDIT

Depuis le CLEARDB_DATABASE_URL est réglé automatiquement, il sera probablement préférable de l'utiliser. CLEARB_DATABASE_URL est défini automatiquement dès que vous installez cleardb.

// 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

Merci pour votre réponse! Pouvez-vous s'il vous plaît clarifier les questions suivantes? 1. Est-il garanti que l'URL de la base de données ne sera pas modifiée? Sinon, le codage en dur des informations d'identification ne serait pas une bonne solution. et 2. L'analyse de l'url est-elle dynamiquement sûre? –

+0

En fait, il n'est pas codé en dur parce que c'est un fichier de configuration qui n'a pas besoin d'aller avec vos fichiers source. Si l'URL de la base de données change (ce sera probablement le cas si vous créez une autre base de données), vous pouvez les adapter au serveur. Le seul problème que vous devez prendre en compte est un petit succès de performance car le fichier devra être analysé à chaque requête. La solution pour cela sera de définir ces mêmes variables via la CLI de Heroku. – BeS

0

La définition de variables d'environnement sur Heroku est très simple. Vous pouvez utiliser la CLI Heroku, comme suit: config Heroku: set CLEARDB_DATABASE_URL = "URL de DB"

Vous pouvez également configurer facilement des variables d'environnement via le tableau de bord Heroku.

+0

La question est - comment faire usage de cette URL? –