サーバー
このブログのサーバーをnginx+Apacheの環境に引っ越ししました。
以前書いたように、さくらインターネットの新しいVPSにデータを移しています。
どうせなら「Wordpressをnginxで動かそう」と色々いじってました。
が、Wordpressのパーマリンクをアホな形にしていたせいでどうもうまく設定できない。
一旦、静的ファイルはnginx、動的部分は旧来からのApacheで動かすことにしました。
いい機会なのでパーマリンクの形も修正しました。
旧来は
/archives/yyyymmddhhiipost_id.php
でしたが、今回から
/archives/post_id
という形に変更しました。
この「.php」が入ってるせいでnginxだけだとうまくいかない。rewrite設定もうちょっと見直してみよう・・・。
パーマリンクが変わったので、これまで頂いたFacebookの「いいね!」やツイート数が吹っ飛んだけど、これはしょうがない。
旧来の形でアクセスした場合、新パーマリンクへリダイレクトするのでリンク切れは無いはず・・・です。(リンク切れがあったら教えて下さい。)
旧パーマリンクからのリダイレクト処理はWordPressのプラグイン、Permalink Redirect WordPress Plugin | Scott Yang’s Playgroundを使用しています。このプラグイン、制作者のページから直接落としてインストールしたほうがいいです。WordPressの管理画面から検索して入れたバージョンは上手く動かなかった…。
今回インストールしたnginxは1.2.0。
ソースからインストールしました。
設定したnginxの設定ファイルはこんな感じ。
静的ファイルだけnginxにまかせてます。
2012/5/17 追記 —–
nginx.confの変なところにexpireが入っていたので削除
—– 追記ここまで
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
[crayon-6043679f48c0b849925687 lang="shell" title="nginx.conf language=(全体設定)"] user nginx; worker_processes 2; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid /var/run/nginx.pid; events { worker_connections 1024; } 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"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 5; gzip on; gzip_http_version 1.0; gzip_min_length 1000; gzip_comp_level 2; gzip_proxied expired no-cache no-store private auth; gzip_vary 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; 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; } upstream through { ip_hash; server 127.0.0.1:5000; } # Load config files from the /etc/nginx/conf.d directory include /etc/nginx/conf.d/*.conf; } |
[/crayon]
各サイト設定は/etc/nginx/conf.d/以下に設置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[crayon-6043679f48c17355262696 lang="shell" title="zafiel.conf(各サイトの設定)"] server { listen 80; server_name zafiel.wingall.com; location ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) { root /var/www/zafiel; index index.html; log_not_found off; expires 24h; break; } location / { proxy_pass http://through break; } } |
[/crayon]
Apacheにはリバースプロキシ用のモジュール(mod_rpaf)を組み込んでいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[crayon-6043679f48c1f392073145 lang="shell" ] $ sudo yum install httpd-devel $ wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz $ tar xzvf mod_rpaf-0.6.tar.gz $ cd mod_rpaf-0.6 $ vi Makefile # APXSのパスを下記に書き換える APXS2=/usr/sbin/apxs # インストール。 $ make rpaf-2.0 $ make install-2.0 |
[/crayon]
これで組み込み完了。あとはApacheの受け入れポートを間違えなければ、通常と同じ設定でOK.
WordPressがnginxだけで動かないのは悔しいなぁ。
nginxのconfigもよく分かってない部分多いし、一旦全部新VPSに移してじっくり色々調べよう。
今回、参考にさせて頂いたサイトは下記です。
- さくらVPSとnginxリバースプロクシで最速WordPressブログを作る方法(ベンチマーク付き) | さくらたんどっとびーず
- さくらのVPS + WordPress + nginx 環境の構築。 | nil.
- nginx+apacheでちょっぴり快適なWebサーバーを目指してみる(CentOS さくらのVPS) ::ハブろぐ
[…] このブログのWebサーバをapacheからnginxに変更する格闘中なのですが、 こちらのブログで […]