Laravelの軽量版・LumenでSQLite3を使う
Laravelの軽量版・Lumenを試しています。個人の遊びサーバーはMySQLが入っていないので、データベースにSQLite3を使う設定をしてみました。
更新日: 2018.7.17公開日: 2018.6.18
はじめに
Lumen自体はあらかじめインストールされていて、composerにパスが通っている前提で進めさせてもらいます。
WEBアプリ作成
WEBアプリの作成はコマンドからできます。今回は、blogディレクトリにブログアプリを作る前提で進めます。
新規作成コマンドは、「lumen new null}」です。
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サービスを作成できるので、ぜひ試してみてください。