アプリを作る
前回の記事を参考に適当に用意する。
Herokuにpushできるようにする
heroku loginまでは省略。cedar-14
Stackじゃないと動かないので注意。新規でheroku create
すれば大丈夫。
composer.jsonを編集し、hhvm
の定義を追加する。
あと、scripts
ブロックのphp
をhhvm
に置換する。
"require": { "hhvm": "~3.5", "laravel/framework": "5.0.*" },
composerをupdateする。--no-scripts
を使うとscripts
ブロックが動かなくなるので、必要であればローカルでは手動で実行しよう。ローカルにHHVMが入っていればそもそも必要ない。
% composer update --ignore-platform-reqs --no-scripts
Heroku 初期設定
% heroku create Creating [インスタンス名]... done, stack is cedar-14 https://[インスタンス名]herokuapp.com/ | https://git.heroku.com/[インスタンス名].git % git init Initialized empty Git repository in /path/to/app/.git/ % heroku git:remote -a [インスタンス名] Git remote heroku added % heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-php Setting config vars and restarting [インスタンス名]... done, v15 BUILDPACK_URL: https://github.com/heroku/heroku-buildpack-php % heroku config:add LD_LIBRARY_PATH=vendor/hhvm/ Setting config vars and restarting [インスタンス名]... done, v21 LD_LIBRARY_PATH: vendor/hhvm/ % git add * The following paths are ignored by one of your .gitignore files: vendor Use -f if you really want to add them. % git commit -m "initial commit" [master (root-commit) 1232328] initial commit 155 files changed, 19937 insertions(+) create mode 100644 app/Article.php create mode 100644 app/Commands/Command.php create mode 100644 app/Console/Commands/Inspire.php create mode 100644 app/Console/Kernel.php …. % git push heroku master Counting objects: 188, done. Delta compression using up to 4 threads. Compressing objects: 100% (167/167), done. Writing objects: 100% (188/188), 121.66 KiB | 0 bytes/s, done. Total 188 (delta 10), reused 0 (delta 0) remote: Compressing source files... done. ... remote: Verifying deploy... done. To https://git.heroku.com/[インスタンス名].git * [new branch] master -> master % heroku ps:scale web=1 Scaling dynos... done, now running web at 1:1X.
当たり前だが、これではDBの設定もできていないし動くわけがない。
Procfileの設定
DB以前にサーバの設定をしていない。
vim Procfile
以下の内容を入力する。nginxでは.htaccessで詰む。(もちろん設定すればどうにかできる)
web: vendor/bin/heroku-hhvm-apache2 public/
% git add Procfile % git commit -m “add Procfile" % git push heroku master
MySQLの設定
MySQL(ClearDB)を使う。hhvmがPostgreSQLをサポートしていない。 クレカ入力したくないけど観念して https://dashboard.heroku.com/account/billing から入力する。
% heroku addons:add cleardb:ignite Adding cleardb:ignite on [インスタンス名]... done, v34 (free) Use `heroku addons:docs cleardb` to view documentation.
MySQLの設定を確認する。
% heroku config ... CLEARDB_DATABASE_URL: mysql://[ユーザー名]:[パスワード]@[ホスト名]/[DB名]?reconnect=true ...
これを見ながらHeroku側に環境変数をセットする。
% heroku config:set APP_ENV=production Setting config vars and restarting [インスタンス名]... done, v6 APP_ENV: production % heroku config:set APP_DEBUG=false Setting config vars and restarting [インスタンス名]... done, v7 APP_DEBUG: false % heroku config:set DB_HOST=[mysqlのホスト名] Setting config vars and restarting [インスタンス名]... done, v8 DB_HOST: [mysqlのホスト名] % heroku config:set DB_DATABASE=[mysqlのDB名] Setting config vars and restarting [インスタンス名]... done, v9 DB_DATABASE: [mysqlのDB名] % heroku config:set DB_USERNAME=[mysqlのユーザー名] Setting config vars and restarting [インスタンス名]... done, v10 DB_USERNAME: [mysqlのユーザー名] % heroku config:set DB_PASSWORD=[mysqlのパスワード] Setting config vars and restarting [インスタンス名]... done, v11 DB_PASSWORD: [mysqlのパスワード]
migrationを実施する。
% heroku run "hhvm artisan migrate:install" Running `hhvm artisan migrate:install` attached to terminal... up, run.3772 Migration table created successfully. % heroku run "hhvm artisan migrate:refresh" Running `hhvm artisan migrate:refresh` attached to terminal... up, run.8212 ************************************** * Application In Production! * ************************************** Do you really wish to run this command? [y/N] y ************************************** * Application In Production! * ************************************** Do you really wish to run this command? [y/N] y Nothing to rollback. ************************************** * Application In Production! * ************************************** Do you really wish to run this command? [y/N] y Migrated: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_100000_create_password_resets_table Migrated: 2015_02_05_120749_create_articles
ブラウザで確認して、一通り動けばOK。