SQLiteのWeb管理ツールphpLiteAdminをインストールしてみた
以前書いたとおり、運営しているサイトの中で比較的アクセス数の少ないサイトから徐々にMySQL→SQLiteの移行作業をしています。
普通は逆で、SQLiteで作っておいてアクセス数が増えてきたらMySQLやPostgreSQLへって感じなんでしょうけど、10年以上前に「最初からMySQLで作っとけば将来的にも安心だろー」と考えて作ったサイトがけっこうしぶとく動いています。
ただ、今までははまともに動いていたのに、昨今のWordPressの流行りからか、共用サーバーでMySQL自体が重くなっていて、あろうことかMySQLへの接続でエラーになってしまうケースも増えています。Webサーバー自体は元気なのにね。
というわけで、テストも兼ねて、失敗しても惜しくないサイトから徐々にMySQL→SQLiteへの移行を進めている次第。
SQLiteを使い始めてまだ半年程度ではありますが、本当に手軽で軽快に動作する上、SQL文の互換性も高く、トランザクションだってサポートしているので、なんかもうほとんどのサイトはこれで良いんじゃないかって気がしてきています。
ローカルPC限定ならSQLiteSpyが使いやすい
https://forest.watch.impress.co.jp/docs/review/598881.html
ローカルのテスト環境で、MySQLからSQLiteへの移行とテストをしている最中はこのSQLiteSpyをゴリゴリ使わせて頂きました。
正直、SQLiteをナメていた部分があり、ローカルで動かしているApacheのログ解析プログラムなどを移行するのは厳しいと思っていました。なにしろ運営サイトすべてのログをダウンロードして保管しているデータベースであり、一度に扱う行数が数十万行を超えてきます。
でも、あっさりとSQLiteへ移行できちゃいました。速度を厳密に測ったわけではありませんが、MySQLやPostgreSQLで動かしていたときと体感速度は変わりません。
そして、テーブルの中身を直接覗こうと思ってSQLiteSpyでそのログテーブルを開いて、「あ、しまった!」と思いました。なにしろ100万件近くあるレコードです。こんなちゃちそうに見える(失礼)アプリではフリーズもしくは何十分も無応答になるのではないか、と。
ところが、ほんの数秒後、サラっと100万レコードが表示されているじゃないですか。
なにこれやばい。SQLiteもすごいし、SQLiteSpyもすごいよ。
単一ファイルで動かすデータベースだからってナメすぎてました。ローカル環境で使うなら、このSQLiteSpyはめちゃめちゃオススメです。
SQLiteのWeb管理ツールphpLiteAdminを発見する
そして現在絶賛稼動中のWebサイトをMySQLからSQLiteに移行してから、ハタと気が付きました。
phpMyAdminが使えないやん(当たり前)
phpMyAdminやphpPgAdminに代わる、データベースをWebで管理できるツールがないと非常に不便です。一時的にDBファイルをダウンロードしてきて、SQLiteSpyで編集してアップロードしたり、苦肉の策で専用のPHPスクリプトを書いてアップロードしてからDB更新したりもしましたが、そんなの効率悪くて仕方ありません。
というわけで、phpMyAdminやphpPgAdminがあるなら、phpLiteAdminみたいなのないのかなぁー、ハハッさすがに同じネーミングではないかなぁーwなんてググってみたら、
https://www.phpliteadmin.org/download/
…………普通にありました。
phpLiteAdminをインストールする
さっそくphpLiteAdminのZIPファイルをダウンロードして解凍します。
phpMyAdminやphpPgAdminのようにすごい量のPHPファイルが出てくるのだろう、と思いきやわずか3ファイル。
しかもひとつはreadme(説明書)、もうひとつはphpliteadmin.config.sample.phpという設定ファイルで、別になくても動く。
そう、phpLiteAdminの本体は phpliteadmin.php ひとつだけなんです。
その分、スクリプトのサイズが234KBとPHPファイルとしてはなかなか巨大ですけど、いやぁ1ファイルって… ちょっとびっくりだわw
phpLiteAdminの設定ファイルを変更する
別にそのままでも良いのですが、デフォルトだとphpliteadmin.phpを置いたディレクトリの直下にある、拡張子 .db、db3、.sqlite、.sqlite3 をデータベースとして判断します。
まぁphpliteadmin.phpを置く場所は最低でもSSL付きのBASIC認証はかけるでしょうし、そこにDBファイルを置いても構わないといえば構わないのですが、設定をミスって丸見えになったりしたら怖いです。できればSQLiteのDBファイルはドキュメントルートよりも上に配置したい。
ということで、phpliteadmin.config.sample.phpをphpliteadmin.config.phpにリネームし、下記の部分を編集します。
//password to gain access
$password = 'admin';
//directory relative to this file to search for databases (if false, manually list databases in the $databases variable)
$directory = '.';
//whether or not to scan the subdirectories of the above directory infinitely deep
$subdirectories = false;
$passwordはphpLiteAdminを開いたときに聞かれるパスワードです。デフォルトではadminになっているので何かテキトーなのに変更しておいたほうが良いでしょうね。
そして、次の $directory = '.'; という部分がDBファイルのあるディレクトリを指定する場所です。ここにドキュメントルートより上にあるDBファイルを配置するディレクトリを指定します。
また、その下の $subdirectories に true を設定するとサブディレクトリまで探してくれるみたい。うちの場合はそこまで必要ないかなってことで、サブディレクトリのスキャンはOFFにしました。
phpLiteAdminを開いてみる
BASIC認証などをかけたディレクトリに phpliteadmin.php と phpliteadmin.config.php を配置し、phpLiteAdminを開きます。
ログインパスワードを聞かれるため、phpliteadmin.config.phpで設定しておいたパスワードを入力して[Log In]ボタンをクリック。
うぉ、想像してたよりしっかりした管理画面だ…!!
phpMyAdminは歴史も長いですし、ユーザー数も膨大なので、とても高機能で重~い管理ツールと化しています。それに比べるとphpPgAdminは機能的には数段階落ちるのですが、業務使用にも耐えるレベルではあります。
正直、この2つには圧倒的に及ばないだろうなーと想像してました。ファイル1個しかなかったしw
まだザッと触っただけですが、複数のDBを即座に切り替えて使えるし、テーブルの一覧や中身の表示はもちろん、指定した行の編集も追加もできるし、テーブル構造の変更、インデックスの張替えにトリガーの追加、エクスポートにインポートまで出来ちゃうじゃん。
普通にphpPgAdminレベルの機能がありそう…。
動作も軽快だし。これは嬉しい誤算でした。
まとめ
- SQLiteをローカルで触るならSQLiteSpyが軽快で便利
- 実運用でWeb管理ツールが必要ならphpLiteAdminを使おう
ということで、これからしばらくphpLiteAdminのお世話になってみようと思いました。