Fuelphpの動作確認用の環境が欲しかったので、herokuで構築してみました。
Herokuの準備
Herokuの準備をします。Herokuはアカウントを取得して、Appを新規に作成します。 空のAppをまずローカルにcloneしましょう。
この手順はherokuの管理画面のCodeで実行するコマンドが順番に書かれているのでこれを参考にcloneしましょう。
次に、DBはHerokuのアドオンとしてClearDB(MySQL)を追加できるので追加します。コマンドだと以下です。(FuelphpでPostgreSQLへの接続が出来なかったのでMySQLにしました・・・)
1 |
heroku addons:add cleardb:ignite |
正しく追加されていれば、CLEARDB_DATABASE_URLというconfigが設定されているはず。
1 2 3 4 |
$ heroku config 以下出力結果の例 === アプリID Config Vars CLEARDB_DATABASE_URL: mysql://dbuser:dbpass@host:port/dbname |
このconfigを環境変数として利用できるのでこれをパースして利用します。パースはこんな感じ。
1 2 3 4 5 |
$dbConfigPattern = '/mysql:\/\/(?:([^:^@]+)(?::([^@]+))?@)?([^:^\/]+)(?::(\d+))?\/([^?]+)/'; if (preg_match($dbConfigPattern, $_SERVER["CLEARDB_DATABASE_URL"], $matches)) { list($dbConfig, $dbuser, $dbpass, $dbhost, $dbport, $dbname) = $matches; // DB設定に各値を利用 } |
Fuelphpの準備
次にFuelphpを準備します。 最新版であるFuelphp1.7.2はバグがあり動かせないため、Fuelphp1.7.1を利用しましょう。アーカイブページはこちら。
解答したフォルダを任意の場所においてください。以下の説明はfuel-testとリネームした状態で説明します。 肝心のcomposerが同梱されていないので、別途ダウンロードします。
1 2 |
cd fuel-test wget https://github.com/fuel/fuel/raw/1.7/master/composer.phar |
HerokuでFuelphpを起動するための設定
次にHerokuでFuelphpを動かすための設定をしていきます。 今回は、以下の仕様を想定しています。
- Nginx+PHP-FPM
- MySQL
- 日本語を扱う
この環境を前提として、composer.jsonの変更、.user.iniの作成、nginx_app.configの作成、Procfileの作成を行います。
.user.iniの作成
まずPHPの設定をします。ドキュメントルートに.user.iniファイルを配置するとphp.iniの値を変更することができます。なのでFuelphpの場合、publicフォルダに配置します。 以下のような設定をしましょう。これはプロジェクト毎に合わせてください。
1 2 3 4 5 6 7 8 |
[Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.encoding_translation = Off mbstring.func_overload = 0 |
composer.jsonの変更
.user.iniでも設定しましたが、日本語のを利用するためmbstringを入れます。herokuにモジュールをインストールするには必要なモジュール名にextを付けるようです。
1 2 3 4 5 6 |
"require": { "php": ">=5.3.3", "monolog/monolog": "1.5.*", "fuelphp/upload": "2.0.1", "ext-mbstring": "*" }, |
nginx_app.configの作成
Nginxの設定をnginx_app.configファイルとして作成します。herokuのNginxのvirtualhostの設定として設定されます。プロジェクトルートに配置します。
1 2 3 4 5 6 7 8 9 10 |
location / { try_files $uri /index.php?$uri&$args; } location ~ \.php$ { fastcgi_pass heroku-fcgi; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } |
Procfileの作成
Webサーバの指定、Webサーバの設定ファイルの指定、ドキュメントルートの設定をProcfileに記述します。 Fuelphpは/publicがドキュメントルートで、WebサーバはNginx、Webサーバの設定ファイルは先ほど作成したnginx_app.configを指定します。
1 |
web: vendor/bin/heroku-php-nginx -C nginx_app.config public/ |
oil r migrateが動かない・・・
原因を特定できないんですが、oil r migrateが動きませんでした。色々試してみたんですが・・・。とりあえず直接コマンドで繋いでテーブルなどを作成しましょう。
herokuにデプロイ
gitコマンドでpushするとデプロイされます。簡単!
1 |
git push heroku master |
あとは、アプリをブラウザで開きましょう。URLをいちいち調べるのも面倒なのでコマンドで開きます。
1 |
heroku open |
Welcomeページが表示されればOK!
まとめ
herokuを使ってFuelphpの動作環境を整えました。DB接続周りがちょっと不安な感じですが、かなり簡単に構築できました。今後MongoDB接続もやってみたいところ。
おまけ: Herokuボタンへの対応
ボタンひとつでHerokuにデプロイができる「Heroku Button」に対応させてみましょう。
app.jsonの作成
プロジェクトルートにapp.jsonを作成しましょう。重要なのはrepository項目でパブリックなリポジトリを指定しましょう。
1 2 3 4 5 6 7 |
{ "name": "fuel test", "description": "fuelphp test application", "website": "http://example.com", "repository": "https://github.com/xxxx/test.git", "success_url": "/hello" } |
README.mdにボタンを記述
あとはREADME.mdにボタンコードを記述するだけです。これでherokuアカウントを持っている人はボタンひとつで環境を構築できます。なんて便利!
1 2 |
* これを追加 [](https://heroku.com/deploy) |
お試しあれ。
さくっと送って、さくっと受け取る
ファイル転送サービス 「tenpu」
tenpuは、一度に2GBまでのファイルを無料&会員登録の不要で、さくっと転送できます。
シンプルで美しい背景画面はファイルを受け取る人にも気持よく使えます。
有料プランは最大20GBまで転送可能、背景画像変更、ファイルの保存期間変更など無料版より裕福な機能を用意しています。
有料プランの詳細はこちらからご確認下さい。