VR-500にWordPressをインストール


VR-500にWordPress5.5.1をインストールを備忘録としてまとめました。必ずしも正しい設定とは限りませんが現在この設定で動いています。

前回と同じようにluciを使用しないでsnapshotビルドを使います。
nginxとphp7-fpmをインストールします

opkg update && opkg install nginx-ssl php7-fpm

PHP7モジュールをインストールします。

opkg install php7-mod-curl php7-mod-dom php7-mod-exif php7-mod-fileinfo php7-mod-json php7-mod-mbstring php7-mod-mysqli php7-mod-gd php7-mod-opcache php7-mod-zip php7-mod-iconv php7-mod-filter php7-mod-ctype

Nginxのserverブロックデフォルト設定は/etc/nginx/conf.d/_lan.confにあります。
LANにつないでいる機器の全てのポート80と443を受け付ける設定になっています。
自動的にopenwrt自己署名証明書_lan.crtと_lan.keyが作成されます。
ここではLetsEncryptの証明書を用いますので_lan.confを用いません。

/etc/nginx/conf.d/_lan.confを
/etc/nginx/conf.d/_lan.conf.disabledにリネーム

 
設定ファイルは3つのファイルに分かれています。
nginx.conf{httpブロック}はexample.conf{serverブロック}を内包し、
example.com.confはphp.locations{phpブロック}を内包します。

以下のような形です。

/etc/nginx/nginx.conf

└──/etc/nginx/conf.d/example.com.conf
└──/etc/nginx/conf.d/php.locations

vi /etc/nginx/fastcgi_params +以下の3行を追加します。

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

+fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
+fastcgi_param PATH_INFO $fastcgi_path_info;
+fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REQUEST_SCHEME $scheme;
fastcgi_param HTTPS $https if_not_empty;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

vi /etc/nginx/nginx.conf
root /www;をワードプレスのフォルダに指定します。

# Please consider creating files in /etc/nginx/conf.d/ instead of editing this.
# For details see https://openwrt.org/docs/guide-user/services/webserver/nginx

worker_processes auto;

user root;

events {}

http {
access_log off;
log_format openwrt
'$request_method $scheme://$host$request_uri => $status'
' (${body_bytes_sent}B in ${request_time}s) <- $http_referer';

include mime.types;
default_type application/octet-stream;
sendfile on;

client_max_body_size 128M;
large_client_header_buffers 2 1k;

gzip on;
gzip_vary on;
gzip_proxied any;

root /mnt/sda1/wordpress;

include conf.d/*.conf;
}

 

vi /etc/nginx/conf.d/example.com.conf

server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name .example.com;
ssl_certificate '/etc/nginx/conf.d/letsencrypt.crt';
ssl_certificate_key '/etc/nginx/conf.d/letsencrypt.key';
ssl_session_cache 'shared:SSL:32k';
ssl_session_timeout '64m';
index index.php index.html;
try_files $uri $uri/ /index.php$is_args$args;
include conf.d/*.locations;
}

vi /etc/nginx/conf.d/php.locations

location ~ [^/]\.php$ {
#error_log /dev/null;
fastcgi_connect_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
fastcgi_busy_buffers_size 32k;
fastcgi_temp_file_write_size 32k;
# client_header_timeout 10s;
client_body_timeout 10s;
send_timeout 60s; # default, increase if experiencing a lot of timeouts.
output_buffers 1 32k;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param HTTP_PROXY “"; # Mitigate https://httpoxy.org/ vulnerability.
fastcgi_pass unix:/var/run/php7-fpm.sock;
}

SSLなうでletsencrypt証明書作成してコピー

/etc/nginx/conf.d/letsencrypt.key
/etc/nginx/conf.d/letsencrypt.crt

nginx -T -c '/etc/nginx/nginx.conf’で全設定の確認

service nginx enable
service nginx reload

 

vi /etc/php.ini

doc_root = “/mnt/sda1/wordpress"に変更

post_max_size = 8M
upload_max_filesize = 8Mに変更

post_max_size と upload_max_filesizeの値は同じにします。

 

/dev/sda1を/mnt/sda1にマウントする

opkg install block-mount e2fsprogs kmod-fs-ext4 kmod-usb-storage kmod-usb2 kmod-usb3
mkfs.ext4 /dev/sda1
block detect > /etc/config/fstab
uci set fstab.@mount[0].enabled='1'
uci commit
reboot

/mnt/sda1を/overlayにマウントする VR-500は本体ROMが十分にあるので以下は必要ありませんでした。

tar -C /overlay -cvf - . | tar -C /mnt/sda1 -xf -
block detect > /etc/config/fstab
sed -i s/option$'\t'enabled$'\t'\'0\'/option$'\t'enabled$'\t'\'1\'/ /etc/config/fstab
sed -i s#/mnt/sda1#/overlay# /etc/config/fstab
reboot

PHPINFOで動作確認

/mnt/sda1/wordpress/index.php

<?php
phpinfo();
?>

を作成して表示されればOK

MariaDBサーバーとクライアントをインストール

opkg update && opkg install mariadb-server mariadb-client

 

vi /etc/mysql/conf.d/50-server.cnf

user = mariadb
datadir = /mnt/sda1/mysql
tmpdir = /mnt/sda1/tmp

dataフォルダとtmpフォルダをsda1上に作成

mkdir /var/run/mysqld
mkdir /mnt/sda1/tmp

権限を設定

chown -R mariadb /var/run/mysqld
chown -R mariadb /mnt/sda1/tmp

MariaDBをインストール

mysql_install_db –force

vi /etc/config/mysqld

–syslogを削除しないと自動起動しませんでした。

config mysqld 'general'
option enabled '1' # 0 - disabled, 1 - enabled
option options '' # Options passed to mysqld_safe

mysqld -u mariadb &

Version: '10.4.14-MariaDB’ socket: '/var/run/mysqld/mysqld.sock’ port: 3306 Source distributionとでてくればOK

以下はmysql上で実行します。

wordpressのデータベースを作成します。

CREATE DATABASE データベース名;
GRANT ALL PRIVILEGES ON データベース名.* TO "ユーザー名"@"127.0.0.1" IDENTIFIED BY "パスワード";
FLUSH PRIVILEGES;

rootとmariadbのパスワードを設定します。

set password for root@localhost=password('パスワード');
set password for 'mariadb'@localhost=password('パスワード');

データベースを確認

show databases;

testデータベースを削除
drop database test;

ユーザー確認

SELECT User, Host, Password FROM mysql.user;

匿名ユーザーの削除

DELETE FROM mysql.user WHERE User = ";

 

wp-config-sample.phpをwp-config.phpに直して、5か所修正します。

/** The name of the database for WordPress */
define( 'DB_NAME', 'データベース名' );
/** MySQL database username */
define( 'DB_USER', 'ユーザー名' );
/** MySQL database password */
define( 'DB_PASSWORD', 'パスワード' );
/** MySQL hostname */
define( 'DB_HOST', '127.0.0.1' );

プレフィックスの変更

$table_prefix = 'wp_’;

 

PHP7-FPMのデフォルトでは
user = nobody
;group =
となっています。

これを
ユーザーをwww-data
グループをwww-dataにします。

vi /etc/php7-fpm.d/www.conf

user = www-data
group =www-data

UNIXドメインソケットを使用するので
そのユーザーを指定する必要があります。
PHP7-FPMユーザーと同じにします。
listen = /var/run/php7-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0666

ユーザー確認
cat /etc/passwd

root:x:0:0:root:/root:/bin/ash
daemon:*:1:1:daemon:/var:/bin/false
ftp:*:55:55:ftp:/home/ftp:/bin/false
network:*:101:101:network:/var:/bin/false
nobody:*:65534:65534:nobody:/var:/bin/false
dnsmasq:x:453:453:dnsmasq:/var/run/dnsmasq:/bin/false
www-data:x:33:33:www-data:/var:/bin/false

グループを確認

cat /etc/group

root:x:0:
daemon:x:1:
adm:x:4:
mail:x:8:
dialout:x:20:
audio:x:29:
www-data:x:33:
ftp:x:55:
users:x:100:
network:x:101:
nogroup:x:65534:
dnsmasq:x:453:dnsmasq

デフォルトではwww-dataグループがありません。

www-dataグループを作成します

opkg install shadow-useradd
useradd -u 33 -g www-data -c www-data -d /var -s /bin/false www-data -p パスワード

php-fpmが/mnt/sda1/wordpressへの権限を有効にします

chown -R www-data /mnt/sda1/wordpress
chgrp -R www-data /mnt/sda1/wordpress

 

CloudFlareDDNSサービスを利用してIPを固定する

19.07.4の場合ddns-scripts_cloudflare.com-v4がインストールできます
opkg update && opkg install ddns-scripts ddns-scripts_cloudflare.com-v4

vi /etc/config/ddns

config service 'myddns_ipv4'
option interface 'wan'
option lookup_host 'ドメイン名'
option use_ipv6 '0'
option service_name 'cloudflare.com-v4'
option domain 'ドメイン名'
option username 'アドレス'
option password 'APIキー'
option ip_source 'web'
option ip_url 'http://checkip.dyndns.com'
option check_unit 'minutes'
option force_unit 'minutes'
option retry_unit 'seconds'
option enabled '1'

で大丈夫でした。

しかし、2020/10/20現状のsnapshotビルドではddns-scripts_cloudflare.com-v4がインストールできません。
カスタムスクリプトで指定します。

https://github.com/openwrt/packages/tree/openwrt-19.07/net/ddns-scriptsから
update_cloudflare_com_v4.shをダウンロードして
/etc/ddns/update_cloudflare_com_v4.shにコピーする

chmod 600 /etc/ddns/update_cloudflare_com_v4.sh

opkg update && opkg install ddns-scripts curl

vi /etc/config/ddns

config service 'myddns_ipv4'
option interface 'wan'
option lookup_host 'ドメイン名'
option use_ipv6 '0'
option domain 'ドメイン名'
option username 'メールアドレス'
option password 'APIキー'
option ip_source 'web'
option ip_url 'http://checkip.dyndns.com'
option check_unit 'minutes'
option force_unit 'minutes'
option retry_unit 'seconds'
option enabled '1'
option use_syslog '2'
option check_interval '30'
option update_script '/etc/ddns/update_cloudflare_com_v4.sh'

/etc/init.d/ddns start

DDNSのサービスセクションを無指定、カスタムスクリプトで指定しているので
225426 WARN : Service section disabled! – TERMINATEとでますが、DDNSは更新されます。

 

OpenWrt

Posted by taroumaru