簡単!LaravelでSQLiteを使う方法(phpLiteAdminもあり)

こんにちは❗フリーランス・エンジニアの 九保すこひ です。

さてさて、これまで私はクライアント様方から様々なタイプのご依頼を受けてきました。もちろんLaravel関連の開発が多いのですが、そんな中、少し「変化球」な内容がありました。

それは・・・

データベースにSQLiteを使う

というものです。

というのも、クライアントさんにお話を伺うと・・・

  • そのアプリケーションは今後コピーして複数で運用したい
  • でもMySQLなどの初期設定はノウハウがないのでできない

とのことでしたので、「でしたらSQLiteはどうでしょう😉」と提案させていただきました。

なぜなら、SQLiteはファイルを使ったデータベースなので、初期設定を済ませたファイルをつくっておけば後はコピーするだけですし、さらにレンタルサーバーもSQLiteには対応してるところが多かったからです。

そこで!

今回はそんなSQLiteLaravelで使う方法をご紹介します。
ぜひ楽しみながらやってみましょう❗

「SQLiteって
思ったより高速ですね😲❗」

開発環境: Laravel 7.x、Ubuntu 18.04、nginx 1.14.0

SQLiteをインストールする

まず以下のコマンドを実行してSQLiteがインストールされているか確認しておきましょう。

sqlite3 --version

もしインストールされていない場合は次のコマンドでインストールしてください。

sudo apt install sqlite3

LaravelでSQLiteを使う設定をする

.envを変更する

LaravelSQLiteを使うには、.env内にあるDB_CONNECTIONを変更します。

DB_CONNECTION=sqlite

# 👇 その他は不要なのでコメントアウト
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=*****
#DB_USERNAME=*****
#DB_PASSWORD=*****

なお、LaravelSQLiteファイルは/database/database.sqliteがデフォルトですが、変更したい場合はDB_DATABASEで指定できます。

DB_DATABASE=/PATH/TO/YOUR/SQLITE/database.db

ファイルを作成する

SQLiteはファイルを使ったDBですので、まず「/database/database.sqlite」というDBファイルを作成します。

ちなみに、後ほどマイグレーションを実行して以下のようなエラーが出た場合はファイルの権限が正しくない場合があります。

unable to open database file ...

そんな場合、次のコマンドで所有者と権限を変更してみてください。

sudo chown www-data:(ログインしているユーザー名) database.sqlite
sudo chmod 775 database.sqlite

なお、www-dataの部分は実行環境によって違ってきますので、次のコードをPHPで実行してみるといいでしょう。

echo exec('whoami'); // 👈 PHPを実行しているユーザー名が表示されます

これでSQLiteの設定は完了です!

phpLiteAdminをインストールする

SQLiteの中身をブラウザから確認できるようにphpLiteAdminをインストールします。(不要な人は次まで読み飛ばしてください)

本体を設置する

まずダウンロードページにアクセスし最新版のphpLiteAdminをダウンロードします。

ダウンロードしたファイルを展開するとphpLiteAdmin_v1-9-8-2というフォルダが作成されるので、以下のようにして移動します。

sudo mv phpLiteAdmin_v1-9-8-2 /usr/share/phpLiteAdmin

nginxの設定をする

次に、設置したphpLiteAdminに「phpliteadmin.test」としてアクセスできるようにnginxで設定しておきましょう。

以下のコードを追加して保存してください。

/etc/nginx/sites-available/default

# 👇 追加
# phpLiteAdmin
server {
	listen 80;
	listen [::]:80;
	server_name phpliteadmin.test;
	root /usr/share/phpLiteAdmin;
	index index.html, index.php;

	location / {
		try_files $uri $uri/ =404;
	}

      location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
}

保存が完了したら、nginxを再起動します。

sudo systemctl restart nginx

ドメイン登録する

続いて、「phpliteadmin.test」ドメインの登録です。
こちらも次のコードを追加してください。

/etc/hosts

127.0.0.1	phpliteadmin.test

これで、ブラウザから「http://phpliteadmin.test/phpliteadmin.php」にアクセスできるようになります。

phpLiteAdminの設定を変更する

最後にphpLiteAdminの設定を変更します。

/usr/share/phpLiteAdmin/phpliteadmin.php

//password to gain access
$password = '(ここにパスワード)'; // 👈 phpLiteAdminへのログインパスワード

//directory relative to this file to search for databases (if false, manually list databases in the $databases variable)
$directory = false; // 👈 データベースは直接指定するので false に変更

//whether or not to scan the subdirectories of the above directory infinitely deep
$subdirectories = false;

//if the above $directory variable is set to false, you must specify the databases manually in an array as the next variable
//if any of the databases do not exist as they are referenced by their path, they will be created automatically

// 👇 ここが接続するSQLiteのDBファイルです。
$databases = array(
	array(
		'path'=> '/PATH/TO/YOUR/LARAVEL/database/database.sqlite', // 👈 先ほどつくったファイル
		'name'=> 'Laravel 7.x'
	)
);

これでブラウザからログインすると次のようになります。

※なお、phpLiteAdminGPLライセンスですので、アプリケーションに同梱する場合はお気をつけください。

エラーが出たら・・・

phpinfo()で表示した内容でsqlite3が有効になっているか確認してみてください。

もし有効になってない場合は、以下のコマンドを実行してインストールしてみてください。

sudo apt install php-sqlite3

なお、バージョンを指定する場合はこちら。

sudo apt install php7.2-sqlite3

テストしてみる

では、適当にマイグレーションとSeederをつくってDBテーブルを作ってみましょう。

php artisan migrate:fresh --seed

すると、データベースの中身は次のようになりました。

成功です😊✨

おわりに

ということで、今回はLaravelSQLiteを使う方法をご紹介しました。

あまりSQLiteをメインで使うことは少ないかもしれませんが、簡単にコピーして気軽に使いたい場合は便利なんじゃないでしょうか。

また、データはすべて1つのファイルにまとめられているので、バックアップする場合もコピーだけでOKですよ😊✨

ぜひ機会があったら試してみてくださいね。

ではでは〜❗

「機能的には、もうLiteっていう
イメージじゃないですね👍」

この記事が役立ちましたらシェアお願いします😊✨ by 九保すこひ
また、わかりにくい部分がありましたらお問い合わせからお気軽にご連絡ください。
(また、個人レッスンも承ってます👍)
このエントリーをはてなブックマークに追加       follow us in feedly