Laravelの軽量版・LumenでSQLite3を使う

Laravelの軽量版・Lumenを試しています。個人の遊びサーバーはMySQLが入っていないので、データベースにSQLite3を使う設定をしてみました。

はじめに

Lumen自体はあらかじめインストールされていて、composerにパスが通っている前提で進めさせてもらいます。

WEBアプリ作成

WEBアプリの作成はコマンドからできます。今回は、blogディレクトリにブログアプリを作る前提で進めます。

新規作成コマンドは、「lumen new {{プロジェクト名}}}」です。

lumen new blog

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 73 installs, 0 updates, 0 removals
.
.
.
.
.
Generating optimized autoload files

試しに、publicディレクトリにアクセスして(今回はローカルなので、「localhost/blog/public/」)、「Lumen (5.6.3) (Laravel Components 5.6.*)」と表示されればOKです。

SQLite3用の設定

Lumenでは、DBの設定を.envファイルで行います。

lumenコマンドでインストールすると、.env.exampleというファイルが生成されているはずなので、こちらをコピーして.envファイルとします。

APP_ENV=local
APP_DEBUG=true
APP_KEY=
APP_TIMEZONE=UTC

LOG_CHANNEL=stack
LOG_SLACK_WEBHOOK_URL=

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

CACHE_DRIVER=file
QUEUE_DRIVER=sync

DB_で始まる部分がDB関連の設定です。

SQLite3の場合は、

DB_CONNECTION=sqlite
DB_DATABASE=sqliteファイルまでのパス

この2つの文言があればOKなので、

APP_ENV=local
APP_DEBUG=true
APP_KEY=
APP_TIMEZONE=UTC

LOG_CHANNEL=stack
LOG_SLACK_WEBHOOK_URL=

DB_CONNECTION=sqlite
DB_DATABASE=/app/public/blog/database/db.sqlite

CACHE_DRIVER=file
QUEUE_DRIVER=sync

とします。

DB接続をテスト

試しに、DBに接続してみます。

Lumenでは、コマンドからマイグレーションすることで、テーブルの作成がサクッとできるので、今回は、テストを兼ねてマイグレーションでテーブルを作成してみます。

php artisan make:migration CreateTestTable

最後の部分を、「Createテーブル名Table」とすると、テーブル名の部分が自動的に反映されます。

成功すると、

Created Migration: 2018_06_18_051007_create_test_table

と出て、database/migrationsディレクトリにファイルが出来ているはずです。

本来なら、中身を記述してマイグレーションするのですが、今回はただの接続テストなので、中身は変えずにそのままマイグレーションします。

php artisan migrate

Migration table created successfully.
Migrating: 2018_06_18_051007_create_test_table
Migrated:  2018_06_18_051007_create_test_table

エラーが出なければ成功です。

あとは、コマンドラインかSQLiteを読み込めるアプリなどで、しっかりとテーブルが作成されているかを確認します。

sqlite3 database.sqlite

SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.

sqlite> .table
migrations  test

きちんとtestテーブルが作成されていました。


LumenはLaravelの軽量版なので、eloquentが使えたりと機能が豊富かつ高速表示が出来ます。

データベースをSQLite3にすれば、より軽量に気軽にWEBサービスを作成できるので、ぜひ試してみてください。