Infrastructure

【VirtualBox】VagrantCentOS環境を構築〜Nginxインストールまでをやってみた

インストール

Homebrew(パッケージ管理ツール)

Homebrewのインストールと初期設定を参考にしてください。

Homebrewをインストールして、brewコマンドとbrew caskコマンドを使えるようにします。

VirtualBox

先ほどインストールしたcaskでインストールしていきます。

$ brew cask install virtualbox

Vagrant

同じように、Vagrantもインストールします。

$ brew cask install vagrant
$ brew cask install vagrant-manager

仮想マシンのインストール場所の指定

仮想マシンのひな形がインストールされる場所を指定します。

デフォルトではユーザー名ディレクトリの直下に生成されるので、変更したい方は参考にしてください。

VirtualBoxのアプリを起動して、下記のように、設定を開きます。

次に、下記の仮想マシンフォルダーを編集します。

ぼくの場合、
デフォルトの/Users/yuya → /Users/yuya/virtualBox/VMs
に生成されるように指定しています。

vagrantで、boxをインストールした後でも変更できるので調べてみてください。

実際に環境構築に入る前に。

Virtualboxの仕組みは?

Virtualboxは、PC上に新たにOSを構築するための仮想マシンです。

世の中にOSは、CentOSやubuntu、windowsなどたくさんありますが、OSの指定方法には2つの方法があり、

・ネットワーク上に配布されているisoファイルをダウンロードする
・boxをインストールする

です。

Vagrantとは?

vagrantとは、仮想マシンの構築をvagrantコマンドVagrantfileを使って簡単に実行できるツールのことです。

Boxとは?

Boxとは、仮想マシンを作成する際に必要なOSのディスクイメージファイル等が入ったファイルの集まりで、仮想マシンのひな形みたいなものです。

Vagrantfileとは?

Boxを元に、initコマンドを実行すると生成される初期設定ファイルです。

このファイルの内容を元に、vagrantコマンドを用いて仮想マシンを起動(up)・停止(halt)を行います。

便利ツールをインストール

$ vagrant plugin install vagrant-vbguest

Vagrantで仮想マシンを構築

Boxをインストール

では、実際にboxをインストールしていきます。(boxURLは、ネットワーク上で配布されているboxを使用する場合のみ必要です。)

$ vagrant box add [box名] [boxURL]

$ vagrant box add centos/7

実行すると、以下のようにproviderが訊かれるので、virtualboxの3を入力します。

==> box: Loading metadata for box ‘centos/7’
box: URL: https://vagrantcloud.com/centos/7
This box can work with multiple providers! The providers that it can work with are listed below. Please review the list and choose the provider you will be working with.

1) hyperv
2) libvirt
3) virtualbox
4) vmware_desktop

Enter your choice:

以下のように表示されれば成功です。

==> box: Successfully added box ‘centos/7’ (v1905.1) for ‘virtualbox’!

boxのインストール場所は?

以下のコマンドで確認できます。

$ ls ~/.vagrant.d/boxes

>>> centos-VAGRANTSLASH-7

隠しファイルとして格納されています。

インストールしたboxを確認

vagrant box listでインストールされているbox(ひな形)を確認できます。

$ vagrant box list

bento/ubuntu-18.04 (virtualbox, 201910.20.0)
centos/7           (virtualbox, 1905.1)

追加したboxを用いてインスタンスを作成

initコマンドでカレントディレクトリに、centos7を元に、Vagrantfileが生成します。

$ vagrant init centos/7

成功すると、以下のように表示されます。

>>> A `Vagrantfile` has been placed in this directory. You are nowready to `vagrant up` your first virtual environment! Please readthe comments in the Vagrantfile as well as documentation on`vagrantup.com` for more information on using Vagrant.

これでVagrantfileが作成され、CentOS7のインスタンスが生成しました。Vagrantfileとは?

vagrantで起動・SSHログイン・停止

upコマンドは、カレントディレクトリ内のVagrantfileを読み込んで、仮想マシンを作成・起動します。

場所は、はじめに設定した仮想マシンフォルダーにファイルが生成します。

$ vagrant up

仮想マシン内にSSHでログインします。

$ vagrant ssh

仮想マシンを停止します。

$ vagrant halt

補足:インスタンスごとにVagrantfileを管理したい人

以下のようなディレクトリ構成

ユーザー名/virtualBox
└── vagrant_files
    ├── centos7_test
        └── Vagrantfile
├── VMs
│   └── centos7_test_default_1572671397456_36699
│       ├── Logs
│       │   └── VBox.log
│       ├── centos-7-1-1.x86_64.vmdk
│       ├── centos7_test_default_1572671397456_36699.vbox
│       └── centos7_test_default_1572671397456_36699.vbox-prev

少し解説します。あくまで僕のディレクトリ構成なので、好きなように自分で設定できます。

僕の場合、virtualBoxというディレクトリを作成して、その中に、

vagrant_filesディレクトリ → 作成した仮想マシンごとにVagrantfileを管理する

VMsディレクトリ  → Vagrantfileに従って、作成された仮想マシンを格納(vagrant upで作成したタイミングで生成されます)

を作成しています。

$ mkdir centos7_test

$ cd centos7_test

ここまでで、カレントディレクトリがcentOS7になっていると思います。

このディレクトリ内のVagrantfileに従って、仮想マシンの起動、停止などを行っていきます。

Nginxをインストール

リポジトリを追加

Nginxは、OSS(オープンソース)として公開されているので、nginx公式リポジトリ情報を追加します。

やることとしては、ファイル/etc/yum.repos.d/nginx.repoを作成して、nginx公式リポジトリ情報を記述します。

touchコマンドなどでファイルを生成してもいいですが、viコマンドでファイルの生成もやってくれるので楽です。

$ sudo vi /etc/yum.repos.d/nginx.repo

vimでファイルが開かれていると思うので、iでinsertモードにして以下を追加してください。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

できたら、escを押して、:wqで保存・終了します。

yumコマンドでインストール

$ export LC_ALL=C

$ sudo yum install nginx

インストールできたら、以下のコマンドで確認してみましょう。

$ nginx -v

nginx version: nginx/1.16.1

参考記事

RedHat系Linux → CentOS:パッケージ管理は、yumコマンド

Debian系Linux → ubuntu:パッケージ管理は、apt-getコマンド

MacOS(Linux):パッケージ管理は、Homebrewでbrewコマンド

COMMENT

メールアドレスが公開されることはありません。