Vagrant でWebサーバ 〜 例えば、新入社員向の予習演習

はじめに

スマホのエンジニアを5年ほどしています。その前は10年くらいWebアプリケーションを作っていた私ですが

いまでもサーバ周リの設定をいじることがあります。

 

Android周りでいうと・・・

MIMEType

をapkとひもづけるところ。

サーバから、このapkってファイルはandroidのパッケージファイルなんだよーと伝える設定をしています。

 

が、いざかけるとなると、htaccessを使えない環境が昨今でてきました(といってもここ3、4年)

 

nginxってやつです。

 

動画をffmpegで変換して、HLSの動画配信とか特殊なことをしたくてやってみるより、通常運転的にやり方がわからない。

nginx版のXAMMPがない、と吐いていたら旧知からvagrantをお勧めされました。

 

(´・ω・`)コンテナ、Dockerとかもいる?

VagrantユーザのためのDocker入門 from Masashi Shinbara

起動か、起動の差か。

 

(1)ネイティブアプリの中でWebViewで表示する構成をローカルだけで完結したい

 →Webサーバ側の構築がまだ出来てない、ユーザ登録がまだみたいな時

 

(2)自分の開発環境のPATHやその他の環境変数に追加して汚したくない

 →開発環境とはいえ、他の開発案件に影響が出そうな変数設定は回避したい

 

(3)できれば、他の人にもまったく同じサーバ環境を共有したい

 →同じだけ環境構築に時間かけるの無駄じゃない?

 

こんな動機からVagrantでの環境共有を考えてみました。

 

仮想環境でのサーバ構築

VirtualBoxをいれて、Vagrantをいれて、OSを決める

文章にするととても簡単ですが、実際とても簡単です。

(1) VirtualBoxをダウンロード

https://www.virtualbox.org/wiki/Downloads

 スクリーンショット 2015-02-20 20.34.58

pkgファイルをクリックして、何事もなく完了。

 

(2)Vagrantをダウンロード

最新が1.7となっていますが、はまりどころが多いところが気になる方は1.6です。 

Old Versions からのダウンロードします。

スクリーンショット 2015-02-20 20.50.18

 

スクリーンショット 2015-02-20 20.39.26 

何事もなく完了。

 vagrant1.6からvagrant Cloudという名前で他の人が提供しているOSが使えるようになっています。

 https://atlas.hashicorp.com/boxes/search?utm_source=vagrantcloud.com&vagrantcloud=1

 スクリーンショット 2015-02-20 22.45.27 

ここからchef/centos-6.5を選びました。※ 使ってる人が多そうという理由

 TerminalにはVagrantfileが出来たことが表示されています。コンテンツをブラウザ経由で表示させるようにVagrantfileを編集します。

bootstrap.shを記述します。

 サーバを起動

 次のように表示され、コメントを外した設定も有効になっているようです。

 localhost:8080ポートからのリクエストはGuestOSのCentOSサーバ80ポートに転送されます

スクリーンショット 2015-02-20 23.37.46

 

おー、何もせずにここまで出来る!

スクリーンショット 2015-02-20 23.38.07

Webサーバのドキュメントルートを変更

 sshで接続しましょう。

共有フォルダはGuestOS側は次のところにあり、 host側はvagrant initを実行したフォルダになります。

ここにドキュメントルートを作る(scpするの面倒

bootstrap.shに書いたサーバ別のフォルダそれぞれを指定します。

 

/etc/nginx/conf.d/default.conf

 

 ここまでやってから、共有フォルダに設定変更後の設定ファイルを置いて

bootstrap.shに設定ファイルを cp とか mvとか書いておけばよかった、と気づきました。

そうしていたら、ssh以降の作業も不要。

 

(補足)HostOSでのアンインストール

Vagrant、VirtualBoxのどちらもアンインストールするときには

それぞれのインストールに使ったdmgファイルをマウントし、uninstall.toolをCommandを押しつつ”右クリック開く”で実行です。 

さいごに

・サーバとのAPIを介するデータIO

もそうなんですが、サーバ側がいらないアプリ作成って、ほぼない状態です。

アプリは入れ物、本体はサーバなところは基本的にずっとかわらないかも。

Macという環境でLinux的な使い方も多く、クライアントマシンでいろんなことをしているとSystemのディスク容量がとんでもなく圧迫されていることがあります。

共有するのと同じくらい、環境を捨てられるということも大事です。

●この記事を書いた人