Ikeda's Blog

Laravelでブログサイトを作る 04. 仮想環境の立ち上げ

主目的

Windows11環境で、VirtualBoxとvagrantを使えるようにする。

使用PC

acer Spin 5

事前にインストール済みのもの

Git for Windows
※コマンドを打つためにGit Bashが欲しくてインストールしています。

仮想化支援機構の有効化

BIOS起動

  1. スタートボタンを右クリックし、「設定」をクリックします
  2. 左メニューの「システム」を選択します
  3. 下の方にある「回復」をクリックします
  4. PCの起動をカスタマイズするの項目にある「今すぐ再起動」をクリックします
  5. 再起動するかを問われるので、「今すぐ再起動」をクリックします
    これで、再起動後にBIOSが立ち上がります。

設定変更

Advancedにある、「Intel VD○」をEnabledにします。
変更後、Escキーを押して設定を保存し、再起動します。

VirtualBox と Vagrant のインストール

VirtualBox

ダウンロードページ:https://www.virtualbox.org/wiki/Downloads
バージョンは、導入時の最新だった6.1.30です。
ダウンロードページから、Windows hosts(使用しているOS)を選択。
ダウンロード完了後、インストーラを起動し、案内に従えばインストール完了。

Vagrant

ダウンロードページ:https://www.vagrantup.com/
こちらは、導入時バージョン2.2.19です。
こちらも、ダウンロード後はインストーラからインストールします。

Vagrantを使って仮想環境立ち上げ

Boxの入手

Boxとは?

乱暴に言うと「OSのisoイメージ」みたいなもの。
CentOS7のBoxを使えば、CentOS7の仮想サーバを作れます。
当然ながら、環境構築したBoxを自分で作ることもできます。

Boxの追加

vagrant boxリストから使いたいOSのBoxを探し、取得します。
Searchにキーワードを入力すれば絞り込めるので、ProviderがVirtualBoxの、希望のバージョンのURLをこの後に使います。
一度追加すれば、以降は何度でも作れます。

コマンドはvagrant box add [URL] --name [名前(自由入力)]です。
例えば、CentOS7を使いたい場合は、Windows PowerShellを起動し、

vagrant box add CentOS7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

作業ディレクトリの作成とVagrantfileの起動

今回は、C:\workspace\blogで作業します。適宜読み変えて頂くようお願いします。

個人的な好みから、Git Bash(Git for Windows導入時に)で作業しています。

# [コメント]作業ディレクトリを作成し、そこへ移動
$ mkdir -p /c/workspace/blog
$ cd /c/workspace/blog

# [コメント]Vagrantfileの作成(初期化)
$ vagrant init CentOS7

# [コメント]起動
$ vagrant up
ここでエラーが出ました

SSH auth method: private keyのところで、以下のメッセージを出力して止まってしまいました。

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.

メッセージは、「タイムアウトしちゃったから、原因を特定して対処してね。正常なはず、って時はタイムアウト時間の設定値を伸ばしてね」ということ。
これが発生するのは、Windowsの場合はHyper-Vが有効になっている可能性が考えられます。
コマンドプロンプトを管理者権限で立ち上げます。

# [コメント] 現在の設定状況を確認します。「Auto」が表示される場合、有効な状態です。
> bcdedit /enum | find "hypervisorlaunchtype"
hypervisorlaunchtype    Auto

# [コメント] Hyper-Vを無効化します。
bcdedit /set hypervisorlaunchtype off

# [コメント] Windowsを再起動します。
> shutdown /r /t 0

# [コメント] 再起動後、もう一度設定状況を確認すると、きちんと無効になっています。
> bcdedit /enum | find "hypervisorlaunchtype"
hypervisorlaunchtype    Off

仮想サーバの確認

vagrant sshコマンドを利用して、SSH接続します。正常に接続できることをもって、起動確認とします。
なお、パスワードは「vagrant」です。

$ vagrant ssh
vagrant@127
127.0.0.1's password: 
Last login: XXX XXX XX XX:XX:XX XXXX from XXX.XXX.XXX.XXX
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$

確認環境の破棄

今回立ち上げた環境は、あくまで「仮想サーバを作れるか」を確認するためのものですので、今後は不要になります。
なので、破棄しておきます。

# [コメント] `Ctrl + D`でログアウト
[vagrant@localhost ~]$ Abgemeldet.
Connection to 127.0.0.1 closed.

# [コメント] 停止
$ vagrant halt

# [コメント] 破棄
$ vagrant destroy

プラグインインストール

今後使用することになるvagrantのプラグインをインストールします。

  1. vagrant-reload
    • 環境を自動構築する際に再起動を可能とするためのプラグイン
  2. vagrant-vbguest
    • ホストとゲストの、GuestAdditionsのバージョンを自動で合わせてくれるプラグイン
$ vagrant plugin install vagrant-reload
$ vagrant plugin install vagrant-vbguest