WordPress を Raspberry Pi 3 の nginx で動かす

新規インストールするなら、こちらを参考にしてください。
今回は既存の WordPress をそのままコピーすることにした。

ubuntu@ubuntu:~$ scp -r root@raspberrypi2:/mnt/data/wordpress /mnt/data/wordpress

モジュール追加

ubuntu@ubuntu:~$ sudo apt install nginx php-mysql php-fpm -y

nginx のサイト定義

/etc/nginx/site-available/wordpress ファイル

upstream phpfpm70 {
  server unix:/var/run/php/php7.2-fpm.sock;
}

server {
  server_name evo.check.jp;
  listen 80;
  listen [::]:80;
  listen 443;
  listen [::]:443;

  root /mnt/data/wordpress/;
  index index.php;

  try_files $uri $uri/ @permalink;

  location ~ \.php$ {
    try_files $uri =404
    fastcgi_index index.php;
    fastcgi_pass phpfpm70;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include fastcgi_params;
  }

  location @permalink {
    fastcgi_pass phpfpm70;
    fastcgi_param SCRIPT_FILENAME /mnt/data/wordpress/index.php;
    fastcgi_param QUERY_STRING q=$uri&$args;
    include fastcgi_params;
  }
}

サイト有効化

ubuntu@ubuntu:~$ sudo ls -sf /etc/nginx/site-available/wordpress /etc/nginx/site-enabled/wordpress

nginx 再起動

ubuntu@ubuntu:~$ sudo systemctl restart nginx

http://evo.check.jp/ が表示できれば OK。
TLS の設定はあとで Let’s Encrypt を使って行うつもり。

  • wp-admin 配下を LAN 内のみ許可

    ただし /wp-admin/admin-ajax.php だけは WAN アクセスでも許可しておく。
    /etc/nginx/site-available/wordpress の server 内に下記を追記した。

    location = /wp-admin/admin-ajax.php {
    fastcgi_pass phpfpm70;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include fastcgi_params;
    }
    
    location ~ /(wp-login|wp-admin/.*)\.php$ {
    allow 192.168.0.0/24;
    allow 240f:3e:f6e:1::/64;
    deny all;
    try_files $uri =404
    fastcgi_index index.php;
    fastcgi_pass phpfpm70;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include fastcgi_params;
    }

    php 定義をコピペしまくりだけど、もっとエレガントな書き方ないかな。


Comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です