VagrantとVirtualBoxによるローカルの開発環境設定の覚え書き

posted in: Make, Programming, Technology | 0
はてなブックマーク

ローカル環境立ち上げを行おう!

記事のトピック

 本エントリーはVagrantとVirtual Boxを用いたローカルの開発環境構築のための覚え書きです。基本的にはドットインストールのサイト様に乗っているローカル開発環境構築のコースに沿っていますが、バージョンが変わっていたりしたため、幾つかハマりポイントがありました。ちなみに私の場合、途中でマックが故障するというトラブルに見舞われたため、幸か不幸かMac、Windowsの両方でひと通りのセットアップを行い、それぞれで微妙な差がありました・・・・

 また、このコースを理解するために他のコースの内容を把握することが望ましいのですがどこから手をつけていいか迷いました。私は完全に素人ですが今回四苦八苦しながらなんとかローカル開発環境の立ちあげを行うことができました。私の様な完全に初めての方がローカル開発環境を整えるまでのおすすめの進め方を残したいと思います。

(当方初心者のため、文書中に間違いがある可能性がございます。あくまでご参考程度で自己責任の元ご参照ください。)

こんな人におすすめ

  • これからwebアプリケーションを開発したいのでローカル環境を立ちあげたい
  • どこから手をつけてよいのかわからない
  • Unixコマンド?なにそれ?な人
  • ドットインストールのローカル開発環境コース通りに進めたが途中でハマった人
  • 最新バージョンじゃなくてもよいので、とにかくまずはHello Worldまでいきたい人

 

目次

今回の記事の主な内容です。必要に応じてご参照ください。

  1. ローカル開発環境セットアップのモチベーション
  2. 必要なソフトのセットアップ手順
  3. 必要知識を獲得しよう!
  4. Vagrant up と SSH 接続までのはまりポイント
  5. 再接続時の手順
  6. まとめ

1. ローカル開発環境セットアップのモチベーション

皆で使える分析ツールを作りたい

 

留学先では現在インタビューの結果から情報を抽出し、そこからインサイトを得るための作業を行っています。今回のプロジェクトはかなり期間が長いためこのインサイトを得るために多くのインタビューを行っています。

 しかし、一回のインタビューでの情報量が多いため、ビデオ等の内容を分析する際にどの様に情報を抽出するか、そしてそれを共有したり、異なるインタビューから抽出した内容をどの様に結びつけるか等の課題が生じています。

 今回だけでしたら手作業のごり押しでいいのでしょうが、今後も各プロジェクトでこの様な作業を繰り返すことになる事が予想されます。この情報抽出、インサイトの獲得までのワークフローをより効率的に行いたいということで皆で使えるwebアプリケーションの立ちあげを行う事にしました。(育休等で自宅で作業される方もいるため。)

なぜローカル開発環境を立ち上げるのか

 上の様な背景でweb上にアプリケーションを実装し、利用できるようにしたいと考えました。実際には今回必要とされている機能だけを手にいれたい場合はAccessだとか、Dropbox + Excel VBA等を利用する。

 CMSソフトを活用する・・・・等、色々な手段が考えられるかと思います。私達の場合は今後の機能拡張性、同じ機関以外のメンバーとの共同作業等の可能性も踏まえて、web上に形成することにしました。(あとは、最近盛り上がっているこの分野を勉強してみたいというのも大きなモチベーションです・・・)いきなりサーバー上にアップロードする前にやはりローカルの環境でテストしたいと思い調べたのが今回のきっかけでした。

2. 必要なソフトのセットアップ手順

ゴールイメージ

 はじめに今回の記事で目指しているゴールイメージを共有します。

 自分のPC上で仮想サーバーを起動し、SSH接続を行う。ローカルのファイルを仮想サーバー上にアップロードし、その内容をブラウザ上で閲覧できる。


スクリーンショット 2014 09 28 13 07 53最終ゴール時の状態

 

全体の流れ

 続いて具体的な手順を説明します。

 とてもわかり易いのが下のドットインストール様のコンテンツです。基本的にはこの動画に従って進めていくことになります。

ローカル開発環境の構築 (全13回) - プログラミングならドットインストール
ローカル開発環境の手順を動画付きでわかりやすく解説してくださっています。

必要ソフトのセットアップ一覧

 ここではローカル開発環境構築にあたり必要なソフトウェアの具体的なセットアップ方法を共有します。

下の流れで紹介します

  • はじめに
  • Vagrant
  • Virtual Box
  • Hoster
  • FileZilla
  • MinGW

 上の動画をみていくと私の様な初心者次の様な状態になるかとおもいます。

「動画で入力しているターミナルコマンドの入力の意味がよくわからない・・・」

 この状態を避けるために、他の知識を学ばなくてはいけないのですが、どこから手をつければよいかまた迷うかとおもいます。

 ありがたい事にこの点についてドットインストール様が素晴らしいコンテンツを用意してくれています。(詳細は後述します。)

まずは必要なソフトをダウンロードしましょう。そしてこのダウンロードはそこそこ時間がかかるので、「同時に手順2の必要予備知識を獲得しよう!」を進めてしまいましょう。

Vagrantのダウンロード

 


スクリーンショット 2014 09 28 13 29 10

Image via Vagrantup.com

 

 仮想サーバーの環境設定、立ちあげ、接続等を簡単にしてくれるソフト。下のVirtual Box等の仮想化ソフトウェアと一緒に使います。

 下の公式ページよりダウンロードができます。しかし、ここで1点はまりポイントがありました。普通にダウンロードするとVagrantのバージョンが最新の1.6.5(2014年9月27日時点)になります。

 しかし、このバージョンのVagrantと最新のVirtual Boxを組み合わせた際に私の場合はおかしな事が起こりました。Hello Worldまではいくのですが、一度Vagrantを停止し再起動するとSSH接続ができない・・・という現象に陥りました。エラーメッセージを元に海外のQ&Aとかを色々と見ていると次の様な記述を見つけました。

 

1.6.5は幾つか不具合がでており、古いバージョンのVagrantを導入することで治った

 

 ということで私もVagrantのバージョンを1.5.4にしたところ不具合が消えました。ここだけで4時間くらいハマりました・・・・

 皆さんもとりあえず動作を確認すれば良いという場合はこのバージョンのダウンロードをおすすめします。

Vagrantの最新版は環境によっては不具合がでる場合がある。もし上手く動かなかった場合はVer 1.5.4を使用してみましょう!
Vagrant
Vagrantの公式ページ/ここからVagrantをダウンロードしよう

 

 Vagrantについてより詳しく知りたい方は、下のページが非常にわかりやすくまとまっております。

 

VirtualBoxのダウンロード

 続いて仮想化ソフトウェアのVirtual Boxをダウンロードします。こちらはOracleから無料で配布されております。


VirtualboxImage via virtualbox.org

 

下のページよりダウンロードすることが可能です。お使いのPCの条件に合わせてダウンロードしましょう。

Downloads – Oracle VM VirtualBox
Virtual Boxのダウンロードページ

 

Host編集ツールのダウンロード

 ここはローカル開発環境ページをIPアドレス指定ではなく、ドメイン指定したい場合に行います。hostsの編集を行えるソフトを用いると簡単に設定できるのでこちらもダウンロードしておきましょう。

 Macの場合はドットインストールに従いhoster

RedWinder::MacApp::Hoster
Macのhost編集ツール Hoster

 

 Winの場合は下のHosts file manager 等のソフトを使われるとよいとおもいます。

Hosts File Manager

 

Software Factory/ フリーウェアのHosts File Managerをダウンロードできます。

ファイル転送ソフト FileZilla

 このパートはお使いのファイル転送ツールを利用されると良いかと思います。ファイルをPC上の好きなエディタで編集したあと、仮想サーバーに転送するために利用します。もし特に利用しているものやこだわりがなければ、こちらもドットインストールの動画にならいFileZillaをダウンロードしておきましょう。

FileZilla - The free FTP solution
ファイル転送ソフト/ FileZillaの公式ページ

Windowsのターミナル環境設定

 こちらはWindowsを使われている方のみになります(Macの場合はターミナルで使えるため)。Windowsのターミナル環境を整える意味でもこの段階でセットアップしてしまいましょう。

Windowsで最高のターミナルを構築する方法 - 純粋関数空間
Windows環境で快適なコマンドライン操作を可能にするTips/MinGWのダウンロード法なども記載されています。

 さて、ここまでできれば基本的な準備はOKです!

3. 必要な知識を獲得しよう!

それではダウンロードしている間にドットインストールの動画コンテンツから次の内容を学習しておきましょう。もちろん知っている内容はSkipで大丈夫です!

UNIXコマンド

 これはドットインストールの動画を理解するために必要になる知識です。基本的にターミナルコマンドで進めていくので私の様にUNIXコマンドになれていない人はぜひ下のコースをひと通りみておきましょう。

UNIXコマンド入門 (一般ユーザー編) (全16回) - プログラミングならドットインストール
UNIXコマンド入門(一般ユーザー編)

 詳しくは上の動画を見ていただくとして、特によく利用する基本コマンドだけこちらに載せておきます。必要に応じてご参照ください。

ローカル環境設定時によく利用するUNIXコマンド

pwd 現在のディレクトリを表示
cd [ディレクトリ] [ディレクトリ]に移動
cd .. 1つ上のディレクトリに移動
ls 現在のディレクトリのアイテムを表示
mkdir [ディレクトリ] [ディレクトリ]を作成
rm [ファイル名] [ファイル]を
rm -r [ディレクトリ] [ディレクトリ]とその中身を削除
vi [ファイル名] vim(後述)によりファイルを作成、または編集

Vim

 Vimはターミナル上で起動できるエディタソフトです。設定ファイルの内容をターミナル上で素早く編集したりする際に便利です。こちらもなかなかディープな世界な感じです。

 基本操作については下のドットインストール様のコースで学べるはずです。こちらのコースをみておけばローカル環境設定ビデオ中のVim操作は問題なく解るかとおもいます。

vim入門 (全18回) - プログラミングならドットインストール

UNIX系のOSで使える高機能なエディター,Vimの使い方解説

(Windowsの方も上のインストールでMingGWをインストールしておけばvimを使用できます。)

その他

 ドットインストールでは他にもVagrantのコース等が推奨されていますがひとまずは上の2つを見ておけば十分かと思います。

 それではいよいよセットアップを進めましょう。

4. Vagrant up と SSH 接続までのはまりポイント

 さて、ここからがいよいよローカル環境のセットアップです。基本的にはドットインストール様のローカル開発環境セットアップのコース通りなのですが、いくつか自分がはまった点についてご紹介します。

Boxダウンロード時の注意点

まず最初にターミナルを立ちあげた後は、Vagrantがきちんとインストールされているか確認しましょう。

$ vagrant -v			//入力
Vagrant 1.X.X

となればきちんとVagrantが導入されています。

 続いて仮想環境のパッケージをダウンロードします。

 ドットインストールの動画ではCent OSを入れているので、それをトレースしてみましょう。下のサイトでCent OSのBoxがダウンロード可能です(ProviderがVirtualBoxとなっているものを選びましょう。)

A list of base boxes for Vagrant - Vagrantbox.es
Vagrantで利用するBoxのダウンロードサイト

 ここのダウンロードで少し注意が必要です。現時点(2014年9月28日時点)ではCent
OS7.0のバージョンが最新です。しかし、7.0をダウンロードすると、後の方の設定でドットインストールが利用している一部のコマンドが使用できなくなっています(service等)。

 この場合は代わりにsystemctlのコマンドとかyumを利用してiptables-servicesをインストールすればできるみたいです(詳しくは下のURLを参照)。私は当初は何も知らずCentos7.0で進めてこの問題を解決しようとしていたのですが、ここで悲劇が起こります。

 Macが強制シャットダウンになり、起動できなくなる・・・・(普通に壊れる)\(^o^)/

 ということでこの問題を本質的に解決する前に再度Windowsで再設定をする事になりました。二回目ではこの問題を回避したかったのでCentOS 6.4のパッケージをダウンロードしました。

 ボックスのダウンロードは次の様に入力しましょう。

$ vagrant box add {box名} {URL}

すると自動でダウンロードがはじまります。

 ダウンロードが終了したらきちんとBOXが入っているか確認してみましょう。

$ vagrant box list

 と入力して先ほどのBOX名が表示されていればOKです。


Vagrantで導入するBoxはCentOS 6.4以前のバージョンを利用すれば、ドットインストールの動画と同様の方法でセットアップすることができます。また使用しているOSのバージョンが32bitか64bitか注意しましょう。ここでは特に躓かずに進めますが、後のSSH接続のところでカーネルエラーがでてしまいました。(解決手段はあるのかもしれませんが・・・)

Vagrant Up までの手順

 続いてVagrantにより仮想サーバーを起動するところまで進めていきます。はじめに初期化を行います。

$ vagrant init {box名}
$ ls		//Vagrantfileが形成されていればOK

 と入力すればOKです。成功するとVagrantfileという名前のファイルが作成されます。lsコマンドで確認しましょう。

 Vagrantで仮想サーバーを起動する前にこのVagrantfileの中身をVimを用いて一部修正していきます。この手順はドットインストールの動画ではIPアドレスの部分を有効化するだけでしたが、私はこの後のvagrantの起動時につまづいてしまいました(タイムアウトが起こる・・・)。

 この際に色々と調べていたら下のサイトがとても良い方法を提案されていました。

vagrant up で Error: Connection timeout. Retrying... - 理系学生日記
理系学生日記

 config.vm.provider "virtualbox" do |vb|
 vb.gui = true
 end

 この部分をVagrantfileの文末に加えることでVirtual Boxによるサーバーの起動の様子をみることができるようになります。

 さてここまで進んだら実際に起動してみましょう。やり方は次のコマンドを入力するのみです。

$ vagrant up

 ここで私の場合は最初起動しませんでした。どうやらサーバーが起動できていない様子。
結局この原因はIntelの64bit用の仮想化システムIntel VTがOFFになっていた事が原因だったみたいです。

31.12. BIOS 内で、Intel VT と AMD-V の仮想化ハードウェア拡張を有効にする

BIOS内でIntel VTとAMD-Vの仮想化ハードウェア拡張を有効にする

 BIOSの起動方法などはメーカーによって異なるので各自調べてみてください。私はVaio proを利用していたのですがBIOS起動がAssitボタンによる起動というイレギュラーであったためここでも少しはまりました・・・

 ここで問題なくVagrant upが成功したら、いよいよ自分のPCからつないでみましょう。

& vagrant ssh

この様に入力してvagrant@localhost ~ となれば成功です。

 この後は基本的にドットインストール様の動画通りでHello Worldまで辿り着くことができました。。(正確には上に述べたVagrantのバージョンの罠にはまり一度ログアウトするたびに接続できなくなりましたが・・・・) 切断や再起動時の操作を最期に簡単に紹介したいとおもいます。

5. 再接続時の手順

 さて切断や再接続時の手順について紹介します。

 はじめにvagrantで起動した仮想サーバーから元の端末にもどるには次の様に入力しましょう。

$ exit
Connection to 127.0.0.1 closed.

 2行目の様に表示され、ターミナルの表示が初期位置に戻っていればログアウトは無事に成功しています。

 このままだとサーバーは起動したままなのでVirtual BoxのGUIかターミナルによって必要な操作を行います。主な操作を下に記載します。

vagrant up 起動
vagrant ssh 接続(起動していないときだとエラーになります)
vagrant suspend 保留する。再開がすぐにできるみたいです。RAMの消費も止まります
vagrant resume suspendから再開する場合に使用します。(Vagrant upでもOKみたいです)
vagrant halt シャットダウンします。再開には多少時間がかかります。

 

他にもコマンドは色々とあるので必要に応じて下のサイトをご参照ください。

コマンドライン | Vagrant日本語ドキュメント
Vagrant日本語ドキュメント コマンドライン一覧
 

6. まとめ

 VagrantとVirtual Boxを用いたローカル環境設定の方法を振り返りました。環境の違い等によりはまる箇所はそれぞれ違うかもしれませんが、少しでも参考になれば幸いです。

 基本的につまったらエラーメッセージやログファイルを元に検索してみるのがよいかとおもいます。世の中同じ問題にはまっている人は結構多いみたいです。今回の記事という形で助けてくださった多くの皆様ありがとうございました。

 やっとスタートラインにたった段階ですが、楽しみながらプログラミングも少しずつ勉強していきたいと思います。

 

 

<a href="http://px.a8.net/svt/ejp?a8mat=2HHY0T+D9HNXU+50+2HST69" target="_blank">
<img border="0" width="728" height="90" alt="" src="http://www21.a8.net/svt/bgt?aid=150323069802&wid=001&eno=01&mid=s00000000018015083000&mc=1"></a>
<img border="0" width="1" height="1" src="http://www16.a8.net/0.gif?a8mat=2HHY0T+D9HNXU+50+2HST69" alt="">

記事の更新をFacebookでチェック!


はてなブックマーク

Leave a Reply