WordPress 6.02 + FreeBSD 13.1 + Nginx 1.23.1 + Mariadb 10.6

ブログを始めるにはWordpress を立ち上げねばならぬ。

FreeBSD のシェアはとても寂しい状況だが、ニッチな需要もあるだろうと言う事と自分のメモを兼ねてインストール手順をズラズラ書き殴ります。

スペックは

  • Vultr VPS
  • 1CPU 512MB 20GB SSD

かなりしょぼいがこの上でFreeBSD 12.3 が動いている

私は ports 派だけど、最初は package インストールして、動作確認後、portmaster -ad するのが私の手順。

pkg install wordpress
chown -R www:www /usr/local/www/wordpress
pkg install phpmailer
pkg install php80-extensions
pkg install nginx-devel
pkg install mariadb106-server

をまずやる。phpmailer と php80-extensions を入れておかないと wordpress 内部で使っている phpmailer がうまく動作しなかった。依存関係のファイルが install wordpress では足らない様である。また、パーミッションを Nginx を動かす www にあわせて

chown -R www:www /usr/local/www/wordpress

としておかないと、エラーが出る。

Nginx には stable と mainline 版があり、安定版のように見えるstable が良さそうに思えるが、
Nginx 中の人はこの様に申しており、要するにmainline は十分にテストされていて特別な理由がなければ mainline 推奨とのこと。なので Nginx については mainline に相当する nginx-devel を使う事にした。

ここら辺で忘れないうちに /etc/rc.conf

php_fpm_enable="yes"
nginx_enable="yes"
mysql_enable="yes"

を追加しておく。

mysqlが定番なんだろうが、使い方はほとんど変わらず、Mariadbの方がパフォーマンスが良いと風の噂を聞いたので、今回は Mariadbを採用。

あと遊びで裏技のsqlite で動かすのもやった。

wp-sqlite-dbというのがあって、その中にあるdb.php ファイルを wp-content フォルダに入れるだけで実に簡単。
で、タイムリーな事に、Wordpress の中の人が正式サポートに向けて動き出した様で、上記の奴の正式採用を考えているらしい。

WordPress共同創業者のMatt MallenwegはWordCamp US 2022の質問コーナーで「もし魔法の杖でWordPressの問題をなんでも解決できるとしたら、何を解決したい?」と問われて「SQLiteを導入したい」と答えている。

と言う情報もあるのでかなり信憑性が高いと思う。

多分だけど、wordpress 動かしている人の90%位は(私も含めて)sqliteで事足りるんじゃないかなぁ
だから、1年1500円位のさくらのレンタルサーバ ライト (容量が100GBもあってびっくり)にsqliteでwordpress入れて、負荷が厳しくなってきたら上のプランに移るってのが賢い選択なのかもしれない。閑話休題。

日本語対応のため、Mariadb に文字コード utf8mb4 を設定して置く。
/usr/local/etc/mysql/conf.d/server.cnf の中に
[mariadb] を探し、その後に

character-set-server = utf8mb4
[client-mariadb]
default-character-set = utf8mb4

を挿入する。

次にMariadb の初期化と、データベースを作ろう。

/usr/local/etc/rc.d/mysql start

でデーモンを動かして

mariadb-secure-installation

を実行。パスワード入力以外は全て y で ok.

all done になったら、quit で抜けて、もう一度

mariadb -u root -p

でパスワード入れてログイン。

create user wp_user identified by 'あなたのパスワード';
create database wordpress;
grant all on wordpress.* to wp_user;
flush privileges;
quit;

データベースの出来上がり。

ついでにphpmyadmin も入れておこう。

pkg install phpMyAdmin5-php80

最後はnginx。

nginx の設定は moz://a SSL Configuration Generator

お任せしています。暗号は何が良いとか見繕ってくれ、Qualys SSL Labと言う SSL/TLS の出来の良さを判定してくれるサイトで、A+ 判定が貰えます。出来上がりは次の様な感じ。ドメイン名や証明書へのリンクを各自修正して下さい。あと、unix socket 使う人はそこも。パーマリンク対策と wp-config.php (重要機密ファイル)へのアクセス禁止も忘れずに。

# generated 2022-09-19, Mozilla Guideline v5.6, nginx 1.17.7, OpenSSL 1.1.1k, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.17.7&config=intermediate&openssl=1.1.1k&guideline=5.6
server {
listen 80 default_server;
listen [::]:80 default_server;

location / {
return 301 https://$host$request_uri;
}
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

server_name example.com www.example.com;

root /usr/local/www/wordpress;
index index.php index.html;

location ~ \.php$ {
root /usr/local/www/wordpress;
fastcgi_pass 127.0.0.1:9000;
# fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

# パーマリンク対処
try_files $uri $uri/ /index.php?$args;

# wp-config.php へのアクセス禁止
location ~* /wp-config.php {
deny all;
}

ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;

# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
ssl_dhparam /path/to/dhparam;

# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;

# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

# replace with the IP address of your resolver
resolver 127.0.0.1;
}

では、いよいよ

/usr/local/etc/rc.d/php-fpm start
/usr/local/etc/rc.d/nginx start

して、example.com を見に行くとwordpress のインストール画面が始まるはず。

うーん、これで説明になっているんだろうか?

よく見る、画面キャプチャ多数の手取り足取りの奴は素晴らしいとは思うのだけど、私はこの様なサーバー設定スキルのある人には過剰では無いかと思っているのでこんな簡素な説明にしてしまった。

ご意見いただけると幸いです。

さて、取り敢えず動いたので、wordpress の使い方の勉強をします。まずはカッコいいテーマを見つけたいです。

という訳で今日はこのへんで、、、ではでは

p.s. wordpress の使い方分かってないので、この投稿、今後訂正しまくりになる予定です。ご了承下さい。

コメント

タイトルとURLをコピーしました