みなさんこんにちは。 日本Cloud Foundryグループのセカンドトップ、jacopenです。ちなみにセンターフォワードがhiroakiukajiでトップ下がozz会長、サイドバックがnota-jaです。
日本CFグループのフォーメーションはこの辺にしといて、今日はCloud Foundry百日行の45日目。紹介するのは、みんな大好きphpMyAdminです。
Cloud Foundryと相性がいいphpMyAdmin
Cloud Foundryをベースにしたサービスの多くは、ビルトインサービスという形で無償のMySQLを提供しています。このビルトインサービスを使って開発を進めていきたい人も多いでしょう。ですが、多くの人が最初に直面する大きな問題があります。
それは何かというと、外部から直接MySQLインタンスに接続することができないということ。つまり、手元のmysqlコマンドやMySQL Administratorを使ってインスタンスの操作ができないということです。
これは結構困りますね。Railsのように事前に定義しておいてdb migrateするだけで良いみたいな仕組みを作っていれば別として、自分でテーブルやカラムを作成しながら開発を進めていくといったやり方が出来なくなってしまいます。
じゃあどうすれば?というときに役に立つのが、phpMyAdminなわけです。
今回はこのような構成を想定してCloud Foundryにデプロイしてみます。ひとつのService instanceに対して、開発中アプリケーションとphpMyAdmin両方からbindすることで、開発中アプリケーションに影響を及ぼすことなくMySQLのメンテナンスを行うことが出来ます。
phpMyAdminをデプロイする前に、以下のようにmysql serviceを作成しておきました。
https://github.com/cloudfoundry-community/phpmyadmin-cf
上記リポジトリから、zip版のアーカイブがダウンロードできるので手元で展開します。
そして、おもむろにpushします。(※実験に使っているCloud(n) PaaSだとbuildpackが古かったため、-bでPHP buildpackを別途指定しています)
push後、serviceにbindしてrestageします
標準では以下のようなmanifest.ymlになっています。アプリ名を変更したい場合やメモリサイズを変えたい場合は、このmanifest.ymlを編集すると良いでしょう。
動いたようです。
大抵のサービスでは、builtin serviceのユーザー名、パスワードをコントロールパネルから取得できます。取得したら、phpmyadminに入力してログインしてみましょう。
無事、ログイン出来たようです。
これでbuiltin serviceのmysqlも自由自在に操作できますね。
認証があるとはいえ、phpmyadminを立ち上げたままにするのはセキュリティ的によろしくないため、利用が終わったらアプリを削除するか、停止しておくと良いでしょう。このあたりの公開・非公開が簡単にできるのも、PaaSの強みですね。
構成
phpMyAdminは有名なのでご存じの方が多いと思いますが、ブラウザから利用できるMySQLのクライアントツールです。その名の通り、PHPで書かれています。今回はこのような構成を想定してCloud Foundryにデプロイしてみます。ひとつのService instanceに対して、開発中アプリケーションとphpMyAdmin両方からbindすることで、開発中アプリケーションに影響を及ぼすことなくMySQLのメンテナンスを行うことが出来ます。
phpMyAdminをデプロイする前に、以下のようにmysql serviceを作成しておきました。
$ cf create-service mysql default php-mysql-dev OK
デプロイ
デプロイするphpMyAdminは、Cloud Foundry向けにカスタマイズされたバージョンを利用します。https://github.com/cloudfoundry-community/phpmyadmin-cf
上記リポジトリから、zip版のアーカイブがダウンロードできるので手元で展開します。
$ wget https://github.com/cloudfoundry-community/phpmyadmin-cf/archive/cf-ready.zip $ unzip cf-ready.zip $ cd phpmyadmin-cf-cf-ready/
そして、おもむろにpushします。(※実験に使っているCloud(n) PaaSだとbuildpackが古かったため、-bでPHP buildpackを別途指定しています)
$ cf push -b https://github.com/cloudfoundry/php-buildpack.git#v3.2.2 Using manifest file /Users/jacopen/Downloads/phpmyadmin-cf-cf-ready/manifest.yml Updating app phpmyadmin-cfready in org xxxxx / space default as xxxxxxxxxxxx... OK (中略) state since cpu memory disk details #0 running 2015-08-02 05:12:42 PM 0.0% 16M of 1G 102.1M of 2G
push後、serviceにbindしてrestageします
$ cf bind-service phpmyadmin-cfready php-mysql-dev Binding service php-mysql-dev to app phpmyadmin-cfready in org xxxxxxxxxx / space default as xxxxxxxxxxx... OK TIP: Use 'cf restage phpmyadmin-cfready' to ensure your env variable changes take effect $ cf restage phpmyadmin-cfready Restaging app phpmyadmin-cfready in org xxxxxxxxxx / space default as xxxxxxxxxxxxxxxx..
標準では以下のようなmanifest.ymlになっています。アプリ名を変更したい場合やメモリサイズを変えたい場合は、このmanifest.ymlを編集すると良いでしょう。
--- #Generated manifest applications: - name: phpmyadmin-cfready memory: 1G instances: 1
動いたようです。
大抵のサービスでは、builtin serviceのユーザー名、パスワードをコントロールパネルから取得できます。取得したら、phpmyadminに入力してログインしてみましょう。
無事、ログイン出来たようです。
これでbuiltin serviceのmysqlも自由自在に操作できますね。
認証があるとはいえ、phpmyadminを立ち上げたままにするのはセキュリティ的によろしくないため、利用が終わったらアプリを削除するか、停止しておくと良いでしょう。このあたりの公開・非公開が簡単にできるのも、PaaSの強みですね。
今回使用した環境
- CF CLI(cf version 6.10.0-b78bf10-2015-02-11T22:25:45+00:00)
- Cloud Foundry (Cloud(n) PaaS v172)
- phpMyAdmin
https://www.phpmyadmin.net/ - phpMyAdmin Cloud Foundry Ready(RELEASE_4_4_0)
https://github.com/cloudfoundry-community/phpmyadmin-cf