概要
元サーバサイドエンジニアですが、地方で活動するようになって、成果の説明がしやすいフロント側の必要性を感じてWordPressの勉強を始めようと思い立ちました。
そして『ビジネスサイトを作って学ぶ WordPressの教科書 Ver.5.x 対応版』
の環境構築編でいくつか詰まったので、その詰まりポイントおよびその解決を残しておきます。
具体的には、Vagrantを使ってVirtualBox上でKusanagiというプライムストラテジー社提供のWordPress向けの仮想環境を構築しました。
Kusanagiを使うことで、WordPressに必要なデータベース、Webサーバ、PHP、等のミドルウェア環境の構築が省略できるみたいです。便利ですね。
で、実際に書籍の手順通りに進めていったところ、バージョンの違いによりいくつか躓きました。よくあることです。
記事構成
ざっくり、3部構成になってます。
- 実行環境
- 環境構築手順
- エラーと対処
実行環境
Version | |
---|---|
Host OS | Ubuntu 20.04.4 LTS |
VirtualBox | 6.1.32 |
Vagrant | 2.2.19 |
Kusanagi | 8.4.2-2 |
環境構築手順
1. VirtualBoxのインストール
# キーを追加
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
# リポジトリに追加
$ sudo apt-add-repository "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib"
# リポジトリ最新化とインストール
$ sudo apt-get update && sudo apt-get install virtualbox-6.1
参考:Virtualbox download for linux
2. Vagrantのインストール
# キーを追加
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
# リポジトリに追加
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
# リポジトリ最新化とインストール
sudo apt-get update && sudo apt-get install vagrant
バージョン確認
$ vagrant --version
Vagrant 2.2.19
3. Kusanagi環境のインストール
作業ディレクトリ作成
$ cd 【任意のディレクトリ】
$ mkdir pacificmall && cd pacificmall
Vagrantfile
の作成
$ vagrant init prime-strategy/kusanagi-wp5 --box-version 1.0
$ ls
Vagrantfile
Vagrantfile
の編集
:
# 仮想マシンにプライベートIPアドレスを割り振るため
# ↓のコメントアウトの削除
config.vm.network "private_network", ip: "192.168.33.10"
:
仮想マシンの起動
$ vagrant up
ここでいくつか詰まったので、色々と対処しました。
エラーとその対処は次章に記載しておきます。
以降、エラー対処後、プライベートIPを192.168.56.10
にした前提で進みます。
4. ホスト名の設定
ホストマシンの/etc/hosts
に追記
:
192.168.56.10 pacificmall.local
:
5. WordPress
にアクセス
https://pacificmall.localにアクセス
完了。
vagrant up
で出たエラーと対処
エラー1: プライベートIPアドレスの設定エラー
The IP address configured for the host-only network is not within the
allowed ranges. Please update the address used to be within the allowed
ranges and run the command again.
Address: 192.168.33.10
Ranges: 192.168.56.0/21
Valid ranges can be modified in the /etc/vbox/networks.conf file. For
more information including valid format see:
https://www.virtualbox.org/manual/ch06.html#network_hostonly
割り当てようとしたプライベートIPアドレスがVirtualBoxのホストオンリーネットワークで許可されたIPアドレスの範囲外だそうです。
調べてみるとVirtualBox 6.1.26
以降のバージョンで起こるようです。
エラーメッセージ通り、VirtualBoxの許可範囲を変えてもいいのですが、そもそも192.168.33.10
にこだわる必要もない気がしたのでVagrantfile
のほうを修正しました。
:
config.vm.network "private_network", ip: "192.168.56.10"
:
その上で、再度構築し直しました。
$ vagrant destroy
$ vagrant up
エラー2: なぜかタイムアウトする問題
Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.
If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.
If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.
If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.
よく分かりませんが、タイムアウトしてるのでタイムアウト時間を変更してくれとのこと。
いや、そうそうデフォルトでタイムアウトってしないと思うので、原因はタイムアウトじゃない気がします。
こりゃわからんとググってみると、Stackoverflowで同じような悩みの人が。
この中で要確認と思った点は2箇所
- BIOSの設定でVMを許可していない
- VirtualBox用にGUIモードを許可していない
とりあえず、BIOSの設定は確認して問題なしだったので、Vagrantfile
を以下のように修正
:
# コメントアウトを解除
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
end
:
これによりVirtualBoxは立ち上がり、VirtualBox上でのログインはできました。
が、新たに問題が起きましたので、まだまだ続きます。
エラー3: ホスト端末からSSH接続できない問題
$ ssh vagrant@pacificmall.local
ssh: connect to host 192.168.56.10 port 22: No route to host
Vagrantfile
で指定したIPアドレスでアクセスができません。
VirtualBox上ではログインできるので、VirtualBox内でIPアドレスを調べます。
[kusanagi]$ ip addr show
:
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> ..
inet 192.168.33.10/24 ..
:
なぜか1IPアドレスの設定ができていませんでした。
とりあえず、IPアドレスを変更したいので/etc/sysconfig/network-scripts/ifcfg-enp0s8
を編集。
:
IPADDR=192.168.56.10
:
ネットワークを再起動。
[kusanagi]$ su root service network restart
パスワード:
Restarting network (via systemctl): [ OK ]
[kusanagi]$ ip addr show
:
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> ..
inet 192.168.56.10/24 ..
:
OK
エラー4
上記3つを行っても、vagrant up
の途中でエラー2と同様のエラーになるため、Timeout問題は根本的には解決してません。
ちなみに、エラーが出るのはいつも以下を実行中なので、ssh接続時に何か起きているようです。
default: this with a newly generated keypair for better security.
いろいろ調べると、SSHの仕様で、キーペアのパーミッションが適切に設定されていないとエラーになるっぽいです。
というわけで、ディレクトリ(700)と公開鍵ファイル(600)のパーミッションを修正。
# 仮想マシンに接続
$ vagrant ssh
# 仮想マシン上でパーミッション変更
[vagrant]$ chmod 0700 ~/.ssh/
[vagrant]$ chmod 0600 ~/.ssh/authorized_keys
このあと、仮想マシンを一度シャットダウンして再読み込みしたらうまく行きました。
$ vagrant reload
WordPressにたどり着くまでになかなか手間取りました。
ミドルウェアからインストールしたほうが早いかもしれないですが、仮想化技術に触れておくのも大切ですね。
同じ問題に出会う人が何人いるかは分かりませんし、エラー→解決の組み合わせだけ載せるのでも良かったのですが、
エラー→(エラーメッセージ確認→原因仮定→修正→確認)→解決のプロセスの()の中が意外と僕のような凡庸なエンジニアや駆け出しの方々にとって重要かなと思って、記事にしてみました。
同じようなところで詰まった誰かの解決につながれば幸いです。
-
実際には、エラー4のせいで
vagrant up
が途中で転けていたからでした。 ↩