OmnibusでPHPアプリケーションをRPMにパッケージングする
要約: Omnibusを使うとApacheとPHPをバンドルしたオールインワンなPHPアプリケーションのRPMパッケージを作れます。
最近CLIツールやAPIサーバなどはGoで書くようになって、PHPをさわる頻度が減ってきているのですが、それでもPHPの実行環境が不必要になることはなく、その個人的な一つの理由にAdminerがあります。これは2012年に一度ブログにも書いたのですが、PHPのシングルファイルをDocumentRootにおくだけで動作する、データベース用のWebUIです。
Adminer - PHPの1ファイルを置くだけで簡単に使えるDB管理ツール - オープンソースこねこね
現在でもメンテは続いているようで、今ではElasticsearchやMongoDBなどにも対応しているそうな。個人的にもずっと使い続けています。
ただ、前述のようにGoの適用範囲が広がってきたので、新しく立ち上げたサーバとかだと、Adminerを使う以外にApacheやPHPが必要ない環境もあります。後々の運用管理のことも考えてサーバ構築にはプロビジョニングツールを使っていることもあり、これ一つのために、ApacheとPHPを入れてhttpd.confとphp.iniを書き換えるレシピ書いて。。。てなことがやや面倒くさいです。
Adminerの機能単体でぱっとインストール、アンインストールできればいいかもしれない、と考えたので、omnibusを使ってApacheとPHPをバンドルしたオールインワンなPHPアプリケーションのRPMを作成してみました。omnibusについては以前ブログに書いたのでそちらを参照してください(CentOS用にSupervisor3.3.0のRPMパッケージを作成した - オープンソースこねこね )。今回の成果物は以下
$ sudo yum install https://github.com/kohkimakimoto/omnibus-adminer-server/releases/download/v0.3.0/adminer-server-0.3.0-1.el7.x86_64.rpm
でインストールできます。これだけで/opt/adminer-server
にApacheとPHPランタイムを含めたアプリケーションがインストールされます。これらはもちろんシステムワイドにあるApacheやPHPとは干渉しません。あとは、
$ sudo systemctl start adminer-server
とすればApacheが14200ポートで起動しますのでブラウザでhttp://localhost:14200/adminer.php
にアクセスすると
と画面がでます。
補足
- サービス設定は現状systemdのみの対応なので、このRPMはCentOS7限定です。initスクリプトを書けばCentOS6などにも対応できますが、自分が使わないので書いてません。
- 設定ファイルは
/etc/adminer-server
、adminer.phpなどのPHPファイルは/var/lib/adminer-server
以下に配置してあります。 - 今回はやってないがMySQLなどDBもバンドルすれば、いわゆるLAMPアプリケーションがパッケージ配布可能になるんじゃないかと。
あとがき
こんなことしなくても、今はDocker使えばいいかも、とも思いますが、Systemdにサービスを登録するところまでyum installl
でできるのでミドルウェア的なものを扱うのなら、RPMも便利ですよと。。。