Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

使用するRaspberry Pi のモデルはどれでも構いません。今回はRaspberry Pi 4が手に入らないので、余っているRaspberry Pi 3A+を選びました。

WordPressのデモサーバとして使うのに、ラズパイなら電源だけあれば良いですし、Wi-Fiで接続するからローカルLANポートも必要ありません。モニターも必要無く、インターフェイスが最小限の3A+には適任です。もちろん、Raspberry Pi 4があるならそれに越したことはありません。

WordPressのテスト環境を構築するのには、WindowsやMacの仮想環境(DockerやLocal by Flywheel)でも可能です。何も別のマシンを用意する必要も無い時代です。

なんなら、レンタルホスティングサーバやレンタルVPSなりにテスト用環境を作って、公開の是非は別にインターネット経由で誰かに見せるのがスマートで実用的です。

敢えてラズパイをローカルサーバとしていじくり倒す利点として、他の環境と完全に切り離されているため無茶なことをしても問題無い点でしょうか。セキュリティ対策もそこまで気にすることもありません。

ついでに、ラズパイをWi-Fiルーター化させて普段はWi-Fiアクセスポイントとして活躍してもらうのも、消費電力の少ないRaspberry Pi 3A+は助かります。

自宅以外でも電源だけ確保すれば、AP化もされているので、ラズパイ内で動いているローカル環境のWebサイトを別マシン経由で実演できます。

この記事では、Wordpressをラズパイにインストールしテスト環境として利用しつつ、Wi-Fiの中継アクセスポイント(AP)のように使いたくて試しました。外部に持ち出した場合はインターネットに繋がらなくはなりますが、APは生きているので、別のPCやスマホでラズパイに接続してローカルサーバ内のWebサイトを表示できます。

Wi-Fiルーター化はリンク先の参考サイトにお譲りするとして、細かい点だけ備忘録として残しておきます。

LAMP環境

専用ケースに入ったRaspberry Pi 3A+

今回もRaspberry Pi にLAMP環境を構築してWordpressをインストールします。

OS:Raspberry Pi OS lite 64bit bullseye セットアップ:モニターとキーボードを繋いだ状態。Wi-Fiに接続済み。 でも、基本はSSH経由で作業可能です。(トラブった時にローカルを触れるようにしたまでです)

LAMP環境は、直にインストールする場合と、Dockerで構築する場合で過去にご紹介していきました。今回は直に構築しました。

インストールするのは、Apache2、MariaDB、PHPです。ほぼ前の記事通りにインストールをしました。

WordPressも当時よりバージョンが上がっています。特にv5.6から自動更新が基本になりました。ネットに繋いで居ない環境だとエラーが出ますね。

概ねこれまで通りのインストール方法で動かすことができます。

LAMP環境のインストール

DockerでLAMP環境

以下、細かい点を備忘録的に残しておきます。

apache2の設定メモ

インストールは以前と大きく変わっていません。

以前に触れていない、いくつかのTipsを備忘録として抜き出しておきます。(ほぼ自分用や)

自己署名ルート証明書の設定(SSL接続 —— https接続、*443)

知らなかった! Apache2をインストールした時点で、なんちゃってSSL証明書と秘密鍵をインストールしてくれていたんですね。snakeoilという自己署名ルート証明書と秘密鍵です。

テストでphp infoを表示させたら気が付きました。OpenSSLも適用されているようだったので、あれ?と思って/etc/apache2/sites-availableにある覗いてみたらdefault-ssl.confに書いてあった。

                SSLEngine on

                #   A self-signed (snakeoil) certificate can be created by installing
                #   the ssl-cert package. See
                #   /usr/share/doc/apache2/README.Debian.gz for more info.
                #   If both key and certificate are stored in the same file, only the
                #   SSLCertificateFile directive is needed.
                SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

これ、有効になっているのか/usr/share/doc/apache2/README.Debian.gzgunzipで解凍して読んでみた。

コマンドで有効にするだけでOKなんですね。めちゃ簡単。

sudo a2ensite default-ssl
sudo a2enmod ssl
sudo service apache2 restart

これでWordpressのURLをhttpsに変更してから再度URLを叩くとちゃんとhttpsで通信できました。

wordpress基本設定画面

元々httpのところをhttpsに書き換え

適用してもエラーが出ますが当然です。URLをhttps://IPアドレス(またはホスト名)/wp-admin/で接続できます。

その後セキュリティとして警告画面が出ます。承知の上で開くことでhttps通信で表示されます。

自己署名ルート証明書の警告 接続はプライベートではありません

詳細を表示する

自己署名ルート証明書の警告を閲覧する

「このWebサイトを閲覧します」をクリックで表示されます。

証明書を見ると、2032年まで有効とあったので10年間ですね。

これは取りあえずの証明書です。これを公開するサーバに適用してはいけません。

https通信にしておかないとWordpressもうるさくてね。これでhttp通信で出ていたエラーも出なくなると思います。

自己署名ルート証明書の表示

ドキュメントルート

デフォルトではセキュリティ上、/var/www/以下外でないと動作しません。別のディレクトリに変更するなら、apache2.confを編集します。

sudo nano /etc/apache2/apache2.conf

例としてルート下の/srv/をドキュメントルートにするならの例が記載されています。コメントアウトすればOK。

通常はそのまま/var/www/html/test1などにWordpressをインストールすればこの作業は必要ありません。

#<Directory /srv/>
#       Options Indexes FollowSymLinks
#       AllowOverride None
#       Require all granted
#</Directory>

所有権の変更

以前の記事にも記載しました。sudo chown -R www-data: .

改めて・・・。新たにフォルダを作成した場合(test1)にサーバ側に所有権を与えておくのを忘れないようにします。

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

あとでWordpressをセットアップする際も書き込めないと困るので忘れずに設定しておきます。

WordPress側の設定

WordPressをセットアップする時の備忘録です。

WordPress自体のインストールって頻繁にはやらないから忘れてしまいますね。バージョンも上がっているから余計に思い出しません。

日本語の選択

セットアップが始まっても日本語を選べない場合があります。私もやらかしました。wp-config.phpに書き込めない時です。その場合、先程の所有権を付与してあげてから再度行えばOKです。もしくは、表示されているようにコピペして自分で作ってね、という内容に沿って作るように促されます。

wp-config.phpに書き込めない表示

最初のレッツゴーの時に忘れていたのに続けてしまったから、上のような状態になりました。所有権を変更してあれば最初から言語選択の画面が表示されると思います。

wordpressのセットアップ開始画面

wp-config.phpに書き込めないぞ!っていう内容

所有権を変更した後なら、http://IPアドレス/作成したフォルダ/wp-admin/install.phpを叩くと最初のインストール画面になるので、言語選択ができます。

日本語を選んでセットアップ

テーマのアップロードで出るエラーの解消

テーマのアップロードでエラーになり、インストールや有効にできないことに遭遇すると思います。

これは、POSTサイズとアップロードファイルサイズが8Mや2Mになっているためです。これを増やしてあげれば解消します。

例えばテーマファイル「cocoon」は15MBあります。30MBにでも増やしてしておけばOKですよね。

sudo nano /etc/php/7.4/apache2/php.ini

post_max_sizeの編集 upload_max_filesizeの編集

  • post_max_size=8M → 30M
  • upload_max_filesize=2M →30M

これでエラーが消えてテーマをアップロードして有効化できます。

アップデートのエラーが出る

自動アップデートが基本となったWordpressでは、エラーが出ていると思います。

これもwp-config.phpを書き換えても良いのですけど、ここはお手軽にWordpress内のfunctions.phpに追記する方法で対処します。

wordpressのテーマによっては、書き込む場所が分かりやすいものもあります。(外観→テーマエディタ)

//自動更新の無効
add_filter( 'automatic_updater_disabled', '__return_true' );

これなら仮に本番サーバに移設する際も、追記したコードを削除すれば済みます。

■Pi 5は8GBモデルがオススメ

hostapdの設定メモ

後でインストールするhostapdのエラーについても少しだけ。

ウチの環境はまだWPA3ではなくWPA2でパスフレーズを設定しています。8文字〜63文字の間です。8文字以下だとエラー出ますから分かります。

エラー:hostapd[17454]: Line 1478: invalid WPA passphrase length 6 (expected 8..63)

エラーはjournalctlコマンドで見られるので、上手く動作するまで確認しましょう。

journalctl -xe

あと、肝となるhostapd.confは自分のWi-Fi環境により異なります。最近だとWPA3 SAEとか使っている人もいるでしょう。(ウチはまだ)

ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=ap0
driver=nl80211
ssid=(任意)
hw_mode=g
country_code=JP
channel=11(チャンネルは自宅Wi-Fiとバッティングしないように)
ieee80211d=1
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase=(任意8〜63文字)
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

有効化

変更を適用させるため、サービスを再起動させるのですが、hostapdやdnsmasqはサービスがマスク(MASK)されていて無効になっています。

無効になっていたら先に有効にしてからサービスのリスタートをします。

sudo systemctl restart dhcpcd.service
sudo systemctl restart hostapd.service
sudo systemctl restart dnsmasq.service
sudo systemctl unmask hostapd.service
sudo systemctl enable hostapd.service

sudo systemctl unmask dnsmasq.service
sudo systemctl enable dnsmasq.service

Wi-Fiルーター化して繋ぐ

こちらサイトの記事がとても分かりやすく端的だと思いました。参考にして構築しました。

一般的にクライアントとAP化を同時に行う情報で多いのは、有線LANとWi-Fiを使ったAP化です。あとUSB型Wi-Fiレシーバーを使ったのもありますね。

今回はWi-FiとWi-Fiのルーティングをしたいので、ちょっと面倒で複雑なところ、とても分かりやすいサイトを見つけて助かりました。

みかんのゆるふわ技術ブログ

Raspberry Pi WiFiアクセスポイント&ルーター化 - みかんのゆるふわ技術ブログ 前回の記事でRaspberry Piの内蔵WiFiのアクセスポイント機能とクライアント機能を同時に動かしました。 www.mikan-tech.net そこでは家のWiFiとRaspberry PiのWiFiアクセス…

こちらの記事は、凄くまとまっていて、ラズパイダとして改めて記載することはほとんどありません。

ザックリ言葉でいうと、wlan0のような仮想のインターフェイスを追加して、そちらに別のアドレス空間のネットワークを、DHCPから払い出すことで、2つのネットワークを作ります。

ラズパイをインターネットに繋げるのはいつものwpa_supplicant.confで設定しています。これはお馴染みで今回も特に触りません。今ではRaspberry Pi Imagerで事前にセットアップしてから開始できますからね。

最後にNAPT/IPマスカレードの設定を施せば、2つのネットワーク間で転送してくれるという仕組みです。(192.168.1.1と192.168.2.1みたいな)

Rグリーン Rグリーン
ラズパイダなりにまとめようと思ったら、とっても良い記事があった。
Rレッド Rレッド
ラズパイダ的な言葉でまとめられたらやってみますか

やってみた !!

Raspberry Pi 3A+を持て余している人にルーター化は有益かも?

ラズパイダでピアツーピアで繋ぐためにhostapdをミュージックプレイヤーで使いました。この方法だとラズパイに繋いだスマホやPCがネットに繋がりません。それでも当時はMopidyをスマホで操作するのに簡単でした。

Wi-Fiルーター化という方法だと、有線LANコネクタがないRaspberry Pi 3A+でも電源1つで済んで有益に思えました。中をWebサーバにして他のサーバアプリを使うのは便利かも。

PCからは問題ありませんでした。