nginxでWordPressをサブディレクトリ形式で動かす方法

2年前から契約しておきながら全く使ってなかったVPSマシンを解約すべきかどうか迷った結果、折角なのでnginxのみでWordPressを動かす実験台にしてみることに。

今メインで運用しいているこの「アキハバラ自腹日記Part4.0」はフロント:nginxでバックエンド:Apacheという比較的メジャーな構成なのですが、これをnginとSpawn-FCGIだけで動かそうとしたら中々に大変でした。

単純にドキュメントルート直下で動かす分には各所にサンプルがあるのでそれほど大変ではないのですが、本ブログのように

  • WordPress本体は「/ドキュメントルート/wordpress」へインストール
  • サイト的には「/ドキュメントルート/diary4」の見た目にする

という構成で動かしている例が見当たらず、色々試行錯誤した結果、nginx.confを

server {

    (前略)

    location ~ /diary4(.*) {
        root   (ドキュメントルート);
        try_files $uri $uri/ /wordpress/index.php?q=$1&$args;
    }

    location ^~ /wordpress/ {
        root   (ドキュメントルート);
        index index.php
        try_files $uri $uri/ /wordpress/index.php?$args;
        location ~ \.php$ {
            fastcgi_index  index.php;
            fastcgi_pass   unix:/(Spawn-FCGIのUNIXソケットの場所)/spawn-fcgi.sock;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

    }

}

のようにしたら思った通りの挙動をしてくれました。

謎だったのは「location ^~ /diary4(.*) ~」ではなく「location ~ /diary4(.*) ~」」とする必要があった点ですが、これがnginxの仕様というならば納得するしかないのですが、これに気づくのに2日程費やしてしまいました(汗。

あとハマったのはphpが実行されずにダウンロードされてしまう点で、結局、nginxの設定をミスってphpをダウンロードしてしまった時にこれをブラウザがキャッシュしてしまったのが原因だと分かったのがこれまた2日後という始末(汗々。

そんなこんなでWordPressがまともに動くまでに足掛け一週間ほどかかってしまいました。

正直、Apacheを使っていればここまで時間がかかることもなかったと思いますが、まぁいい経験が出来たと思って今後の糧にしよう・・・。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク