初心者がVagrantでローカル環境のサーバー構築してみた!

Vagrantの基本的な使い方をまとめてみました。

Vagrantってのは、VirtualBoxで作った仮想環境にサーバー構築するソフトです。

Vagrantを使う理由

ローカル環境の構築といえばMAMPやXAMPPが簡単だし、そっち使えばいいじゃんって人もいると思います。

しかし、Vagrantでローカルサーバーを作るメリットの方が大きいと僕は思います。

Vagrantを使えるようにしたほうが理由は主にこの3つです。

  • 本番と全く同じ環境を構築できる
  • 構築した環境を書き出して配布できる
  • インフラやサーバ周りのスキルアップができる

MAMPやXAMPPとの違い

MAMPやXAMPPというのはローカルでサーバーを構築するための一式が入ったツールです。

Vagrantは仮想環境にサーバーそのものを構築するソフトなので、実際にサーバーを操作するのと全く同じなのです。

ターミナルでサーバーに接続して操作をする必要があります。

今回Vagrantでやること

今回はVagrantを使って以下の内容をやっていきます。

  • vagrantの設定
  • centos7でサーバーを構築
  • apacheの設定
  • phpの設定
  • mysqlの設定
  • wordpressのインストール

vagrantの設定

Vagrantを使うには仮想環境を用意しなければいけません。

仮想環境はVirtualBoxをインストールするだけでOKです。

VagrantとVirtualBoxのバージョンが合わないと上手く動かないので、もしエラーが出た場合は両方とも最新版をインストールすると良いでしょう。

centos7でサーバーを構築

まず、Centos7のvagrant boxを持ってきます。

Vagrant Cloudというサイトでいろんな人がboxを配布していますが、今回はVagrant公式のCentos7を利用します。

$ vagrant box add centos/7

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

Enter your choice: 3

プロバイダーを聞かれるのでVirtualBoxを選択してください。

終わったらちゃんと追加できてるか確認してみましょう。

$ vagrant box list

一覧で表示されますので、「centos/7」がちゃんと入っていれば追加できています。

$ mkdir ~/vagrant/study
$ vagrant init centos/7

作成したstudyのディレクトリの中にVagrantfileが作成されていますので、コメントインしてipアドレスを有効化します。

config.vm.network "private_network", ip: "192.168.33.10"

次に「vagrant-vbguest」というプラグインを追加します。

Guest Additionsのバージョンが違う時に自動でアップデートしてくれるプラグインです。

僕も詳しくはわかりませんが、とりあえず入れておいた方が良いプラグインです。

$ vagrant plugin install vagrant-vbguest

Vagrantの起動させます。

$ vagrant up

無事に起動できたらサーバーに接続。

$ vagrant ssh

ここまで、特に問題がなければいろいろサーバーの設定をしていきます。

apacheの設定

apacheを設定すると。ipアドレスをブラウザに入力することでページが表示されるになります。

$ sudo su
# yum install httpd
# systemctl start httpd
# systemctl enable httpd

本来ならセキュリティ対策で、ファイアウォールを起動させて許可するプロトコルを設定しなければいけませんが、ローカルなのでファイヤウォールは起動させません。

ブラウザのurlにipアドレスを入力しApacheの「Testing 123..」ページが表示されればOKです。

ついでにvimもインストールしておきます。

# yum -y install vim-enhanced

vimはターミナルでファイルを編集できる高機能なエディタです。

ドキュメントルートを共有フォルダに設定

ここの設定はVagrant特有の設定です。

ローカルで作っているのに、Vagrantで作ったサーバーにファイルを毎回アップさせるのめんどくさいですよね。

なので、PCの作業しているディレクトリとVagrantで作ったサーバーを共有させます。

Vagrantfileのconfig.vm.synced_folderをコメントイン。

config.vm.synced_folder "/PCの方のパス設定", "/var/www/html", owner:"apache", group:"apache", mount_options: ['dmode=777','fmode=777']

サーバーのドキュメントルートがPCの設定したパスと同じになります。

ファイルの所有者やパーミッションの設定も後ろに記述しておきます。

ここもローカルでの設定になりますので、777にしておいた方が楽です。

SELinuxを停止する

共有フォルダを設定すると、どうしても403エラー(アクセス拒否)になってしまうのでセキュリティの設定を変更していきます。

enforcingをdisabledに変更。

# vim /etc/sysconfig/selinux

SELINUX=disabled

設定変更したらVagrantを再起動させます。

$ vagrant reload

ローカルサーバーのipアドレスにアクセスしてブラウザの内容が表示されるようになったら完成です。

ipアドレスではなくドメインで表示させる

ipアドレスでも問題はないのですが、わかりやすくするために自分で設定したドメインにアクセスすると、ローカルサーバーのipアドレスが表示されるように設定させます。

Vagrantのプラグインを利用してPCのhostsファイルを操作することで表示できるようになります。

hostsファイルを操作するプラグインはいくつかありますが、今回は「vagrant-hostsupdater」を利用します。

$ vagrant plugin install vagrant-hostsupdater

Vagrantfileにドメインを設定していきます。

config.hostsupdater.aliases = ["ドメイン1", "ドメイン2", "ドメイン3"]

Vagrant再起動。

$ vagrant reload

追加したドメインをバーチャルホストに設定したら表示されます。

# cd /etc/httpd/conf.d
# vim わかりやすい名前.conf

<VirtualHost *:80>
        ServerName ドメイン名
        DocumentRoot ドキュメントルート
</VirtualHost>

phpのインストール設定

CentOS7の公式リポジトリだとPHP5.4のパッケージが入っていて、古いので新しいPHPのリポジトリを追加します。

追加するためにEPELをインストールします。

# yum -y install epel-release

EPELを使ってPHP7のリポジトリを追加してインストール。

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# yum install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-mysqlnd php-pdo php-gd
# systemctl restart httpd

ちゃんとはインストールできたか確認します。

# php -v

mysqlの設定

CentOS7ではmysqlから派生したMariaDBのパッケージが標準となっているので、そのままインストールします。

# yum install mariadb-server
# systemctl enable mariadb
# systemctl start mariadb

rootユーザーのパスワードを設定して完了です。

# mysql_secure_installation

wordpressのインストール

wordpressのインストール方法については省きますが、データベースを作成し、バーチャルホストに設定したディレクトリにワードプレスを持ってくればインストールできます。

エラーが出た時は検索すればOK

Vagrantを使ってるとエラーが出ることがあると思いますので、その時はエラーメッセージを翻訳したり、検索したり、すれば解決策が見つかるでしょう。

ローカル環境なのでよくわからなくなったら、vagrant destroyで簡単に削除して、やり直すことができます。

ぜひ、Vagrantでいろいろ試してみてください。

サーバー周りの勉強になります。

正社員という奴隷制度に中指を立てるWebエンジニアです。PHPが得意。繋がれた鎖を断ち切るために、自由を取り戻すために、会社から独立するために、プログラミングスキルを磨く日々です。プログラミングと個人でもできるビジネスについて、情報発信しています。

詳しくはこちら