まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:phpmyadmin

前回、LAMP 環境を構築した IBM LinuxONE サーバーを使って、PHP のメジャーな MVC フレームワークの1つであるCakePHP の環境を整えてみます:
IBM LinuxONE コミュニティクラウド上で LAMP 環境を作る


まず CakePHP を動かす場合の PHP 設定を行います。/etc/php.ini を適宜変更するのですが、最低限やっておかないといけないのが、タイムゾーンの設定です。/etc/php.ini を編集して、以下の設定を加えます([Date] カテゴリ内でコメントアウトされている Date.timezone の設定からコメントを外し、"Asia/Tokyo" に設定して保存します:
$ sudo vi /etc/php.ini

  :
  :
[Date]
Date.timezone = "Asia/Tokyo"
  :
  :

また CakePHP では PHPUnit というモジュールを使うことになるので、これもインストールしておきます。前回の LAMP 環境構築時に pear もインストールしているので、pear を使って PHPUnit を導入します:
$ sudo pear install pear/PHPUnit

次に MySQL の設定を行います。まずは文字コードの設定を変更して、デフォルトで UTF-8 を使えるようにします:
$ sudo vi /etc/my.ini

[mysqld]
character-set-server=utf8

[mysql]
default-character-set=utf8



今回は CakePHP 専用のデータベース(cakedb)を新たに作成し、その中に商品情報を格納するマスターテーブル(items)と、商品カテゴリを格納するマスターテーブル(categories)を定義することにします:
$ mysql -u root -p

mysql> create database cakedb default character set utf8;
mysql> use cakedb
mysql> create table items( id int primary key auto_increment, name varchar(50), category_id int, created datetime default null, modified datetime default null );
mysql> create table categories( id int primary key auto_increment, name varchar(50), created datetime default null, modified datetime default null );
mysql> quit

1つのデータベースと、2つのテーブルを作りました。必要に応じてこれらにアクセスできるユーザーなどを追加しましょう。

これら2つのマスターテーブルを操作できるような環境を CakePHP で作ることにしましょう。ここは必須ではありませんが、データベースを操作する上では phpMyAdmin があると便利です。IBM LinuxONE コミュニティクラウドのサーバーに phpMyAdmin 環境を導入する場合の手順はこちらの記事を参考にしてください:
IBM LinuxONE コミュニティクラウド上に phpMyAdmin を導入する


ではいよいよメインディッシュの CakePHP 環境を構築します。PHP 5.3 でも動くよう、CakePHP のバージョンは 2.x を使うことにします。またこれも Apache HTTPD のドキュメントルートがデフォルトのままの /var/www/html であるとして作業を紹介します:
$ https://github.com/cakephp/cakephp/archive/2.9.4.zip
$ sudo /bin/bash
# cd /var/www/html
# unzip ~linux1/2.9.4.zip
# mv cakephp-2.9.4 cakephp
# chmod 777 -R cakephp/app/tmp
# chmod 755 cakephp/lib/Cake/Console/cake
# cd cakephp/app/Config
# vi core.php

  :
  :
/**
 * A random string used in security hashing methods.
 */
        Configure::write('Security.salt', 'ABCDabcd1234');

/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
        Configure::write('Security.cipherSeed', '1234567890');
  :
  :

最後の cakephp/app/Config/core.php の編集作業では 'Security.salt' の値と、'Security.cipherSeed' の値はデフォルトの(既知の)値のままだと危ないのでランダムな値に書き換えました。

続けて(カレントディレクトリが cake/app/Config/ の状態で)、更にデータベースの設定ファイルを用意して、自分の環境に合わせた設定を行います:
# cp database.php.default database.php
# vi database.php

  :
  :
class DATABASE_CONFIG {

        public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => 'localhost',
                'login' => 'root',
                'password' => 'P@ssw0rd',
                'database' => 'cakedb',
                'prefix' => '',
                //'encoding' => 'utf8',
        );
  :
  :

↑具体的にはユーザー名(login)、パスワード(password)、データベース(database)の値を書き換えます。


CakePHP 自体はここまでの設定で動くはずです。必要に応じて DebugKit などの便利なプラグインを cakephp/app/Plugin/ 以下に追加で導入してください。DebugKit の導入に関してはこちらを参照ください:
https://github.com/cakephp/debug_kit/tree/2.2


ブラウザで http://(IPアドレス)/cakephp/ にアクセスすると、CakePHP のホーム画面が表示されます。緑と黄色のバーが並んでいる状態であれば、少なくとも設定は間違っていないことになります。下図では DebugKit まで導入して、全て緑になっている状態です:
2017010603

 

IBM LinuxONE コミュニティクラウド上に LAMP 環境のサーバーを作り、そのデータベースを管理するための phpMyAdmin を導入します。LAMP 環境を作るまでの手順は以下を参照してください:


LAMP 環境が出来てしまえば phpMyAdmin は普通に導入できるのでは・・・ と考える人がいるかもしれません。ほぼ正解ですが一点だけ注意点があります。

2017/Jan/06 時点では、IBM LinuxONE コミュニティクラウドの RHEL 6.x で提供されている PHP のバージョンは 5.3.3 です。一方で phpMyAdmin の最新バージョンは 4.6.5.2 ですが、こちらは PHP 5.5 以上を動作環境としています。つまり現時点の LinuxONE 環境では phpMyAdmin 最新バージョンの動作条件を満たすことができないのでした。

というわけで、PHP 5.3.3 でも動作できるバージョンの phpMyAdmin 4.0.x を用意する必要があります。この一点だけが注意点なのでした。


では改めて、こちらの手順を参考に IBM LinuxONE コミュニティクラウド上に作った仮想サーバーに SSH でログインします:
2017010403


では phpMyAdmin 4.0.x(2017/Jan/06 時点の最新版は 4.0.10.18)を導入します。Apache HTTP サーバーのドキュメントルートはデフォルトの /var/www/html であると仮定して、以下を実行します:
$ wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.18/phpMyAdmin-4.0.10.18-all-languages.zip
$ sudo /bin/bash
# cd /var/www/html
# unzip ~linux1/phpMyAdmin-4.0.10.18-all-languages.zip
# mv phpMyAdmin-4.0.10.18-all-languages phpMyAdmin
# exit

これで http://(IPアドレス)/phpMyAdmin/ にアクセスすれば phpMyAdmin にアクセスできます。必要に応じて認証をつけた上で運用してください:
2017010602



以前にこんなブログエントリを書きました:
StrongLoop のデモ用 MySQL サーバー


残念なことに 2016/Dec/02 現在、ここで紹介した Strongloop からのサンプル MySQL データベースの情報は消えてしまいました。。。

というわけで、改めて公開されている MySQL データベースを探していたのですが、その経緯でこんなサイトを見つけました:
http://db4free.net/
2016120200


db4free.net はその名の通り、無料でテスト用の MySQL データベースを作成できるサービスのようです。最新バージョンである MySQL 8 にも対応している模様です。本番環境としての利用は推奨されていませんし、パフォーマンスの担保もありませんが、200 MB までの MySQL データベースを1つ作れるようです。また作成後は phpMyAdmin による管理にも対応しています:
2016120201


私も実際に1つ作ってみました。はっきり言ってウェブインターフェースの(phpMyAdmin の)パフォーマンスはかなり遅いのですが、コマンドラインから直接 MySQL DB に接続して使っている分には、まあまあ使えると思っています。ちなみに作成したデータベースのデフォルト文字コードは UTF-8 でした:
2016120202


これでサンプルテーブルを作り、サンプルデータをロードすれば OK 。データの削除権限を持ったユーザーなので、ユーザー情報を公開するわけにはいきませんが、当初の目的(汎用的に使えるサンプル MySQL データベースの公開)を達成することはできそうです。

(2016/Dec/02 追記 このエントリ内で紹介しているページが消えてしまったため、具体的なサーバーを確認することができなくなってしまいました)


このブログでもたびたび紹介している Loopback などを提供している StrongLoop 社の技術者向けブログを見
ていて気付いたことがあります。

気付いたのはこのブログエントリ、LoopBack から MySQL データベースに接続するための手順を紹介しているガイドです:
Getting Started with the MySQL Connector for LoopBack

(2016/Dec/02 追記 ↑このリンク先ページが消えてしまいました)



ページの中ごろに差し掛かったあたりで・・・ ん!?
2016021801
 (↑実際にはモザイク無し)


LoopBack の MySQL コネクターを使ったデータソースを記述する手順を紹介している箇所で、StrongLoop がデモ用に公開している MySQL サーバーの接続情報が載っているではありませんか!?

まあデモ用なので、このユーザーでできる権限は問い合わせ(つまり SELECT)程度です。とはいえ、そんな MySQL が公開されているとな!

早速 Bluemix 上に phpMyAdmin 環境を構築してみました(笑)。その手順についてはこちらを参照ください:
Bluemix で phpMyAdmin を動かす


1つ注意点として、StrongLoop のデモ用 MySQL はバージョンが低いらしく(僕が確認した限りでは 5.1.73)、最新 phpMyAdmin の推奨環境に合わないためか、そのままだと「バージョンアップしろ」という内容のエラーが表示されました:
2016021800


このエラーを(無理やり)回避するには、phpMyAdmin 側のエラーチェック部分を変更する必要があります。phpMyAdmin の libraries/common.inc.php ファイルの下記該当部分を全てコメントアウトして保存します:
   :
:

# if (PMA_MYSQL_INT_VERSION < $cfg['MysqlMinVersion']['internal']) { # PMA_fatalError( # __('You should upgrade to %s %s or later.'), # array('MySQL', $cfg['MysqlMinVersion']['human']) # ); # }

:

その上で phpMyAdmin 一式を(Bluemix 環境に)デプロイして phpMyAdmin にアクセスし、上記ブログ内で公開されている ID とパスワードでログインすると、デモデータベースの中身にアクセスできました:
2016021802


定義や内容を変更することはできないのですが、動作確認用のサンプルデータベースとして MySQL データベースサーバーが必要な場合に重宝しそうです。


(参考)
http://stackoverflow.com/questions/26222244/phpmyadmin-error-you-should-upgrade-to-mysql-5-5-0-or-later


かなり以前に Bluemix 環境で phpMyAdmin を動かす場合の流れを紹介したことがあります:
BlueMix 上で PHP アプリを動かす


が、ここで紹介している内容は Bluemix がまだベータ版だった 2014 年頃のもので、今となっては内容が古くなってしまいました。改めて 2016/Feb/08 時点での手順を紹介します。

まず、何はともあれ Bluemix 環境内に PHP ランタイムを作成し、MySQL サービスをバインドします。MySQL サービスはオープンソース版ClearDB 版の2つの選択肢がありますが、どちらでも構いません。以下はオープンソース版を使っているものとして説明しています:
2016020803


PHP プロジェクトのメニューから「環境変数」を選択し、バインドされた MySQL サービスに関する接続情報を確認します。この中の credentials 内から hostname, port, name(データベース名), username, password の内容を確認してメモしておきます(後で使います):
2016020804


次に phpMyAdmin のページ上部から最新版の phpMyAdmin をダウンロードします。この記事を書いている 2016/Feb/08 時点での最新バージョンは 4.5.4.1 であり、ダウンロードファイルの名前は phpMyAdmin-4.5.4.1-all-languages.zip でした。以下、この環境を前提として記述しますが、最新バージョンが変更になった場合は適宜読み替えてください:
2016020801


ダウンロードした zip ファイルを展開して、適当なフォルダに格納します。以下の例では C:\tmp\phpmyadmin\ というフォルダの中に phpMyAdmin というサブフォルダ名で展開しています:
2016020802


展開結果のファイルの中から config.sample.inc.php ファイルを config.inc.php にリネームします。更にこのファイルをテキストエディタで開き、$cfg['Servers'][$i]['host'] 変数の値を先程環境変数で確認した hostname:port となるように書き換えて保存します。例えば hostname が 159.8.128.49、port が 3307 であった場合は以下のように指定して保存します:
  :
  :
$cfg['Servers'][$i]['host'] = '159.8.128.49:3307';
  :
  :

更に、phpMyAdmin を展開したフォルダ(この例であれば c:\tmp\phpmyadmin)に composer.json というファイルを以下の内容で作ります:
{}

また、同じフォルダ内に .bp-config という名前のフォルダを作り、更にその下に options.json というファイルを以下の内容で作ります:
{ "PHP_EXTENSIONS": [ "bz2", "zlib", "curl", "mcrypt", "mbstring", "mysql", "mysqli", "pdo", "pdo_mysql" ] }

この時点で phpMyAdmin を展開したフォルダ(c:\tmp\phpmyadmin\)はこのような感じになっています(.bp-config フォルダの下に options.json が保存されてます:
2016020801


これで phpMyAdmin を Bluemix で動かすための準備は整いました。cf ツールを使って、このフォルダ(c:\tmp\phpmyadmin\)以下をまとめて最初に作った PHP ランタイムにプッシュします:
2016020803


プッシュが成功したら、ウェブブラウザで PHP ランタイムの /phpMyAdmin/ フォルダにアクセスします。phpMyAdmin のログインページが表示され、ユーザー名とパスワードには環境変数から取得した username および password の値をそれぞれ入力して「実行」をクリックします:
2016020801


正しく入力されていれば、phpMyAdmin の初期画面になり、指定した MySQL サーバー内のデータベースが指定したユーザーの権限内で操作できるようになります。ここからテーブルを作成したり、クエリーを発行したりすることも可能です:
2016020802


Bluemix で phpMyAdmin を動かす場合の参考にしてください。

 

このページのトップヘ