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を運用できそうなことがわかりました。では、次回をお楽しみに。

Post Author: 宮﨑悟

Avatar
国立函館高専を卒業後、NEC協力会社に入社。UNIX・Windowsアプリケーション開発、Solaris/Linuxでのシステム構築に20年以上従事した。SolarisとLinuxを専門とし、OSおよび仮想化技術を得意とする。日本OpenSolarisユーザグループのメンバとして、OSCなど勉強会での登壇多数。 ○得意分野 言語: C、C++、Perl、Python、PowerShell OS: Solaris、Linux 過去の発表資料:OSCおよびhbstudyなどでの登壇経験あり。 https://www.slideshare.net/satorumiyazaki 過去の執筆記事: https://www.cloudn-service.com/magazine/member/satoru_miyazaki.html