Raspberry PiにNginxで複数のWordPressサイトを構築する方法【wp-cli活用】

Raspberry PiにNginxで複数のWordPressサイトを構築する方法【wp-cli活用】
スポンサーリンク

Raspberry PiにNginx、PHP、MariaDB、wp-cliを組み合わせて、複数のWordPressサイトを作成したいと思ったことはありませんか?
この記事では、Raspberry Pi上でWordPressを複数構築し、それぞれをサブディレクトリで管理する方法を、初心者にも分かりやすく解説します。wp-cliを使えば、手作業よりもずっと効率よくセットアップできます。
実際に私がRaspberry Pi B3で試した構成に基づいて、最小限の設定でパーマリンクやテーマのインストールまできちんと動作するようにするポイントも紹介します。

スポンサーリンク

構築環境

  • ラズベリーパイ B3 (B3+、4、5)好きなのを選んでください。
  • OSはraspbian OS 32ビットデスクトップ(無線ラン固定IPを設定後、デスクトップを非表示にし、SSH接続で設定して行きます)
  • 記憶媒体は16メガバイトSDカードです(お好きなもの)
  • 今回OSのインストール、固定IPの設定済を前提としてお話して行きますので、まだの方はOSをインストールし固定IPの設定してください。( WordPressはIPアドレスが変わるとうまく表示できなくなりますので必ず固定IPしてください)

✅ GUI(Xウィンドウ)を無効にしてCLIモードで起動

SSHで使う場合、GUIは不要なため「CLI(コンソール)モードのみ」で起動するように設定変更できます。
SSHでRaspberry Pi に接続し、他にも方法がありますが、今回は以下のようにGUIのターゲットを変更。

sudo systemctl set-default multi-user.target

これでCLIのみで起動します。
GUIに戻したいときは。

sudo systemctl set-default graphical.target

設定後

sudo reboot

これで次回以降GUIは起動せず、コンソールモードで起動します。

ワードプレス動作環境を構築

パッケージを最新化

sudo apt update && sudo apt upgrade -y

Nginx をインストール

sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

Nginx動作確認

ブラウザにラズベリーパイのプライベートアドレスを入れて下記の情報が表示されれば正しくインストールされてます。

PHPと必要なモジュールをインストール

このコマンドは、PHP本体(php-fpm)とWordPressの動作に必要な以下の主要モジュールを一括でインストールします。
🔍 php-mysql は MariaDB との連携に必須
🔍 php-fpm は Nginx と組み合わせるときに必要

php -v

下記のメッセージが出れば成功です。

PHP 8.2.28 (cli) (built: Mar 13 2025 18:21:38) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.28, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.28, Copyright (c), by Zend Technologies

補足
sudo nano /var/www/html/info.php  infoファイルを作成して、ブラウザからPHPのインフォメーション表示しようとしても、Nginxの/etc/nginx/sites-available/defaultファイルに、まだ PHPの情報が設定されていないのでアクセスが拒否されます。
php infoをここで作り確認する必要がありません。

MariaDBをインストール(MySQL互換)

インストールします。

sudo apt install mariadb-server -y

MariaDBを設定して行きます
パスワードは任意で設定、最初だけは何もせずエンター、
anonymous users を削除」や「root リモートログインを無効化」は Yes(すべてYes)

sudo mysql_secure_installation

mariadb確認

sudo systemctl status mariadb

出力例(正常)

 mariadb.service - MariaDB 10.11.3 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enab>
     Active: active (running) since Mon 2025-05-05 23:07:05 JST; 1 day 21h ago
       Docs: man:mariadbd(8)

ここまでで環境は整ってきました。
コントロールCで終了します。

Nginx、PHP設定

/etc/nginx/sites-available/default の設定

nanoエディターで開いて

sudo nano /etc/nginx/sites-available/default

ワードプレスで使えるように下記のように設定します。

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;                          # WordPressを設置したパスに変更       
    index index.php index.html index.htm;

    server_name _;
    client_max_body_size 100M;       # アップロード制限(最大100MB)今回100M
    location / {
        try_files $uri $uri/ /index.php?$args;  # パーマリンク対応
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;  # PHPバージョンに応じて変更
    }
    location ~ /\.ht {
        deny all;
    }
}

PHPの最大アップロードサイズを変更する

php.iniを編集します。

sudo nano /etc/php/8.2/fpm/php.ini

以下の項目を探して、適宜変更します(例:最大100MBにする場合

upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
memory_limit = 256M

上記のファイルを探すのが大変ですので(コントロールwで検索窓を表示)upload_max_filesizeを入力して検索すると簡単に見つかります
変更保存したら、PHP-FPMを再起動します。

sudo systemctl restart php8.2-fpm

🧾WordPress用データベースとユーザーの作成

MariaDB にログイン

sudo mariadb

WordPress用のデータベース作成

ここでは例として wordpress という名前で作成します。

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

WordPress用のユーザーを作成し、パスワードを設定

ユーザー名:wpuser
パスワード:password(←好きな安全なものにしてください)

CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';

作成したユーザーにデータベースへの全権限を付与

GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';

権限の反映と終了

FLUSH PRIVILEGES;
EXIT;

✅ 完成した情報(控えておきましょう)

項目設定例
データベース名wordpress
ユーザー名wpuser
パスワードpassword
ホストlocalhost

この情報は WordPressインストール時に必要になるので、控えておいてください。

wp-cli のインストール

コピペして一括で貼り付け実行しても問題ありません。

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info  # 動作確認
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

WordPressのダウンロードと展開

cd /var/www/html
sudo rm index.nginx-debian.html  # デフォルトのインデックス削除

インストールするには
通常の開発・学習用(Raspberry Pi など)なら。

sudo wp core download --locale=ja --allow-root

WordPress を運用しているユーザー(通常は www-data)でコマンドを実行します。

sudo -u www-data -i -- wp core download --locale=ja

設定ファイルの作成とインストール

sudo wp config create \
  --dbname=wordpress \
  --dbuser=wpuser \
  --dbpass='パスワード' \
  --dbhost=localhost \
  --path=/var/www/html \
  --locale=ja \
  --allow-root
sudo wp core install \
  --url="http://ラズパイのIPアドレス" \
  --title="サイトのタイトル" \
  --admin_user="adminユーザー名" \
  --admin_password="adminパスワード" \
  --admin_email="メールアドレス" \
  --path=/var/www/html \
  --allow-root

パーミッションとオーナーの調整

sudo chown -R www-data:www-data /var/www/html

上記だけでも大丈夫ですがもし不安であれば必要に応じて追加してください。

sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;

Webブラウザで確認

ラズベリーパイのIPアドレス

WordPressのログイン画面やトップページが表示されれば成功!

複数の WordPress を /var/www/html/ 以下にディレクトリ分けして複数インストールする場合

たとえば

/var/www/html/mywp1
/var/www/html/mywp2

同じデータベースの使用できますが新しく新しいデータベースを一つ制作しておきましょう、例えば下のように作ります。

sudo mariadb
CREATE DATABASE my1_wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'wpuser1'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON my1_wordpress.* TO 'wpuser1'@'localhost';
FLUSH PRIVILEGES;
EXIT;
項目設定例
データベース名my1_wordpress
ユーザー名wpuser1
パスワードpassword
ホストlocalhost

まずはディレクトリーを作ります。

sudo mkdir /var/www/html/mywp1

所有者・パーミッション設定

sudo chown -R www-data:www-data /var/www/html/mywp1
sudo find /var/www/html/mywp1 -type d -exec chmod 755 {} \;
sudo find /var/www/html/mywp1 -type f -exec chmod 644 {} \;

wp-cli で簡単に構築

SSH接続中のターミナルで以下を(項目を確認後) そのままコピペOK
データベースは一つですべて動かすことができますが、それぞれ別の新しいデータベースを作って設定してください。

cd /var/www/html/mywp1
sudo wp core download --path=/var/www/html/mywp1 --locale=ja --allow-root

下記の内容が自分の作った環境と、すべて合致してるかよく確認後、実行してください。

sudo wp config create \
  --dbname= my1_wordpress\
  --dbuser=wpuser1 \
  --dbpass='パスワード' \
  --dbhost=localhost \
  --path=/var/www/html/mywp1 \
  --locale=ja \
  --allow-root
sudo wp core install \
  --url="http://192.168.1.100/mywp1" \
  --title="My Site 1" \
  --admin_user="admin" \
  --admin_password="password" \
  --admin_email="you@example.com" \
  --path=/var/www/html/mywp1 \
  --allow-root

ブラウザからアクセスして動作確認

192.168.x.x/mywp1 にアクセス

📝 まとめ

今回は、Raspberry Piを使ってNginx、PHP、MariaDB、wp-cliを活用し、複数のWordPressサイトをサブディレクトリに構築する方法を解説しました。
この方法で、1台のRaspberry Piで複数のWordPressサイトを効率的作ることができます。さらにwp-cliを使えば、手動での操作を大幅に省力化できます。

ぜひ、あなたもこの手順を試して、Raspberry Piを使ったWordPressの運用に挑戦してみてください!

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