2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

KUSANAGI for Vagrantの構築で詰まったところ

Last updated at Posted at 2022-03-14

概要

元サーバサイドエンジニアですが、地方で活動するようになって、成果の説明がしやすいフロント側の必要性を感じてWordPressの勉強を始めようと思い立ちました。
そして『ビジネスサイトを作って学ぶ WordPressの教科書 Ver.5.x 対応版
の環境構築編でいくつか詰まったので、その詰まりポイントおよびその解決を残しておきます。
具体的には、Vagrantを使ってVirtualBox上でKusanagiというプライムストラテジー社提供のWordPress向けの仮想環境を構築しました。
Kusanagiを使うことで、WordPressに必要なデータベース、Webサーバ、PHP、等のミドルウェア環境の構築が省略できるみたいです。便利ですね。
で、実際に書籍の手順通りに進めていったところ、バージョンの違いによりいくつか躓きました。よくあることです。

記事構成

ざっくり、3部構成になってます。

  1. 実行環境
  2. 環境構築手順
  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

参考:Download 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にアクセス
wordpress_index.png
完了。


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にたどり着くまでになかなか手間取りました。
ミドルウェアからインストールしたほうが早いかもしれないですが、仮想化技術に触れておくのも大切ですね。

同じ問題に出会う人が何人いるかは分かりませんし、エラー→解決の組み合わせだけ載せるのでも良かったのですが、
エラー→(エラーメッセージ確認→原因仮定→修正→確認)→解決のプロセスの()の中が意外と僕のような凡庸なエンジニアや駆け出しの方々にとって重要かなと思って、記事にしてみました。
同じようなところで詰まった誰かの解決につながれば幸いです。

  1. 実際には、エラー4のせいでvagrant upが途中で転けていたからでした。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?