さくら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の項目に付いたコメントを参考にしました。
インストールとしてはこんなところです。
仕事では最近はインフラ担当が全部用意してくれるので、自分でサーバーを弄ることもないのですが、久しぶりにやってみるとやっぱ大変ですね。。
設定編(そのうち公開)につづく。