さくらVPSに申し込んだよ。nginx / wordpressセットアップまとめ


この記事の所要時間: 2224



さくらインターネットのVPSに、申し込みをしてやっと完了メールが来ました。

4月16日の予定だったのですが、申し込み殺到みたいで
完了連絡が来たのは、4月18日でした。
まあ、申し込んだのが4月12日だったので、1週間程度かなと。

ちなみに、今だと在庫があるみたいなので
すぐに、利用開始じゃないかなぁと。

ここから、申し込みできますよ。



さっそく、サーバが来たのでセットアップ作業をしました。
今回は、apache+PHP+MySQLだと面白くないので
nginx+PHP+MySQLの環境に、チャレンジしました!

セットアップしたメモも、残しておきます。
何かの役に立つかな^^

セットアップメモ

環境確認


cat /etc/redhat-release
CentOS release 6.2 (Final)


CentOSの6.2が、セットアップされています。

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
rpm -Uvh epel-release-6-5.noarch.rpm



EPEL入ってないと思ったら、実は最初から入ってたw
で、remiも入れておきます。

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm



MySQLインストール

ということで、MySQLをインストール

yum install mysql mysql-server



yumコマンドで一発インストールです!便利♪

自動起動も設定しておきます。
リブートしたら起動しないと危険なので^^

chkconfig mysqld on
chkconfig --list mysqld



MySQLを、起動します。

/etc/init.d/mysqld start



PHPインストール

次に、PHPのインストール

yum --enablerepo=remi-test install php php-devel php-mysql php-mbstring php-pear php-mysql


これも、yumコマンドで簡単にインストール!
インストーされたか確認

php -v



無事に、インストールされています。

PHPアクセラレーター設定

つぎは、eAccellaretorもインストールしておきます。

wget http://downloads.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.6.1.zip
unzip eaccelerator-0.9.6.1.zip



ダウンロードして解凍したら、ビルドしてインストール

cd eaccelerator-0.9.6.1
phpize
 
./configure --enable-eaccelerator=shared
make



エラーが出ました><
う〜ん、PHP5.4だと、eAccellaretor 動かないかも。

ということで、APCにしちゃいます。

make clean


で、とりあえず、makeを削除しておいて。

cd


ディレクトリを戻して

svn co http://svn.php.net/repository/pecl/apc/trunk/ apc-trunk
cd apc-trunk
/usr/local/php/bin/phpize
./configure --enable-apc --enable-apc-mmap --with-apxs --with-php-config=/usr/bin/php-config
make



あれ、エラーがでる><
色々調べると、pcre-develを入れないとダメみたい。

ということで、pcre-develも、インストール

yum install pcre-devel



pcre-develを入れたので再チャレンジ!

./configure --enable-apc --enable-apc-mmap --with-apxs --with-php-config=/usr/bin/php-config
make



通った!

make test
make install



おっ、行けそう! php.iniを変更します。

vi /etc/php.ini



extension="apc.so"

を追加します。

apcが動いているか確認してみます。
apacheを一時的に動かしてみて、phpinfoで確認してみます。

/etc/init.d/httpd restart
vi /var/www/phpinfo.php



<?php phpinfo() ?>



phpinfo用に、この一行だけ書いて
ブラウザから見てみると。。。

何とか動いてそうです^^

apacheは必要ないので、止めておきます。

/etc/init.d/httpd stop



nginxインストール


今回は、apacheじゃなくて、nginxで動かしたいので
nginxをセットアップ!

まず、ビルドに必要なパッケージを入れます。

yum --enablerepo=epel install make automake gcc gcc-c++ rpm-build spawn-fcgi \
pcre-devel zlib-devel openssl-devel libxslt-devel GeoIP-devel gd-devel



で、nginxをインストールします。
キャッシュを効かせないんだったら、パッケージでも良かったんだけど
実は、ソースでやらないと、キャッシュが効かないので、1回入れ直しになりました><

nginxパッケージ インストール方法


(キャッシュ効かないけど一応残しておきます。)

パッケージ

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



wget http://dl.fedoraproject.org/pub/epel/6/SRPMS/nginx-1.0.14-1.el6.src.rpm
sudo rpm -ivh nginx-1.0.14-1.el6.src.rpm


ソースを落として、インストール

ディレクトリを作成

mkdir /usr/src/redhat
mkdir /usr/src/redhat/SOURCES
mkdir /usr/src/redhat/SPECS
mkdir /usr/src/redhat/RPM



nginxをインストール

rpm -ivh nginx-1.0.14-1.el6.src.rpm



警告が出るけど、ユーザーがないだけだから大丈夫。

警告: グループ mockbuild は存在しません - root を使用します
警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します



最新のnginxソースコードをダウンロード

cd rpmbuild/SOURCES
wget http://nginx.org/download/nginx-1.1.9.tar.gz



nginx.spec の設定

cd ../SPECS
cp nginx.spec nginx.spec.org
vi nginx.spec



nginx.specのVersion情報を書き換え

Name:              nginx
#Version:           1.0.14
Version:           1.1.9
Release:           1%{?dist}



言語と文字コードも追加しておきます。

# variable.
export LANG='ja_JP.UTF-8'
export DESTDIR=%{buildroot}




rpm作成

rpmbuild -bb nginx.spec



ソースコードのダウンロードをします。

cd /usr/src/redhat/SOURCES
wget http://nginx.org/download/nginx-1.1.9.tar.gz
tar xvzf nginx-1.1.9.tar.gz




レポジトリファイルを作成します。

vi /etc/yum.repos.d/nginx.repo



[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1



この内容を書き込みます。

リポジトリ動作確認をしてみます。

yum list nginx



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

yum install nginx



PHP FastCGI設定


PHPが、nginxで動かないので
nginx と PHP FastCGI の設定を行います。

素敵なことに、FastCGIファイルが用意されているので
そこから、ダウンロード♪

wget http://sakuratan.biz/nginx/php-fastcgi
mv php-fastcgi /etc/init.d
chmod 755 /etc/init.d/php-fastcgi



pidファイル用のディレクトリ作成

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



php-fastcgiを起動してみます。

/etc/init.d/php-fastcgi start



Cache Purge plugin をインストールします。

wget http://labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz



nginx.conf を設定

サイトのサンプルを利用しました!

user              nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;
 
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;
 
    keepalive_timeout  5;
 
    gzip  on;
    gzip_disable "MSIE [1-6]\.";
 
    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 / {
            if ($http_user_agent ~* '(DoCoMo|J-PHONE|Vodafone|MOT-|UP\.Browser|DDIPOCKET|ASTEL|PDXGW|Palmscape|Xiino|sharp pda browser|Windows CE|L-mode|WILLCOM|SoftBank|Semulator|Vemulator|J-EMULATOR|emobile|mixi-mobile-converter)') {
                set $mobile 1;
            }
            if ($http_user_agent ~* '(iPhone|iPod|Opera Mini|Android.*Mobile|NetFront|PSP|BlackBerry)') {
                set $mobile 2;
            }
            if ($http_cookie ~* "comment_author_[^=]*=([^%]+)%7C|wordpress_logged_in_[^=]*=([^%]+)%7C") {
                set $do_not_cache 1;
            }
            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.html index.htm index.php;
        }
 
        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;
        }
    }
 
    # Load config files from the /etc/nginx/conf.d directory
    include /etc/nginx/conf.d/*.conf;
}



下記の設定箇所を、自分の環境用に書き変えて
nginx.confを書き換えます。

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



書き換える前に、一応バックアップを取っておいて。

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.org



nginx.confを、書き換えます。

vi /etc/nginx/nginx.conf



nginxを起動!

/etc/init.d/nginx start



結局、キャッシュが効きません><
よく調べてみると、nginxとngx_cache_purgeを設定して
再コンパイルしないと、いけないらしい

ということで、nginxとキャッシュ用のプラグインを入れ直します。

nginx と ngx_cache_purge設定


perl-ExtUtils-Embedインストール

後で気がついたんですが、perl-ExtUtils-Embedはコンパイルに必要なので
事前に入れておきます。

cd
yum install perl-ExtUtils-Embed



yumで入れられるから、楽ちんです。

ディレクトリを移動して、モジュールをダウンロード

cd
wget http://dl.fedoraproject.org/pub/epel/6/SRPMS/nginx-1.0.14-1.el6.src.rpm
sudo rpm -ivh nginx-1.0.14-1.el6.src.rpm


展開すると、rpmbuild ってディレクトリが出来て
ソースが配置されます。

で、今回は、nginx と ngx_cache_purgeを最新版にしたいので
それぞれの、最新モジュールを準備しておきます。

cd rpmbuild/SOURCES
wget http://nginx.org/download/nginx-1.1.9.tar.gz
wget http://labs.frickle.com/files/ngx_cache_purge-1.5.tar.gz



nginx.spec ファイルを書き換えます。

cd ../SPECS
cp nginx.spec nginx.spec.org
vi nginx.spec



nginx.specのVersion情報を書き換え

Name:              nginx
#Version:           1.0.14
Version:           1.1.9
Release:           1%{?dist}



言語と文字コードも追加しておきます。

# variable.
export LANG='ja_JP.UTF-8'
export DESTDIR=%{buildroot}



で、コンパイルし直し

cd ../SPECS/
sudo rpmbuild -bb nginx.spec



伸張ファイルの検査中: /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/nginx-1.1.9-1.el6.x86_64
書き込み完了: /root/rpmbuild/RPMS/x86_64/nginx-1.1.9-1.el6.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/nginx-debuginfo-1.1.9-1.el6.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.XQYgk1
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd nginx-1.1.9
+ rm -rf /root/rpmbuild/BUILDROOT/nginx-1.1.9-1.el6.x86_64
+ exit 0



無事コンパイル出来ました!

rpmでインストールすれば、OK。

sudo rpm -Uvh nginx-1.1.9-1.el6.x86_64.rpm



前に失敗したけど、nginx.confは、そのまま使えるので
これで、nginxは、無事に動かせました!

nginxを起動!

/etc/init.d/nginx start



ちなみに、セッションディレクトリに権限も設定しておく必要があります。

セッションディレクトリへ権限


chown -R nginx.nginx /var/lib/php/session/
chmod 777 /var/lib/php/session/



ということで、色々苦労しましたが、
何とか、nginxが動きました。

前のwordpressの環境の引っ越しが残ってますが
とりあえず、今回はここまで。
次回はWordpressの引っ越し編の予定です^^

さくらのVPS便利ですね〜♪



参考サイト

CentOSでnginxリバースプロクシとWordpressのブログを立ち上げる手順
http://d.hatena.ne.jp/paraches/20120213

apache のかわりにnginxを使ってみる(1)-3 リバースプロキシのキャッシュ削除モジュール nginx cache purge を組み込む
http://sakura.off-soft.net/cen……stall.html

さくらVPSとnginxリバースプロクシで最速WordPressブログを作る方法(ベンチマーク付き) | さくらたんどっとびーず
http://snip-snap.posterous.com……xwordpress

WordPress on PHP5.4.0 RC4 + APC
http://dogmap.jp/2012/01/03/wo……4rc04-apc/

APCインストール参考
Installing APC from beta/alpha development onto centOS 5.4 64 bit dual core
http://palma-seo.com/content/i……5-4-64-bit

関連記事:

Trackbacks

  1. [...] 前回記事:さくらVPSに申し込んだよ。nginx / wordpressセットアップまとめ http://blog.bot.vc/2012/05/sakuravps/ まずは、データの移行です。 wordpressのデータの移行方法は [...]

  2. [...] 今回はさくらVPSに申し込んだよ。nginx / wordpressセットアップまとめの記事を参考に(コピペ)作業しました。 [...]

  3. [...] 今回はさくらVPSに申し込んだよ。nginx / wordpressセットアップまとめの記事を参考に(コピペ)作業しました。 [...]

  4. [...] 今回はさくらVPSに申し込んだよ。nginx / wordpressセットアップまとめの記事を参考に(コピペ)作業しました。 [...]