Apache+mod_phpからNginx+php-fpmに移行する
サーバー負荷が上がってきたので、Apache+mod_phpなサーバーをNginx+php-fpmに乗り換えてみた
環境
Nginxインストール
下準備
yum -y install pcre pcre-devel
ngix用ユーザー作成
useradd -M -s /sbin/nologin nginx
ソース本体DLしてインストールする
cd /usr/local/src wget http://nginx.org/download/nginx-1.9.10.tar.gz tar xvzf nginx-1.9.10.tar.gz cd nginx-1.9.10 ./configure --user=nginx \ --group=nginx \ --prefix=/usr/local/nginx \ --sbin-path=/usr/sbin/nginx \ --with-http_stub_status_module make make install
Nginx初期設定
ログ格納場所
mkdir /var/log/nginx chown nginx:nginx /var/log/nginx
設定書き換え
vi /usr/local/nginx/conf/nginx.conf
色々調べてこんな感じに編集した(DocumentRootが/usr/local/wwwの例)
user nginx; worker_processes auto; worker_rlimit_nofile 100000; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; multi_accept on; use epoll; } http { include 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"'; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 10; client_header_timeout 10; client_body_timeout 10; reset_timedout_connection on; send_timeout 10; server_tokens off; gzip off; server { listen 80; server_name example.jp; root /usr/local/www; charset utf-8; access_log /var/log/nginx/access.log main; location / { index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/www$fastcgi_script_name; include fastcgi_params; } } }
php-fpmとして動かすための下準備
configureオプションに--enable-fpmを加えてPHPをconfigureし直す
前回インストールした際のconfigureオプションは、/usr/local/src/php-7.0.3/config.logファイルを見ればわかる
cd /usr/local/src/php-7.0.3 ./configure --with-pdo-mysql=/usr/local/mysql \ --enable-mbstring \ --without-gd \ --enable-fpm make make install
php-fpm設定
起動ファイルをコピーして使う
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod 755 /etc/init.d/php-fpm
起動ファイルのpidファイルの場所を変更
vi /etc/init.d/php-fpm
アンコメントする
php_fpm_PID=/var/run/php-fpm.pid
設定ファイルをコピー
cd /usr/local/etc cp php-fpm.conf.default php-fpm.conf cp php-fpm.d/www.conf.default php-fpm.d/www.conf
編集
vi /usr/local/etc/php-fpm.conf
アンコメント&変更した
pid = /var/run/php-fpm.pid error_log = /var/log/php-fpm.log include=/usr/local/etc/php-fpm.d/*.conf
編集
vi /usr/local/etc/php-fpm.d/www.conf
かきかえた
user = nginx group = nginx
Nginx&php-fpm起動
Apache動いてたら止める
/usr/local/apache2/bin/apachectl stop
nginx&php-fpm起動コマンド
nginx /etc/init.d/php-fpm start
nginx&php-fpm停止コマンド
nginx -s stop /etc/init.d/php-fpm stop