Nginx

WordPressをHomebrew+NginxでたてたMacのローカル環境で動作させる

2018.02.19

Macのローカル環境

急ぎ足で制作した当サイトも色々と改修する計画があがってまいりまいしたので、ローカルにテスト環境を構築することにしました。最近、HomebrewでローカルにNginxの環境を作りましたので、それを利用して構築します。環境を構築するまでは下記の記事を参考にしていただければと思います。

権限の問題とパーマリンクをデフォルト以外にする時の問題

デフォルト状態のWordPressのインストールはすんなり行えたので、案外サクッとテスト環境作りもできるだろうとタカをくくっていましたが、しっかりつまずきました。今回ローカル環境構築にあたりつまずいたのは下記にあげる2点です。

  • 一時ファイルのパーミッション
  • パーマリンクをデフォルト以外に変更した場合

こういったトラブルに直面するとXAMPPをはじめとするローカル環境構築用のツールのありがたみが身にしみます。

一時ファイルのパーミッション

まず最初につまずいたのが一時ファイルのパーミッションです。本番環境がKUSANAGIを使っていることもあり、ローカルへの移植はDBから行わずWordPressのインポート・エクスポート機能で行うことにしました。本番と違う時点でテスト環境としてどうなの?ってのは一旦置気にしないことにします。

上限ファイルサイズの変更

早速インポートを行おうとするとファイルサイズの上限に引っかかったのでphp.iniを編集してファイルサイズを変更します。

/usr/local/etc/php/7.1/php.iniのphp.iniを開いて upload_max_filesizeで検索をかけて任意の値に変更します。

upload_max_filesize = 30M

同様に post_max_sizeも任意の値に変更します。

post_max_size = 100M

設定を反映させるためにphpを再起動します。私のPHPのバージョンは7.1なので下記のように行います。うまく反映されなかったらMacを再起した方が速いかもです。

$ brew services restart homebrew/php/php71

設定反映後、もう一度インポートを試みるもまたエラーが!今回はファイルサイズの上限ではなく違うエラーです。早速ログを覗いてみると下記のログを見つけました。

/usr/local/var/run/nginx/fastcgi_temp/4/01/0000000014" failed (13: Permission denied) while reading upstream

おそらくfastcgi_tempが一時ファイル保管のディレクトリで、そこの権限が・・・って内容なので、パーミッションを777に変更しました。

$ sudo chmod 777 /usr/local/var/run/nginx/client_body_temp

これでやっとインポートできるようになりました!

パーマリンクをデフォルト以外に設定する場合

続いてパーマリンクをデフォルト以外に設定する場合です。設定を行わなかったらNotfoundの嵐です。WordPress用のconfファイルを下記のように書き換えました。server_nameとパスのexsampleは任意のものに置き換えてください。

server {
    listen       8080;
    server_name  exsample.local;
    root    /usr/local/var/exsample;
    index  index.php index.html index.htm;

    location / {
        try_files $uri $uri/ @wordpress;
    }

    location ~ \.php$ {
        try_files $uri @wordpress;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    location @wordpress {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME  /usr/local/var/exsample/index.php;
        include       fastcgi_params;
    }
}

これでなんとかローカル環境への移植が完了しました。難しいです。

WEBSITE DESIGN REQUEST

ホームページ制作依頼について

W・D・Sでホームページ制作をご希望の方はお気軽にご相談ください。
制作内容、ご予算、納期をお知らせいただくとスムーズです。

ホームページ制作を相談する