CentOS 6.8に特定のバージョンでLAMPサーバーを作る

Windows10上でVirtualBoxにインストールしたCentOS 6.8にLAMPサーバーを作るんだけど、特定のバージョンをインストールしようと思ったら結構試行錯誤が必要だったので書き残しておこうと思う。作る環境は以下の通りで、いずれも標準のリポジトリでは入らないバージョンのもの。VirtualBoxにCentOSのインストールまでは終わっている前提。それについてはこちらの記事で。以下の手順はVirtualBoxの仮想マシンを起動してTeraTermなのどターミナルからrootでログインしている状態とする。
インストールするバージョン
  • Apache 2.4系
  • MySQL 5.6系
  • PHP 5.6系
MySQL 5.6系をインストールする
MySQL Communityからインストールする。インストールしたらバージョン確認を行っておく。
# rpm -Uvh "http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm"
# yum install mysql-community-server mysql-community-devel
# mysql -V
設定ファイルを編集する
[mysqld]セクションに以下の設定を追加する。
# vi /etc/my.cnf[mysqld]
character-set-server=utf8
[mysqld_safe]セクションの以下の行を変更する。そのままだとパーミッションの関係でログファイルが出力できないエラーでMySQLが起動しないので変更しておく。
# vi /etc/my.cnf[mysqld_safe]
log-error=/var/log/mysqld.log
↓
log-error=/var/log/mysql/mysqld.log
ログディレクトリを作成してMySQLが書き込めるように所有者をmysqlに設定する。
# mkdir /var/log/mysql
# chown -R mysql:mysql /var/log/mysql
MySQLの起動確認と、CentOS起動時に自動起動するように設定する。
# service mysqld start
# chkconfig mysqld on
MySQLに外部から接続する時
例えばphpMyAdminじゃなくWindows版のMySQLクライアントなどを使いたいときは、外部接続用のユーザーが必要なので作っておく。MySQLにrootでログインして以下のコマンド実行する。以下は、どこからでも全てのデータベースに接続できるユーザーの例。もちろん開発用の環境だからなので、本番環境でこんなことしちゃだめ。
# mysql -u root -p

mysql> grant all privileges on *.* to myuser@"%" identified by 'password' with grant option;
mysql> quit
MySQLにログインできない時
mysql -u rootでもmysql -u root -pでも、ログインしようとしたら以下のようなエラーになった時は、一旦ユーザーテーブルを削除して新しく作り直す必要がある。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
ターミナル1での操作
MySQLを停止させ、セーフモード的なサービスとして起動する。ターミナル1はその状態で操作しないで置いておく。
# service mysqld stop
# mysqld_safe --skip-grant-tables &
ターミナル2での操作
新しくターミナルを開いて(TeraTermなどの画面を2個開くという意味)MySQLにログインして、MySQLの操作を行う。パスワードの部分はお好みで設定する。ユーザーテーブルの再作成が終わったら、ターミナル2は閉じる。
# mysql -u root

mysql> use mysql;
mysql> truncate table user;
mysql> flush privileges;
mysql> grant all privileges on *.* to root@localhost identified by 'password' with grant option;
mysql> flush privileges;
mysql> quit;

# exit
ターミナル1での操作
ターミナル1に戻ってMySQLのサービスはCtrl+Cで終了させて、通常のサービスとしてMySQLを起動させて、MySQLにログインできるかどうか確認する。
# service mysqld start
# mysql -u root -p
Apache 2.4系をインストールする
リポジトリを追加してFedoraPeopleからダウンロードする。インストールしたらバージョンの確認を行っておく。(インストールされているパスが何とも・・・。)
# cd /etc/yum.repos.d
# curl -O https://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo
# yum install httpd24
# /opt/rh/httpd24/root/usr/sbin/apachectl -V
シンボリックリンクを作成する
そのままだと階層が深くて、通常のApacheとは全然違うディレクトリ構成なので使いにくい。必須ではないけどシンボリックリンクを作成しておくのが使いやすいと思う。
# ln -s /opt/rh/httpd24/root/etc/httpd /etc/httpd
# mkdir /var/www
# ln -s /opt/rh/httpd24/root/var/www/html /var/www/html
# ln -s /opt/rh/httpd24/root/var/log/httpd /var/log/httpd
Apacheの起動確認と、CentOS起動時に自動起動するように設定しておく。
# service httpd24-httpd start
# chkconfig httpd24-httpd on
PHP 5.6系をインストールする
Apache 2.4系でPHPを動かすにはFastCGI経由で動作させる必要があるとのこと。下のphp-fpmと言うのがFPM(FastCGI Process Manager)のことでプロセスをメモリに保持するので要求の度に生成と廃棄を繰り返すことがなくなり動作速度の向上やサーバーの負荷が低下するんだとか。なので以前のphpはインストールしない。yum install phpとやってしまうと古いphpだけじゃなく使いもしないのにhttpd(2.2系)までおまけでインストールされるので注意。EPELとREMIのリポジトリを追加してREMIからダウンロードする。インストールしたらバージョン確認を行っておく。
# yum install epel-release
# rpm -Uvh "http://rpms.famillecollet.com/enterprise/remi-release-6.rpm"
# yum install --enablerepo=remi-php56 php-fpm php-mbstring php-pdo php-intl php-mysqlnd
# php-fpm -v
設定ファイルを編集する
言語とタイムゾーンを設定する。以下の行を探して変更する。
vi /etc/php.inimbstring.language = Japanese
date.timezone = Asia/Tokyo
PHPを実行するようにハンドラーを設定する。設定ファイルを新規作成して以下の行を追加する。(php.confではなくphp-fpm.confなので注意)
vi /etc/httpd/conf.d/php-fpm.confProxyPassMatch ^(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
PHPの起動確認と、CentOS起動時に自動起動するように設定しておく。
# service php-fpm start
# chkconfig php-fpm on
    この記事で書かれている製品やソフトについて
  • Windows10 Pro 64ビット
  • VirtualBox 5.1.10 r112026(Qt5.6.2)
  • CentOS 6.8 minimal 64ビット