KUSANAGI でLaravelを使用してみよう(宮崎悟氏)

宮﨑悟

この記事では、PHPフレームワークの一つであるLaravelをKUSANAGIにインストールする方法について詳しく説明しています。まず、KUSANAGIでLAMP環境を作り、その上にLaravelをインストール、設定します。さらに、WebブラウザでのLaravelの動作確認方法や、「hello world」の表示方法、データベースとの接続設定の方法等についても具体的なコードとともに示しています。最後に、KUSANAGIでLaravelを運用する際のいくつかの興味深い提案を紹介しています。

KUSANAGIではLAMPスタックが簡単に作成できます。 今回は、PHPのフレームワークとしてトピックに上がることの多い、LaravelをKUSANAGIにインストールしてみたいと思います。

Laravelとは

Laravelとは、最近使用されることが多いPHPフレームワークで、RESTfullなルーティングと美しいテンプレートを備えています。
  • artisanというコマンドを持ち、アプリケーションを構成する基本的なクラスなどを簡単に生成できる
  • MVC、OR mapper、Composer、Generaterなどの機能が含まれている
  • MITライセンスでオープンソースで開発されている

KUSANAGI でLaravelを使用してみる

KUSANAGIでLaravelを使用するためには、まずLAMP環境を用意します。target名はlaravel という名前にします。
# PROF=laravel
# DBNAME=$(mkpasswd -l 10 -s 0 )
# DBUSER=$(mkpasswd -l 10 -s 0)
# DBPASS=%$(mkpasswd -l 20 -s 0)
# /usr/bin/kusanagi provision --lamp --fqdn ${PROF}.localdomain --noemail --dbname "$DBNAME" --dbuser "$DBUSER" --dbpass "$DBPASS" ${PROF} 
# printf "PROF=$PROF\nDBNAME=$DBNAME\nDBUSER=$DBUSER\nDBPASS=$DBPASS" >> $PROF.txt
kusanagi ユーザで、Laravel のインストーラを導入します。以下のコマンドを実行することで、kusanagiのホームディレクトリにlaravel のインストーラがインストールされます。
$ composer  global require "laravel/installer=~1.1"
次に、laravelディレクトリからlog ディレクトリを移動し、一旦laravelディレクトリを削除します。
$ mv laravel/log .
$ rm -rf laravel
そして、以下のコマンドでlaravelの雛形を作成します。作成後、log ディレクトリを戻しておきます。
また、laravel以下のディレクトリ storageとbootstrap/cache に、httpd での書き込み権限を付与します。
$ composer create-project --prefer-dist laravel/laravel laravel
$ mv ./log laravel
$ chown -R :www laravel/storage laravel/bootstrap/cache
$ chmod -R g+w laravel/storage laravel/bootstrap/cache
次に、root権限で、httpdとNGINXのDocumentRootを変更します。
  • /etc/httpd/conf.d/laravel_http.conf
  • /etc/httpd/conf.d/laravel_ssl.conf
  • /etc/nginx/conf.d/laravel_http.conf
  • /etc/nginx/conf.d/laravel_ssl.conf
上記ファイルで、httpd の場合は、DocumentRoot行を変更し、ディレクトリ名を /home/kusanagi/laravel/DocumentRoot から /home/kusanagi/laravel/public に変更します。
NGINXの場合は同様に、root /home/kusanagi/laravel/public; と変更します。 最後に、kusanagi restart でkusanagiを再起動します。

Laravelの画面を表示する

hosts ファイルなどを変更し、ドメイン名とIPアドレスを書き換えて、Webブラウザで http://laravel.localdomain/ を確認します。
上記のような画面が表示されるはずです。

Laravel での最初の1歩

Laravelで「hello world」を表示してみましょう。 routes/web.php にHello World以下の文を追加します。
<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

/*
| Hello World
*/
Route::get("/hello", function() {
    print("<h1>Hello World!!</h1>");
    return null;
});
ブラウザで、http://laravel.localdomain/hello にアクセスすると、以下のように表示されれます。
つまり、/hello を GETしたときに、print()文でHTTP文を表示したわけです。
ここにphpのコード、例えば「var_dump(gd_info()); 」なども表示できます。
間違ったコードを入れた場合はエラー画面が表示されます。これもLaravelの特徴となっています。

DBとの接続

LaravelでDBと接続する場合は、.env に色々設定を書いておくと良さそうです。初期の状態では以下のようになっています。
$ cat .env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:gMk/dW7ZHJkg/AhqcXPGSpq3OcsYHCYvNQ9DkhtDSTo=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
DB_DATABASE/DB_USERNAME/DB_PASSWORDなどを、kusanagi provision 時に設定した値にすれば、DBに接続できるはずです。
また、APP_URLや、APP_DEBUG、メールを使用するアプリケーションの場合はMAIL_HOSTやMAIL_PORTなども適宜設定しておくと良いでしょう。

KUSANAGI でのLaravelを運用するために

通常、Laravelは開発したものをgitに登録し、運用サーバでgit pull して運用するのが一般的なようです。
開発サーバはVagrant上のKUSANAGIで、運用はクラウド上のKUSANAGIで、と分けて運用するのが良さそうです。また、DBの情報も運用側と開発側で分けられるようなので、.env ファイルをgitignore などで分ける工夫が必要だと思われます。 このように、KUSANAGIでも簡単にLaravelを運用できそうなことがわかりました。では、次回をお楽しみに。

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解