CentOS 5.6で最低限のWebアプリ開発環境を構築する

半ば個人的な手順書。少々怪しいかも。すべてCUIで行う場合を想定。

開発ツールのインストール

デフォルトではgccとか入らないので。

# yum groupinstall 'Development Tools' 'Development Libraries'

PHP5.3をインストール

デフォルトのPHPは5.1なので、5.3をインストール。ただし、php53-pearが無いのでpearはPHP5.1のをインストール後アップグレード。最初はメッセージが色々出るけど気にしない。(参考:http://d.hatena.ne.jp/Akkiesoft/20110411/1302488866

# yum remove php php-*
# yum install php53 php53-*
# yum install php-pear
# pear upgrade --force Archive_Tar
# pear upgrade --force Console_Getopt
# pear upgrade PEAR

"pear list" でバージョンの確認が出来る。

Installed packages, channel pear.php.net:
=========================================
Package          Version State
Archive_Tar      1.3.7   stable
Console_Getopt   1.3.1   stable
PEAR             1.9.2   stable
Structures_Graph 1.0.4   stable
XML_RPC          1.5.0   stable
XML_Util         1.2.1   stable

Xdebugのインストール

PHPデバッグツールであるXdebugをインストール。

# pecl install xdebug

ビルドが終わったら/etc/php.iniに以下の項目を追加する。

[zend]
zend_extension="/usr/lib/php/modules/xdebug.so"
xdebug.remote_enable=On
xdebug.remote_host=192.168.X.X

xdebug.remote_hostはリモートデバッグをする場合の接続元のIPアドレス
"system-config-securitylevel"ツールを使用してXdebugが使用するポート9000を開ける。

# system-config-securitylevel

Apacheの動作を確認

# chkconfig --list | grep httpd
# chkconfig httpd on
# /etc/init.d/httpd restart

PHPの動作を確認

関数phpinfoはプラグインの状態も表示してくれる。Xdebugが正しくインストールされればその情報も。

<?php
phpinfo();
?>

動作しない場合は、コマンドラインで実行してエラーメッセージを調べる。

# php /var/www/html/index.php

SELinux関連

SELinuxの管理ツールをインストール。SELinuxは有効にした方が無難かも。*1

# yum install setroubleshoot
# chkconfig setroubleshoot on
# /etc/init.d/setroubleshoot start

SELinuxの生ログは/var/log/audit/audit.log。「sealert -a /var/log/audit/audit.log」で詳細な内容をわかりやすく表示してくれる。
SELinux関連はこれらが参考になる。

一般ユーザーとsambaの設定

お約束の一般ユーザーの追加。SELinuxが有効なときにSambaのファイル共有を許可するにはsamba_enable_home_dirsの値を1にする。

# adduser a7m
# passwd a7m
# pdbedit -a a7m
# setsebool -P samba_enable_home_dirs=1 
# chkconfig --list | grep smb
# chkconfig smb on
# /etc/init.d/smb start

MySQL関連

MySQLのインストール

インストールされるバージョンは5.0。

# yum groupinstall 'MySQL Database'
初期設定

/etc/my.cnfを編集する。エンジンはInnoDBを使用し、デフォルトのエンコーディングUTF-8にする。

[mysqld]
default-character-set = utf8  ; ←追加
default-storage-engine=InnoDB ; ←追加
[mysql]
default-character-set = utf8  ; ←追加
セキュリティ関連

"system-config-securitylevel"ツールを使用してMySQLが使用するポート3306を開ける。

# system-config-securitylevel
# setsebool -P httpd_can_network_connect=1

httpd_can_network_connectを1にしないと、httpdが外部DB鯖と通信できない模様。

MySQLのデーモンの起動
# chkconfig --list | grep mysqld
# chkconfig mysqld on
# /etc/init.d/mysqld start
初期データベースの構築

スクリプトmysql_secure_installationを実行して、メッセージに従えばOK。

# mysql_secure_installation
リモートからrootのログインを許可する

セキュリティ的には良くないけど、WindowsからGUIでいろいろ出来るので。

# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'rootpassword';

パッケージのアップデート

最後にインストール済みのパッケージを更新する。

# yum check-update
# yum update

*1:本当は完全に無効化したかったのだけど、ポリシーを理解すればそんなに敷居が高くない。