php5.5+php-fpm+nginxで設定
nginx
去年辺りから出始めてきていたWebサーバ
なんかよくわからないけどApacheより軽量のWebサーバ最近はこちらのほうが主流になりつつあるのでいろいろと手を付けてみる
nginx設定
リポジトリ登録
# nginxをインストール wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm
リポジトリファイル内容
vim /etc/yum.repos.d/nginx.repo ---- [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1 ----
インストール
yum install -y nginx
設定ファイルを確認
vim /etc/nginx/nginx.conf ---- user nginx; worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip設定; gzip on; gzip_types text/plain text/xml text/css text/javascript image/x-icon application/xml application/rss+xml application/json application/x-javascript; gzip_disable "MSIE [1-6]\."; gzip_disable "Mozilla/4"; # トークン他 server_tokens off; ignore_invalid_headers on; # 設定ファイル読み込み include /etc/nginx/conf.d/*.conf; } ----
自動起動、起動
service nginx start chkconfig nginx on
phpenvでphp5.5をソースインストール
phpenvとphp-buildをインストール
cd curl https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | sh echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(phpenv init -)"' >> ~/.bash_profile source ~/.bash_profile which phpenv mkdir -p ~/.phpenv/plugins cd ~/.phpenv/plugins git clone git://github.com/CHH/php-build.git chmod 755 php-build/bin/rbenv-install phpenv install -------------------------------------- usage: phpenv install VERSION Available versions: 5.2.17 5.3.10 5.3.11 いろいろ 5.5.5 5.5snapshot master --------------------------------------
yumで関連モジュールをインストール
yum --enablerepo=epel install re2c libmcrypt libmcrypt-devel yum install libxml2-devel bison bison-devel openssl-devel curl-devel libjpeg-devel libpng-devel libmcrypt-devel readline-devel libtidy-devel libxslt-devel httpd-devel enchant-devel libXpm libXpm-devel freetype-devel t1lib t1lib-devel gmp-devel libc-client-devel libicu-devel oniguruma-devel net-snmp net-snmp-devel bzip2-devel
コンパイル用の設定ファイルを編集
vim /root/.phpenv/plugins/php-build/share/php-build/definitions/5.5.5 ---- configure_option "--with-apxs2=/usr/sbin/apxs --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-fileinfo --enable-hash --enable-json --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-iconv --enable-ftp --with-gettext --enable-mbstring --with-onig=/usr --with-pcre-regex --with-mysql=mysqlnd --with-mysql-sock=/tmp/mysql.sock --enable-phar --enable-shmop --enable-sockets --enable-simplexml --enable-dom --with-libxml-dir=/usr --enable-tokenizer --with-zlib --with-kerberos=/usr --with-openssl=/usr --enable-soap --enable-zip --with-mhash=yes --without-mm --with-enchant=/usr --with-zlib-dir=/usr --with-gd --enable-gd-native-ttf --with-gmp=/usr --with-jpeg-dir=/usr --with-xpm-dir=/usr/X11R6 --with-png-dir=/usr --with-freetype-dir=/usr --with-imap=/usr --with-imap-ssl --enable-intl --with-t1lib=/usr --with-mcrypt=/usr --with-snmp=/usr" install_package "http://www.php.net/distributions/php-5.5.5.tar.bz2" install_pyrus install_xdebug "2.2.3" enable_builtin_opcache ----
コンパイル
phpenv install 5.5.5
モジュールを退避して設定
cp /etc/httpd/modules/libphp5.so /root/.phpenv/versions/5.5.5/libphp5.so phpenv rehash phpenv global 5.5.5
php-fpm
php-fpm設定
mkdir /var/log/php-fpm chown -R nobody:nobody /var/log/php-fpm cp -f /tmp/php-build/source/5.5.5/sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf
php-fpmの起動用スクリプトをコピー
cp -f /tmp/php-build/source/5.5.5/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod 755 /etc/init.d/php-fpm chkconfig php-fpm on
/etc/init.d/php-fpmを編集してconfファイルの場所を変更する
vim /etc/init.d/php-fpm ---- php_fpm_CONF=${prefix}/etc/php-fpm.conf ↓ php_fpm_CONF=/usr/local/etc/php-fpm.conf ----
php-fpm.confを編集
vim /usr/local/etc/php-fpm.conf ---- [global] pid = run/php-fpm.pid [www] user = nginx group = nginx listen = 127.0.0.1:9000 listen.owner = nginx listen.group = nginx listen.mode = 0666 pm = dynamic pm.max_children = 8 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 4 pm.max_requests = 500 ----
起動
service php-fpm start chkconfig php-fpm on
ログどドキュメントのディレクトリを作成
mkdir -p /var/log/nginx/dev1.example.com mkdir -p /var/www/html/dev1.example.com/public
バーチャルホスト用のnginxファイル作成
vim /etc/nginx/conf.d/dev1.example.com.conf ---- server { # ポート、サーバネーム listen 80; server_name dev1.example.com; # アクセスログ、エラーログ access_log /var/log/nginx/dev1.example.com/access.log main; error_log /var/log/nginx/dev1.example.com/error.log; # ドキュメントルート root /var/www/html/dev1.example.com/public; # indexファイル index index.php index.html index.htm; # phpの処理 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # アクセスを制限する location ~ (\.htaccess|\.git|\.svn) { deny all; } # 文字コード charset utf-8; } ----
再起動
service nginx restart service php-fpm restart
確認
テストファイル
echo "<?php echo 'test'; phpinfo();" > /var/www/html/dev1.example.com/public/index.php
画面
まとめ
とりあえず、体感的には全然早くなった感はない…というか全然わからんけど
apacheはある程度慣れているのでこれからはこれが主流になりつつあると思われる。
phpは動くのであとはperlをmojoliciousで動作するか検証してなんかのVPSを用意してセットアップしてみる。
- 作者: 近藤宇智朗,生井智司,Dr.Kein,tokuhirom,森田創,中島聡,堤智代,A-Listers,はまちや2,竹原,川添貴生,久保達彦,道井俊介,飯田祐基,中村知成,規世やよい,後藤秀宣,天野祐介,奥野幹也,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2012/12/22
- メディア: 大型本
- 購入: 11人 クリック: 94回
- この商品を含むブログ (10件) を見る