2011年8月16日火曜日

LAMP of CakePHP on VMware:構築後のデザート~phpMyAdminインストール

MySQLサーバーをウェブブラウザから操作するGUIツールであるphpMyAdminのインストール手順を解説します。

ダウンロード

phpMyAdmin - Download
上記ページにも記載されていますが、バージョン3以降はPHP5.2以上である必要があるのでご注意を。

ドキュメントルートに配置

アーカイブを解凍後、Apacheの公開ディレクトリに配置。
$ cd /var/www/html 
$ tar xvzf phpMyAdmin-3.4.3.2-all-languages.tar.gz 
# mv phpMyAdmin-3.4.3.2-all-languages phpMyAdmin 

設定ファイル作成

ルートディレクトリ直下に設定ファイルの雛形「config.sample.inc.php」があるので、「config.inc.php」という名前にリネーム(orコピー)。
# cd phpMyAdmin 
# cp config.sample.inc.php config.inc.php 

つづいて編集。最低限以下の設定だけでOK。
$cfg['blowfish_secret'] = '(ランダムな文字列)'

php-mcryptパッケージインストール

phpMyAdminの認証時に認証情報の暗号化を行うためかどうか知らんが、これインストールしておかないと警告が表示される。
ここで、CentOSのバージョン、PHPのバージョンにより運命が分かれます。
CentOS 5.xで、phpパッケージの場合
以下コマンドで瞬殺です。
# yum install php-mcrypt  
php53パッケージ OR CentOS 6.0の場合
残念ながら、現時点ではyumのパッケージは提供されていませんので、RPMパッケージを使用するか、ソースからコンパイルするしかありません。

ここではCentOS 6.0でRPMパッケージを使った手順を説明します。CentOS 5.6でphp53パッケージの場合の手順は調べていませんが、流れは同じようなもんだと思います。
必要なパッケージは以下。
  • libmcrypt
  • php-mcrypt
まずは以下サイトでRPMパッケージを検索。
CentOS 6.0用のがいつくか見つかる。僕がチョイスしたのは以下。
libmcrypt-develも必要かどうか分からんが、とりあえず除外した。
パッケージのURLは、上記ページから「Download Mirrors」→「select mirror」と辿ったページの「binary package」のリンクがそれ。
wgetで取得してインストールし、Apache再起動。
# wget http://download.fedora.redhat.com/pub/epel/6/i386/libmcrypt-2.5.8-9.el6.i686.rpm 
# wget http://download.fedora.redhat.com/pub/epel/6/i386/php-mcrypt-5.3.2-3.el6.i686.rpm 
# rpm -ivh libmcrypt-2.5.8-9.el6.i686.rpm 
# rpm -ivh php-mcrypt-5.3.2-3.el6.i686.rpm 
# /etc/init.d/httpd restart 

以上でOK!
phpMyAdminの設定ファイルで特に言語や文字コードの変更はしなかったけど、日本語データは問題無く扱えました。

※参考

関連エントリ



2011年8月15日月曜日

LAMP of CakePHP on VMware:MySQL追加設定~日本語設定、DB・ユーザー作成など

さて、LAMPほぼ童貞の男(当時)がお送りする、VMware Player上のCakePHP自習環境構築シリーズ。
初稿は今年の4月、「MySQLのDB・ユーザー作成やらは追々書いていきます」などとぬかしてから早4ヶ月…ようやくここまで辿り着きましたよ。

mysql_secure_installationの実行

まずはMySQLをセキュアにするために「mysql_secure_installation」を実行します。
# mysql_secure_installation

以下設定を行うかどうか尋ねてくるので、適宜設定してください。
基本、全てYesにしておいた方が良いでしょう。
  • rootユーザーのパスワード設定
  • 匿名ユーザーの削除
  • リモートからのrootユーザーログイン禁止設定
  • testデータベースの削除
  • 権限テーブルのリロード ※ここまでの権限に関する設定の適用

文字コード設定

我らが日本語を使用するために、DBの文字コードをUTF-8に設定。
/etc/my.cnfを開き、以下設定を追加。
[mysqld]
# MySQLサーバー用の文字コード設定
character-set-server=utf8

[client]
# クライアント用の文字コード設定
default-character-set=utf8

設定済んだら再起動。
# /etc/init.d/mysqld restart

MySQLにコマンドラインから接続

rootユーザーで接続する場合は以下コマンド。
「-u」オプションでユーザーを指定します。
「-p」オプションはパスワードを設定している場合に必要。よってパスワード未設定の場合は不要ですが、パスワードは設定しておくべきです。特にrootなら尚更。
$ mysql -u root -p
Enter password:
Welcome…
…
mysql>

ログイン済んだら上記のように「mysql>」とのプロンプトが表示されます。
ここで先程の文字コード設定がちゃんと適用されているか確認してみましょう。
以下コマンドを実行してみてください。
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> show variables like 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

上記のような実行結果が得られればOKです。

ユーザー作成

  • ユーザー名:user
  • パスワード:userpass
  • 接続元ホスト:localhost
上記のユーザーを作成するには以下のコマンドを実行。
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'userpass';

ここでユーザー情報を確認してみましょう。
ユーザー情報はmysqlデータベースのuserテーブルに格納されています。
mysql > use mysql;
mysql > SELECT user, password, host FROM user;
+------+-------------------------------------------+--------------+
| user | password                                  | host         |
+------+-------------------------------------------+--------------+
| root | *…| localhost    |
| root | *… | 127.0.0.1    |
| user | *… | localhost    |
+------+-------------------------------------------+--------------+
補足1:ユーザーの識別単位
MySQLのユーザーは「ユーザー名+接続元ホスト」の単位がキーです。
つまり、「'user'@'localhost'」と「'user'@'192.168.1.1'」は別人です。
試しにホスト違いの同名ユーザーを作成してからuserテーブルを覗いてみてください。
補足2:匿名ユーザーが残っている場合はホスト名を必ず指定すること
CREATE USER文はホスト名の省略が可能。
mysql> CREATE USER 'test' IDENTIFIED BY 'testpass';

この場合、ホストには「%」(全てのホストから接続可能)が設定される。
この時、もし匿名ユーザー(userテーブルのuser列が空白)が存在する場合、ユーザーの照合順序の関係で、testユーザーでアクセスしても匿名ユーザーとして扱われてしまいます。よって、認証時のパスワードはtestユーザーのものではなく、匿名ユーザーのものを使用しないといけません。
この事知らないと、「何で認証通らないんだ!?」と不毛な時間を浪費することになりますので、注意してください。ていうかそもそも匿名ユーザーなんて残しておくべきではないので、前述のmysql_secure_installationで葬ってあげましょう。

※参考
公式マニュアル:接続確認

データベース作成

文法の詳細はここでは割愛。日本語環境のDBなら以下の設定が一般的です。
mysql> CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

作ったDBは以下で確認できます。
mysql> show databases;
テーブル作成
ここも文法の詳細は割愛。日本語文字列扱う場合の一般的な書き方。
ちなみにテーブル定義はCakePHPの規約に準じたものです。
mysql> use sample;
mysql> CREATE TABLE sample_tables (
->  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
->  note TEXT NOT NULL,
->  created DATETIME DEFAULT NULL,
->  modified DATETIME DEFAULT NULL
-> )
-> engine=innodb,
-> charset=utf8,
-> collate=utf8_general_ci
-> ;

作ったテーブルは以下で確認できます。
mysql> show tables;
mysql> show columns from sample_tables;

ユーザーに権限付与

ユーザーを作成しただけでは、データベースやテーブルに対する操作は出来ません。適切に権限を設定する必要があります。
権限付与にはGRANT文を使用。文法詳細は割愛。
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON sampledb.* TO 'user'@'localhost';
mysql> FLUSH PRIVILEGES;
権限を削除するには
REVOKE~FROM文を使用。
mysql> REVOKE SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON sampledb.* FROM 'user'@'localhost';
mysql> FLUSH PRIVILEGES;

関連エントリ

2011年8月14日日曜日

LAMP of CakePHP on VMware:構築後のデザート~NTP設定

今回はNTP設定の手順を説明します。
要するにOSの時刻の自動調整設定のことで、まあ電波時計みたいなもんです。

NTPインストール

恐らくデフォルトでインストール済だと思われますが。
# yum install ntp

自動起動設定

# chkconfig ntpd on
エラー発生したら、この記事参考にして「ntpd」を追加してから再度試してください。

設定ファイルにNTPサーバー追加

/etc/ntp.confをオープン。「server」で始まる行がNTPサーバーの設定。
既存の設定を削除orコメントアウトし、以下の3行を追加。
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
※上記NTPサーバーの情報元

ntpd起動

起動済の場合はrestart。ちなみにすぐに時刻同期されるわけではありません。
# /etc/init.d/ntpd start

すぐに同期したければ

以下のようにすれば手動で同期できます。
# ntpdate NTPサーバーアドレス

関連エントリ



LAMP of CakePHP on VMware:構築後のデザート~Apache, MySQL自動起動設定

さて、ここまでVMware Player上のCentOS 5.5・6.0でCakePHPを最低限動作させる環境構築手順を説明してきました。

上記手順の中で何度かOSを再起動する機会があったと思いますが、その度に一々ApacheやMySQLを起動し直さなくてはならない事にイラついた方もいると思います。
ここではそれらがOS起動時に自動起動するための設定手順を説明します。

その前にまず、起動しているかどうかの確認方法

以下の「プロセス名」を置き換えてください。
Apacheは「httpd」、MySQLなら「mysqld」です。
$ ps aux | grep プロセス名

chkconfigコマンド

Red Hat系Linuxの場合、chkconfigという便利なコマンドがありますので、それを利用します。
※よってUbuntuなどDebian系の場合は他をあたってください。
ちなみにrootユーザーで実行します。
起動スクリプトが登録済みかどうかの確認
下記のように「on」「off」と表示されれば既に登録済みです。
# chkconfig --list httpd
httpd           0:off 1:off 2:off 3:off 4:off 5:off 6:off

# chkconfig --list mysqld
mysqld          0:off 1:off 2:off 3:off 4:off 5:off 6:off
未登録だった場合
下記のように「--add」オプションを指定して追加してください。
# chkconfig --add httpd
# chkconfig --add mysqld
自動起動設定ON
以下コマンドを実行するだけです。
# chkconfig httpd on
# chkconfig mysqld on
「chkconfig --list …」で再度確認してみてください。2~5の値が「on」に変更されていればOKです。

関連エントリ



2011年8月7日日曜日

LAMP of CakePHP on VMware:構築手順メモ外伝 ~CentOS 6.0環境構築

ごぶサタデー…のつもりだったが、後述のインストール作業の見通しが甘くて日付を跨いでしまった。
ところで更新が滞ると記事コメント頂けるという法則がこの宇宙には存在しているようです。

技術メモ・ネタが結構溜まってきているので(えと、レベルは高くないです)、いい加減そろそろ消化していかないとなと思って臨んだサタデー、CentOS 6.0が先月リリースされていた事を知りました。
うーん、情報収集は怠っていなかったつもりだけどな…このニュース、認知度ありました?

まあ何はともあれ、せっかくなんでVMware Player上に仮想環境構築です。
まずは以前に自分で書いた構築手順(簡易インストール)を踏んでみました。若干の手順の差異はあれど、OSの日本語化設定まではすんなり済みましたが、日本語入力メソッド(前述の記事における『SCIM+Anthy』)のインストールで躓いてしまい、日本語の入力ができない状態で通行止めに…

なので今回は簡易インストールではなく、ISOイメージファイルからブートすることでインストールしました。その手順をここに記します。
ちなみに2011年8月7日時点で、当記事の手順でインストールされるAMPのバージョンは以下の通り。PHP、5.3だー!
  • A:2.2.15
  • M:5.1.52
  • P:5.3.2

ISOイメージのダウンロード

わざわざ書くことでもないですが。
以下ページに日本のミラーサイトへのリンクが記載されているので、お好みのサイトからダウンロードしてください。ちなみにISOイメージは「6.0/isos」ディレクトリにあります。

VMware Player : 空の仮想マシンを作成

VMware Playerを起動し、ホーム画面の「新規仮想マシンの作成」を選択。
「後でOSをインストール」を選択し、次画面で「Linux」「CentOS」を選択し、後は簡易インストールと同じ流れ。
よく分からなければ、例によって画像付きで解説してくださっている以下ブログを参照してください。
尚、今回は空仮想マシン作成なので、この時点でのCentOSインストールは当然開始されません。

VMware Player : CentOSインストール

作成した空仮想マシンを選択して
「仮想マシン設定の編集」→「ハードウェア」→「CD/DVD(IDE)」と選択していき、
「接続」ペインの「ISOイメージファイルを使用する」欄に、ダウンロードしたISOイメージのパスを入力。
この状態で「仮想マシンの再生」を行います。

後は、画像付きで解説してくださっている以下ブログを参照してください。
僕はネットワーク設定まで全く同じ手順を踏ませていただきました。
ちなみに上記記事の(1)と(2)の間に、もしかしたらディスクチェックを行うかどうかの画面が表示されるかもしれません。手っ取り早く進めたければスキップしちゃってください。

VMware Toolsを自分でインストール

今回は簡易インストールではない手順をとったので、VMware Tools(※1)は自分でインストールする必要があります。

まずは仮想OSにログインした状態で、VMwareウィンドウ下部の「ツールのインストール」を押下。

インストーラのアーカイブが保存された仮想CDドライブがマウントされます。

次にターミナルを起動し、mountコマンドでアーカイブのパスを確認。
$ mount
…
/dev/sr0 on /media/VMWare Tools …

僕の場合は上記のパスでした。
続いてアーカイブを展開し、rootユーザーになってからインストールスクリプトを実行します。
$ tar xvzf /media/VMware\ Tools/VMwareTools-8.4.6-385535.tar.gz
$ cd vmware-tools-distrib
$ su
# ./vmware-install.pl

インストールスクリプトでは、ディレクトリなどいくつか設定を問われますが、全て何も入力せずEnter(その場合[]内の値が使用される)。

完了したら一旦シャットダウンし、仮想マシン設定の「CD/DVD(IDE)」の設定を元に(「物理ドライブを使用する(自動検出)」)戻し、再度起動してみます。
ゲスト・ホストOS間でクリップボードの共有、マウスカーソルのシームレスな行き来、VMware Playerのウィンドウ最大化した際にゲストOSの描画エリアも最大化…などが実現できていればOKです。

あと、せっかくなんでこのタイミングでパッケージを更新しておくといいかもしれません。
「システム」→「管理」→「ソフトウェア更新」で更新できます。ちなみに僕の場合、見つかった更新の数は約170個で、更新完了するまで結構時間かかりました。

Apache インストール

恐らく既にインストールされていると思います。
もしインストールされていなければ、以下コマンドでインストール。
# yum install httpd

そして起動。
# /etc/init.d/httpd start
ファイアウォール設定
「システム」→「管理」→「ファイアーウォール」
「信頼したサービス」で表示されるリスト内の「WWW(HTTP)」にチェックを入れ、ツールバーの「適用」押下。
※恐らく「SSH」はデフォルトでチェックが入っていると思いますが、チェックされてなければ入れといてください。

MySQL インストール

# yum install mysql-server

そして起動。
# /etc/init.d/mysqld start

DBやユーザーの作成に関しては、今回も割愛。

PHP インストール

MySQL接続用のパッケージも一緒にインストール。
# yum install php php-mysql

インストール済んだらApache再起動。
# /etc/init.d/httpd restart

ApacheやPHPとかの動作確認やらCakePHPの導入やら

以前に僕が書いた以下記事を参照してください。
記事の環境はバージョン5.5ですが、やることは変わりません。

その他の関連エントリ


※1
ゲスト・ホストOS間でクリップボードの共有やマウスカーソルのシームレスな行き来を実現したり、VMware Playerのウィンドウ最大化した際にゲストOSの描画エリアも最大化したりetcetcと、痒いところに手を届かせてくれるツール。