atijust's blog

技術的なこととか。

さくらVPS(CentOS6)にNginx+PHP5.5+MySQL5.6の環境を構築する(インストール編)

さくらVPS(CentOS6)にNginx+PHP5.5+MySQL5.6の環境を構築してLaravelを動かすまでの記録を備忘録として残しておきます。

Nginxのインストール

公式サイトのインストール方法の説明に従って、公式のyumリポジトリからStable版をインストールします。

まずはCentOS6用のyumリポジトリのセットアップ。 レポジトリの設定ファイルとPGPキーがインストールされます。

# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

次にyumでnginxのパッケージをインストール。

# yum install nginx

バージョンとビルドのオプションを確認します。

# nginx -V
nginx version: nginx/1.4.4
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

現時点での最新Stable版が入りました。ひと通りのモジュールは有効になっているみたいですね。設定ファイルは/etc/nginx/nginx.confのようです。あと、/etc/logrotate.d/nginxにlogrotateの設定が追加されて、/var/log/nginx/*以下をdailyでローテートするようにしている模様。

MySQL5.6のインストール

公式サイトの説明に従ってビルド済みのバイナリをインストールします。

MySQL公式のyumリポジトリからインストールする場合は、すでにインストールされているディストリ標準のmysql関連のパッケージ(mysql-libsとか)を削除する必要があるのですが、それらに依存しているパッケージの扱いをどうすればいいのかわからなかったので、今回は公式バイナリからインストールすることにしました。mysql-community-libs-compatという5.1互換のライブラリなんかもあるみたいなので、なんとかなりそうではあるのですが、まぁ、無難に行くということで。

まずは、ダウンロードページからLinux - Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archiveを取ってきます。

# wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz

公式サイトにある通りにコマンドを実行。

# groupadd mysql
# useradd -r -g mysql mysql
# cd /usr/local
# tar zxvf ~/mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
# ln -s mysql-5.6.15-linux-glibc2.5-x86_64 mysql
# cd mysql
# chown -R mysql .
# chgrp -R mysql .
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data

ディストリの/etc/my.cnfでdatadirとか勝手に設定されててそのままじゃ立ち上がらないので、取り敢えず適当に置き換え。

# mv /etc/my.cnf /etc/my.cnf.bak
# cp my.cnf /etc/my.cnf

立ち上げます。

# bin/mysqld_safe --user=mysql &

mysql_secure_installationを実行。

# bin/mysql_secure_installation

起動時に自動的に立ち上がるようにする。

# cp support-files/mysql.server /etc/init.d/mysql
# chkconfig --add mysql
# chkconfig | grep mysql
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

PHP5.5のインストール

ソースからビルドします。

remiから入れたほうが楽かもしれないけど、PHPは自分でビルドしたい気分なのです。

現時点で最新版の5.5.7のソースをダウンロードして展開。

$ wget http://jp1.php.net/get/php-5.5.7.tar.bz2/from/this/mirror
$ tar xf php-5.5.7.tar.bz2

必要なパッケージをインストール。

# yum -y install libxml2-devel libmcrypt-devel libcurl-devel libicu-devel pcre-devel openssl-devel 

configureを実行します。 オプションは取り敢えずLaravelとSymfonyを動かすのに必要そう&自分が使いそうなのを最小限指定してます。 実際に使ってみて不足するようならそのとき追加すればいいかな、という方針。

$ cd php-5.5.7
$ ./configure --enable-fpm --with-openssl --with-curl --enable-intl --enable-mbstring --with-mcrypt --enable-opcache --with-pdo-mysql

ビルド&インストール。 3コアのインスタンスなのでmakeは3並列で。

$ make -j 3
# make install

php.iniをコピーします。

# cp php.ini-production /usr/local/lib/php.ini

php-fpmの設定ファイルを用意します。

# cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

pidとログのパスを/var以下に変更。ユーザとグループをnginxに。 pmとかはおいおいベンチ取ってチューニングする方向で。

/usr/local/etc/php-fpm.conf

pid = /var/run/php-fpm.pid
error_log = /var/log/php-fpm.log
user = nginx
group = nginx

PHP-FPM用のinit.dスクリプトを/etc/init.d/にコピーしてパーミッションを変更します。

# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# chmod 755 /etc/init.d/php-fpm

pidのパスだけ修正。

/etc/init.d/php-fpm

php_fpm_PID=/var/run/php-fpm.pid

chkconfigで登録。

# chkconfig --add php-fpm
# chkconfig | grep php-fpm
php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off

init.dスクリプトについてはマニュアルのFPMの項目に付いたコメントを参考にしました。

インストールとしてはこんなところです。

仕事では最近はインフラ担当が全部用意してくれるので、自分でサーバーを弄ることもないのですが、久しぶりにやってみるとやっぱ大変ですね。。

設定編(そのうち公開)につづく。