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サービスを作成できるので、ぜひ試してみてください。