MENU

WordPressの構築・bitnami/Synology-NASの活用

目次

はじめに

自宅NAS環境にbitnami WordPressの検証ステージを用意したいと考えていました。更新してサーバーがダウンしてしまったらと思うと、いつも心配していました。もっと気楽に検証できる環境を手元にほしかったのです。Amazon Lightsailの構成も理解が進み、AKIの資料作成もひと段落がついたタイミングなのでチャレンジしてみました。
今回は「Synology DiskStation Manager (DSM)」上で運用するという、少しだけ特殊な構成ではありますが、DSM自体は十分に普通の仮想環境プラットフォームです。bitnamiでWordPress環境を構築する際には参考になると思います。

WordPressサーバーの構築

我が家の中核NASであるSynology DiskStationはいつも電源入れっぱです。ですから、こちらにWordPressサーバーを立ち上げる事ができれば効率的です。我が家のネットワークの中核に据えているので、ただのローカルサーバー運用以上に使い道が見つかるかもしれません。本格的な活用にもつなげたいです。

Synology Virtual Machine Manager (VMM) の導入

当初はより軽快に稼働するDockerでの構築を考えていましたが、Synologyのネットワーク管理機能を活用した方が得策だと考え「Synology Virtual Machine Manager (以降VMM)」を選択しました。バックアップやレストアもSynologyのツールが活用できそうです。
アプリケーションは「パッケージセンター」よりインストールします。(VMMがサポートされていない製品もあります、ご注意ください。)

図 1. DMSのディスクトップ

VMMはリッチなGUIが提供されてて、視覚的に容易に仮想環境を管理する事ができます。こんな小さなNASなのに、時代の進歩はすごいです。
私的には、Syanoを導入して「クラウド」へ散乱していた情報の「再集結」が進んでいます。情報を集結した上で「インターネット」で「クラウド」の様に使っています。情報の管理は完全に私にあって精神的にも論理的にも「安心安全な情報管理」が実現できました。将来的には、もちろん「パスワードなんて大嫌い!」が実現できればと思っています。

bitnami仮想環境をVMMに導入

bitnami WordPressの仮想環境をVMMに導入し「To.DigitalARTs. Blog」の検証サイトをローカルに立ち上げます。

bitnami仮想環境のダウンロード

bitnamiの仮想環境をダウンロードします。仮想環境のエクスポート形式であるovaファイルをダウンロードします。

入手したovaファイル(bitnami仮想環境)は以下の構成でした。

仕様説明
メモリ1GBでインポート
CPUAMD64 1Core
ストレージ10GB(設定にて20GBへ増量)
転送無制限
OSDebian 5.10.179-1 (2023-05-12) x86_64
ソリューションパッケージWordPress packaged by Bitnami 6.2.0
WorPressWordPress 6.2.1
PHPPHP 8.1.18
表 1. Bitnami仮想環境の仕様

ローカル環境への導入パッケージは構築済み仮想環境しか配布されていない様です。インストーラー形式での導入例が散見されましたが、現在はダウンロード画面には当該リンクはありませんでした。(広報などは確認しておりませんので私見です、ご了承ください)

ovaファイルのインポート

早速、VMMへインポートします。

VMMの作成/インポートを選択します。

図 2. ovaファイルのインポート

ovaファイルからのインポートを選択します。

図 3. インポート方法を選択

キーボードレイアウトはjaに設定しておくことをお勧めします。

図 4. その他の設定

配布されている仮想環境のストレージは10Gで構成されています。インポート完了後、起動する前にサイズ調整をしておく事をお勧めします。私はAmazon Lightsailに寄せて20Gに拡張しておきました。

図 5. 仮想ディスクの編集

以上でVMMへのインポートは完了です。

起動とAgentの導入

VMMのメニュー操作から起動します。起動が完了したら接続を押すとコンソールが開きます。まずは「QEMU Guest Agent」を導入してください。仮想環境の制御に必須なツールです。(コピペは使えませんので手打ちで入力してください。)QEMU Guest Agentが導入されるとVMMからネットワーク管理ができます。

sudo apt update
sudo apt upgrade
sudo apt install qemu-guest-agent
sudo reboot
図 6. VMMの接続コンソール

導入後に再起動すると「Guest Agent:実行中 」となります。そして振られたローカルネットワークIPアドレスが「IP:xxx.xxx.xxx.xxx」として表示されます。

図 7. 仮想ネットワークの確認
図 8. VMMのディスクトップ

以上でbitnami仮想環境のインポートは完了です。

接続確認

ブラウザーから確認したIPアドレスをたたいてみましょう。WordPressが起動されている事を確認できます。

図 9, ブラウザーから接続確認

bitnami仮想環境の立ち上げを確認できたので、続いてプラットフォーム設定を整備します。このままだとコピペすらできないので大変扱い辛いです。

bitnami 仮想環境のSSHサーバーを設定

コピペなどが使える様、ターミナルからの接続を整えます。ターミナルからの接続は、bitnami仮想環境ではSSH接続のみの様です。パスワード認証だと弾かれてしまいます。「Amazon Lightsail」ではAWSが事前に準備してくれているところですね。自分でやると、いろいろと面倒くさいんですよね。(^^;

bitnami仮想環境のSSHサーバーを設定

まずはssh接続を有効にします。サーバーの起動を抑止しているファイル「/etc/ssh/sshd_not_to_be_run」を削除してsshサーバーを有効にします。

sudo rm -f /etc/ssh/sshd_not_to_be_run
sudo systemctl enable ssh
sudo systemctl start ssh

続いては、SSH接続に利用する鍵ペアを作成します。

ssh-keygen 

ユーザーホームの直下に「.ssh」 フォルダが作られ、その中に鍵ペアが生成されます。作成される鍵のファイル名は以下のとおりです。

  • 秘密鍵:id_rsa
  • 公開鍵:id_rsa.pub

SSHサーバーには公開鍵を登録します。具体的には「~/.ssh/authorized_keys」に公開鍵を追記します。

cd /home/bitnami/.ssh
cat id_rsa.pub >> /home/bitnami/.ssh/authorized_keys

これでSSHサーバーへの接続準備は整いました。SSHサーバーの設定ファイルを修正しSSH接続を有効にします。

左図の設定は、公開鍵による接続を有効に、パスワード接続は拒否に設定しています。エディタを使って設定値を確認して修正または追記してください。(コピペできないのでシコシコとタイピングするしかありません…)

sudo nano /etc/ssh/sshd_config
# 今回のbitnamiの設定ファイルには記載されていなかったので、下記の項目は追記でした。

  RSAAuthentication yes
  PubkeyAuthentication yes
  ChallengeResponseAuthentication no
  PasswordAuthentication no
  UsePAM no

SSHサーバを再起動をして完了です。

sudo /etc/init.d/ssh force-reload
sudo /etc/init.d/ssh restrat

以上で、bitnami仮想環境へのSSH接続が有効となりました。続いて秘密鍵を手元のターミナル(私の場合はMacOSのターミナル)に導入します。まだまだ設定は続きます、結構面倒臭いです。

ちょっと横道、AKI KeyCase

いよいよ作成した秘密鍵をbitnami仮想環境から取り出して手元にあるパソコンに登録します。セキュリティとしてはbitnami仮想環境のアカウントで鍵ペアを作るのではなく、パソコンで作って公開鍵をbitnamiに登録するほうが安全です。ですが、bitnami仮想環境ではSSHサーバー側での生成と秘密鍵の持ち出しを推奨しています。ssh接続はITエンジニアが操作する前提なのでリテラシーが期待できるからこその仕様なのですが、これがSSH接続の良さを打ち消していると私は考えています。もちろんPKIの延長線上にあるので「秘密鍵は自己責任で正しく管理しましょう…」なのですが、AKIの概要を理解いただいている方にはわかると思いますが、この手続きを安全に自動で処理できる様にデザインしたものがKeyCaseです。

KeyCaseの特徴にクライアント側で鍵ペアを生成する仕様が挙げられます。結果、SSH接続における秘密鍵に該当する鍵は一度もインターネットに流れる事もなくKeyCaseに収められます。そして、SSHサーバーにあたるAKI TLSには公開鍵にあたる鍵のみ渡されます。鍵交換のプロセスが最適化される事で、ユーザーへ期待するITリレラシーを低く見積もる事が可能になります。こういった効果を読み取っていただければ幸いです。

閑話休題、秘密鍵の設定に話を戻します。(^^)/

秘密鍵ファイルの取得

Amazon Lightsailではダッシュボードから簡単に秘密鍵を入手する事ができましたが、bitnami仮想環境では鍵を取り出すためには細工が必要です。本書ではUSBメディアを使って秘密鍵を取得します。

まず、bitnami仮想環境は停止してください。停止を確認したのち、NASにUSBメモリを接続し仮想マシンの編集/その他よりUSBメモリを設定してください。
USBメモリのフォーマットはexFAT形式をお勧めします。

図 10. USBデバイスの接続

設定が終わったらbitnami仮想環境を起動してください。USBメモリのマウントを行います。VMMのメニュー接続にてコンソールを開きます。

まず「fdsikコマンド」を使って、USBメモリのデバイス名を確認します。
左図の例ですと「/dev/sdc」で認識している事がわかります。

sudo fdisk -l

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xaf25d0ff

Device     Boot Start      End  Sectors Size Id Type
/dev/sda1  *     2048 41943006 41940959  20G 83 Linux

Disk /dev/sdb: 1 MiB, 1048576 bytes, 2048 sectors
Disk model: Storage         
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc: 7.23 GiB, 7759462400 bytes, 15155200 sectors
Disk model: TransMemory     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot      Start        End    Sectors  Size Id Type
/dev/sdc1       4294967295 8589934589 4294967295    2T ff BBT
/dev/sdc2       4294967295 8589934589 4294967295    2T ff BBT
/dev/sdc3       4294967295 8589934589 4294967295    2T ff BBT
/dev/sdc4       4294967295 6854241533 2559274239  1.2T ff BBT

左図はホームフォルダ直下に「usb-memory」を用意してマウントしています。マウントしたフォルダに秘密鍵をコピーします。

sudo mount /dev/sdc /home/bitnami/usb-memory/
sudo cp .ssh/id_rsa usb-memory
sudo umount /dev/sdb

これで秘密鍵をbitnami仮想環境から外に取り出す事ができました。

pem形式の秘密鍵ファイルを作成

取り出した秘密鍵をpem形式にしないとMacOSのターミナルでは使えません。pemファイルの作成はMacOSのターミナルでputtyコマンドを使って行います。

puttyコマンドをMacOSにインストールします。(Homebrewの導入については割愛します)

brew install putty

秘密鍵ファイル「id_rsa」からpemファイル「id_rsa.pem」を作成します。

puttygen id_rsa -O private-openssh -o id_rsa.pem

再三のコメントで恐縮ですが秘密鍵の管理は自己責任です。漏えいしない様に適切に管理してください。

ターミナルの設定

pemファイルが用意できれば、あとはAmazon Lightsailでの作業とほぼ同じです。ブログ構築の備忘録・パソコンの整備を再確認いただければと思います。

設定が終われば、サクッとSSH接続できます。ターミナルはコピペが簡単にできるので、OSの設定作業が捗ります。(^^)/

bitnami仮想環境の基本設定

ターミナルからbitnami環境にSSH接続し、OSの基本的な徹底を行います。補足ですが、以降の設定はVMMのコンソールからは行えません。bitnami仮想環境ではSSH接続して設定する仕様となっています。

タイムゾーンとロケールの設定

タイムゾーンやロケールをJSTに設定します。

おおっと!Amazon Lightsailの設定と同じ方法でできるはずだと思っていたのですが、早速、洗礼を食らいました。(^^;
timedatectlコマンド」がコケちゃいます。エラーの内容を確認すると結構根が深そうです。Amazon Lightsailとは異なり「dpkg-reconfigureコマンド」で対処します。

dpkg-reconfigure コマンドを使って変更します。設定はGUI設定になりますので左図には結果のみを記載しています。

itnami@debian:~$ ls -la /etc/localtime
lrwxrwxrwx 1 root root 27 May  8 11:54 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

sudo  dpkg-reconfigure tzdata

urrent default time zone: 'Asia/Tokyo'
Local time is now:      Wed May 17 19:46:10 JST 2023.
Universal Time is now:  Wed May 17 10:46:10 UTC 2023.

bitnami@debian:~$ ls -la /etc/localtime
lrwxrwxrwx 1 root root 30 May 17 19:46 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo

どうしようかと思ったのですが、無事設定できて良かったです。

PHPの設定

続いてPHPのロケール設定です。

こちらはAmazon Lightsailのノウハウが活用できます。左図は過去記事の抜粋です。

$ sudo nano /opt/bitnami/php/etc/php.ini
  # date.timezone = UTC → date.timezone = Asia/Tokyo

$ php -r "phpinfo();" | grep timezone
Default timezone => Asia/Tokyo
date.timezone => Asia/Tokyo => Asia/Tokyo

以上でbitnami仮想環境の基本設定は全て完了です。思ったよりも手間が掛かったと思います。Amazon Lightsailのお手軽さを再認識しました。

bitnami仮想環境のWordPressへ接続

早速、userアカウントを使ってWordPressへログインします。配布されているbitnami WordPressでは以下のファイルにパスワードが記載されていました。詳細はbitnamiのダウンロードページで確認ください。こちらもLightsailとは少し違う様です。

sudo cat /home/bitnami/bitnami_credentials

その他のWordPressの設定はほとんど同じでした。

問題なく動いてくれています。検証ステージとして問題なく活用できそうです。

立ち上げたWordPressの運用計画

Amazon Lightsailでは自動でスナップショットを撮ってくれますし、ほぼ100%保証のSLAで運用されています。ローカル環境に立ち上げたbitnami仮想環境は、当たり前ですが自己責任で運用しなければなりません。「Amazon Lightsailと同じ」は言いませんが近しい運用をSynologyに構築しておきます。こういった事を簡単にいい感じで構築できるのがSynology NASのすごいところです。

bitnami仮想環境のエクスポート

VMM上で稼働する仮想環境のバックアップや冗長化については、残念ながら有償です。
ですから、bitnami仮想環境の保存はエクスポートによるovaフォーマット化で対応することにします。
マニュアルにて適時エクスポートしてNASの定期バックアップにて保存します。

bitnami仮想環境を停止した後操作/エクスポートにてovaファイルへの書き出しを行います。書き出しが終わったらBitnami仮想環境を起動してください。

図 11. bitnami仮想環境のエクスポート

最低限ではありますが、以上が自宅環境でのbitnami仮想環境のバックアップ運用です。NAS自体には定期的なバックアップと運用監視を設定しているので、知らないうちにシステム崩壊などはないでしょう。ないはずです。(^^;

VMMの自動スナップショット

VMM上で稼働する仮想環境をスケジュールを組んで自動でスナップショットを撮ることは無償版でも出来ます。この機能を使ってAmazon Lightsailの自動スナップショット相当の事が可能です。早速設定しておきます。

左メニュー保護を選択して保護プラン/作成を選択します。

図 12. 保護プランの作成

プランタイプはローカルスナップショットのみしか選択できません。

図 13. プランタイプの選択

bitnami仮想環境を選択します。

図 14. 仮想マシンの選択

スケジュールポリシーを設定します。設定値は左図のとおりデフォルトで問題ないです。

図 15. スケジュールの設定

保持ポリシーを設定します。私は1-Dat PROを選択しました。直近1週間は日次でスナップショットを撮って、以降は月次で保管します。結構賢くて良いですよね。

図 16. 保持ポリシーの設定

以上でスケジュールの設定は完了です。

図 17. スナップショットスケジュールの登録完了

一晩経ったので確認してみました。問題なくスナップショットが撮れています。

図 18. 実行結果の確認

以上でbitnami仮想環境の自動スナップショットが完了しました。これで安心して検証ステージとして利用する事ができます。

Virtual Machine Manager Pro ライセンス情報

Virtual Machine Manager Pronoのライセンス情報は以下のとおりです。
結構な事ができそうですね。面白そうですが個人でやる内容では無いですよね。(^^;

まとめ

Amazon Lightsailとほぼ同じ環境をローカルに構築する事ができました。PHPやGoの開発環境を用意して、もっと踏み込んだガジェット活用記事を執筆していきたいですね。頑張ります。
Synologyの強力なネットワーク機能を活用して、構築した仮想環境とインターネットを接続してみることもやってみたいです。引き続き、どうぞよろしくお願いします。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
目次