HerokuにLumen+Postgresの環境を作ってみる。
前提条件
- ブラウザからherokuへログインして「fooo」というアプリ作成済み。
Lumenインストール
Composerでローカルに落とす。
% composer create-project laravel/lumen --prefer-dist herokuLumenTest
Herokuへデプロイ
Procfile追加
% cd herokuLumenTest
% vi Procfile
Procfile
vendor/bin/heroku-php-apache2
Herokuログイン
% heroku login
Enter your Heroku credentials.
Email: hoge@hoge.com
Password (typing will be hidden):
Authentication successful.
Commitする
% git init
% heroku git:remote -a fooo
% git add .
% git commit -am '1st commit.'
% git push heroku master
https://fooo.herokuapp.com/
Lumen画面表示確認。
DB
heroku-postgresでDB作る
Herokuのサイトで作る。
DB情報をHeorokuに設定
% heroku config:add DB_HOST=ec2-000-00-000-000.compute-0.amazonaws.com
% heroku config:add DB_DATABASE=databasename
% heroku config:add DB_USERNAME=username
% heroku config:add DB_PASSWORD=password
% heroku config
=== fooo Config Vars
DB_CONNECTION: pgsql
DB_HOST: ec2-000-00-000-000.compute-0.amazonaws.com
DB_DATABASE: databasename
DB_PASSWORD: username
DB_USERNAME: password
Migrate作成
# heroku run php artisan migrate:install
Postgres用のGUIアプリをインストール
pgAdmin3 MacOSX版をインストール
設定
ファイル->サーバーの追加
接続してみるとmigrationsテーブルができているのが確認できる。
マイグレーションファイル作成(ローカルに作る)
php artisan make:migration create_customers_table
database/migrationsにマイグレーションファイルができるので編集
2015_05_26_053458_create_customers_table.php
public function up()
{
Schema::create('customers', function(Blueprint $table)
{
$table->increments('id');
$table->integer('user_id');
$table->string('name');
$table->string('memo');
$table->timestamps();
});
}
public function down()
{
Schema::drop('customers');
}
Seederファイル作成
vi database/seeds/CustomerTableSeeder.php
CustomerTableSeeder.php
<?php
use Illuminate\Database\Seeder;
use App\Customer;
class CustomerTableSeeder extends Seeder {
public function run()
{
DB::table('customers')->delete();
Customer::create(['user_id' => 1, 'name' => '田中', 'memo' => '高岡市在住']);
}
}
database/seeds/DatabaseSeeder.php
DatabaseSeeder.php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
$this->call('CustomerTableSeeder');
}
}
Customerクラス作成
vi app/Customer.php
Customer.php
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'customers';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name', 'memo'];
}
Herokuへデプロイ&マイグレーション実行
% git push heroku master
% heroku run php artisan migrate:refresh --seed