開発環境の整備(Vagrant+VirtualBox+CentOS7.6+PHP7.1)【#np2020】

vagrant.png


ローカルの開発環境として、Vagrantを使います。Macの方がセットアップ・運用共にが楽なんですが、Windowsでも問題なくできます。


概要


  • 使用OS:Windows 7
  • ゲストOS:CentOS 7.6
  • 仮想環境:Vagrant 2.2.2 + VirtualBox 6.0.0

手順


  1. VagrantとVirtualBoxをインストール
  2. CentOS7.6を追加してVagrant起動
  3. PHP 7.1をインストール


参考サイト

基本的には、こちらの記事を参考にさせていただきました。

Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する – Qiita
Windows上でVirtualBox+Vagrant+CentOSによる仮想環境構築 – Qiita

ただ記事と時差があるのか個別にハマったところも何点かあったので、それらについてはまた別の記事を参考にしています。




1. VagrantとVirtualBoxをインストール

最新版をダウンロードしてきてインストールするだけです。

Download – Vagrant by HashiCorp
Downloads – Oracle VM VirtualBox

執筆時点での最新バージョンは、Vagrantが2.2.2、VirtualBoxが6.0.0です。
どちらもインストール後に再起動が必要です。


Vagrantプラグインのインストール

こちらの記事を参考にしました。

vagrantの便利に使えるプラグイン6選 – Qiita

といってもインストールしたプラグインは以下の3つだけ。

  • vagrant-global-status
  • vagrant-omnibus
  • vagrant-vbguest

あとで必要を感じたら入れるかも知れません。Chefを使うための「vagrant-omnibus」と、Guest addtionのバージョンを自動的に合わせてくれる「vagrant-vbguest」はかなり重要です。



2. CentOS7.6を追加してVagrant起動

ゲストOSをVagrantに設定して起動します。ゲストOSをどこから探してくるかについては様々な情報がありますが、色々試して見た結果、ここで探すのが一番良いと思います。

Discover Vagrant Boxes – Vagrant Cloud

で、記事によっては「vagrant box add」でBoxを追加して……と書かれていますが、現行バージョンでは「vagrant init」コマンドでVagranfileを用意して、「vagrant up」するだけで自動的に取得して追加されます。Vagranfileの記述はこんな感じ。

config.vm.box = "centos/7"

「centos/7」が上で探したBox名。最新バージョンのCentOSに基づいて作成されているので、現在のバージョンはCentOS7.6になっています。


ネットワーク周りの設定

ここで割とハマりました。基本的には参考サイトにあるように、config.vm.networkをコメントアウトすれば良いんですが、そこで書かれているIPアドレスが、ネットワークアダプタの「VirtualBox Host-Only Network」と違っていると動きません。僕の場合、「VirtualBox Host-Only Network」が「192.168.56.1」になっていたので、Vagrantfileの設定は「192.168.56.10」にしています。

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


PowerShellのバージョンが古すぎるという警告が出る

「vagrant up」時にPowerShellのバージョンが古すぎるという警告が出ることがあります。警告ではバージョン3.0以上にしろといわれているのですが、Windows7ではデフォルトで2.0。なのでバージョンを上げる必要があります。Windows8以降では入れる必要は無いと思います。

参考にした記事はこちら。

Windows Power Shell をアップデート!Windwos7 に Power Shell 5.1をインストール | サイト構築日記

少々手間ですが、記事の手順に沿って実行すればOKです。


vagrant sshで接続出来ない

「vagrant ssh」とすると以下のエラーが出ることがあります(minttyの場合)

Pseudo-terminal will not be allocated because stdin is not a terminal.

以下の記事を参考にssh周りの設定を行うことで接続出来るようになります。

Windowsでのvagrant環境構築 – Qiita



3. PHP 7.1とApacheのインストール

Chefの設定

設定を書くのは面倒ですが、設定してしまえば楽です。ApacheもPHPもcomposerもChefに設定するだけでインストール出来てしまいます。すごい。

というわけでこちらの記事を参考に設定しました。

Vagrant+Virtualboxを使いWindows10上にCentOS7.3+php7+MySQL5.7の環境を構築する – Qiita

ちなみに後に「php-pdoがない」と怒られたので、その設定も追加しています。



終わりに

かなり駆け足でしたが、ここまで実行すればPHPが動くサーバが立ち上がります。サーバでゴニョる部分がほとんど出てこないですし、びっくりするくらい簡単。これならCUIにあまり慣れていない技術者でも出来るし、設定を別の環境に持って行けばそこで同じ環境を立ち上げることもできます。良い時代になったもんですねえ……素敵。