follow us in feedly

さくらVPSにnginx + WordPressの環境を構築する(4) – nginxのインストール

さくらVPSにnginx (エンジンエックス)をインストールします。
リバースプロキシサーバとWebサーバは、ともにnginxを使って構築します。
nginxはPHPを実行する機能がないので、FastCGIサーバとしてPHPを実行できるようにします。

下記サイトを参考にさせていただきました。nginx の詳細についても参考になります。
さくらVPSとnginxリバースプロクシで最速WordPressブログを作る方法(ベンチマーク付き)| さくらたんどっとびーず

nginxをインストールする

nginxの最新版のCentOS用RPMをダウンロードして、リポジトリをインストールします。

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

nginxをインストールします。

# yum install nginx

PHP FasfCGIサーバの起動用スクリプトを作成する

FastCGIサーバとしてPHPを実行できるようにするスクリプトを作成します。

#!/bin/sh
#
# php-fastcgi   Use PHP as a FastCGI process via nginx.
#
# chkconfig:    - 80 20
# description:  Use PHP as a FastCGI process via nginx.
# processname:  php-fastcgi
# pidfile:      /var/run/php-fastcgi.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

PHPFCGI="/usr/bin/php-cgi"
FCGIPORT="9000"
FCGIADDR="127.0.0.1"
USER=nginx
GROUP=nginx
PIDFILE=/var/run/php-fastcgi.pid
PHP_FCGI_CHILDREN=5

start() {
  echo -n $"Starting ${PHPFCGI}: "
  daemon /usr/bin/spawn-fcgi -a ${FCGIADDR} -p ${FCGIPORT} -u ${USER} -g ${GROUP} -f ${PHPFCGI} -P ${PIDFILE} -C ${PHP_FCGI_CHILDREN} || exit 1
  echo
}

stop() {
  echo -n $"Stopping ${PHPFCGI}: "
  killproc -p ${PIDFILE} -d 60 ${PHPFCGI} || exit 1
  echo
}

restart() {
  stop
  start
}
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    restart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart}"
    exit 2
esac

作成した起動用スクリプトを/etc/init.dに置きます。

# mv php-fastcgi /etc/init.d
# chmod 755 /etc/init.d/php-fastcgi

PIDファイル用のディレクトリを作成して、PHP FastCGIサーバの実行ユーザ(nginx)が書き込めるようにします。

# mkdir /var/run/nginx
# chown nginx:nginx /var/run/nginx

php-fastcgiスクリプトを起動します。

# /etc/init.d/php-fastcgi start

nginx.confを修正する

/etc/nginx/nginx.confにリバースプロキシ、バックエンドサーバ、PHP FastCGIサーバの設定を追加します。
下記設定がされている箇所は、各サーバ環境に応じて設定を変更してください。

  • サーバ IP アドレス: 192.0.2.1
  • ホスト名: example.com
  • HTML ドキュメントルート: /var/www/html
  • リバースプロキシのポート: 80
  • バックエンドサーバのポート: 8080
  • PHP FastCGI サーバのポート: 9000

user              nginx;
worker_processes  2;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
  worker_connections  1024;
}

 {
  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        off;
  tcp_nopush      off;
  keepalive_timeout   1;

  gzip            on;
  gzip_vary       off;
  gzip_types
    text/plain
    text/xml
    text/css
    application/xml
    application/xhtml+xml
    application/rss+xml
    application/atom+xml
    application/javascript
    application/x-javascript
    application/x-d-php;
  gzip_disable    "MSIE [1-6].";
  gzip_disable    "Mozilla/4";

  proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=czone:4m max_size=50m inactive=120m;
  proxy_temp_path   /var/tmp/nginx;
  proxy_cache_key   "$scheme://$host$request_uri";
  proxy_set_header  Host               $host;
  proxy_set_header  X-Real-IP          $remote_addr;
  proxy_set_header  X-Forwarded-Host   $host;
  proxy_set_header  X-Forwarded-Server $host;
  proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;

  upstream backend {
    ip_hash;
    server 127.0.0.1:8080;
  }

  server {
    listen      80;
    server_name example.com;

    location / {
      set $do_not_cache 0;
      proxy_no_cache      $do_not_cache;
      proxy_cache_bypass  $do_not_cache;
      proxy_cache czone;
      proxy_cache_key     "scheme://$host$request_uri$is_args$args$mobile";
      proxy_cache_valid   200 301 302 10m;
      proxy_cache_valid   404 5m;
      proxy_cache_use_stale   error timeout invalid_header updating http_500 http_502 http_503 http_504;
      proxy_pass          http://backend;
      proxy_redirect      http://example.com:8080/ /;
    }

    location ~ /purge(/.*) {
      allow   127.0.0.1;
      allow   192.0.2.1;
      deny    all;
      proxy_cache_purge czone "$scheme://$host$1$is_args$args$mobile";
    }
  }

  server {
    listen      8080;
    server_name example.com;

    location / {
      root    /var/www/html;
      index   index.php index.html index.htm;
    }

    error_page  404  /404.html;
    location = /404.html {
      root   /usr/share/nginx/html;
    }

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }

    location ~ .php$ {
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
      include        fastcgi_params;
    }

    location ~ /.ht {
      deny  all;
    }
  }
  include /etc/nginx/conf.d/*.conf;
}

ドキュメントルートのオーナーをnginxにします。

# chmod nginx:nginx /var/www/html

nginxを起動します。

# /etc/init.c/nginx start

ドキュメントルートに空のファイルを置いて、ブラウザでアクセスします。
空のファイルなので真っ白のページが表示されると思います。

# cp /dev/null /var/www/html/index.html

phpinfoを表示するファイルを作成して、ブラウザでアクセスします。
phpinfoのページが表示されればOKです。問題なければindex.phpとphpinfo.phpは削除します。

# echo '<?php phpinfo(); ?>' > /var/www/html/phpinfo.php

サーバ再起動時にnginxとPHP FastCGIが起動されるように設定します。

# /sbin/chkconfig --level 345 nginx on
# /sbin/chkconfig --level 345 php-fastcgi on

nginxとPHP FastCGIのインストールは完了です。
最後にWordPress をインストールすればサイト環境ができあがります。

タグ:

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください