SlideShare ist ein Scribd-Unternehmen logo
1 von 100
Downloaden Sie, um offline zu lesen
ローカル開発環境の構築をしよう
VirtualBox + Vagrant
株式会社oliva
知恵で世界を変えていく。
初めに
• 初心者向けです!
• VirtualBox、Vagrantを知っているけど、使ったことがない人
• いまいち仮想環境を構築するメリットがよく分かってない人
 
 そんな方にピッタリのスライドとなっています!
 それでは見ていきましょう!
自己紹介
• Kazuma Kimura(木村 和真)
 二匹の猫さまと暮らす
 システムエンジニア
• Twitter:@K_Makazu
• 所属:株式会社oliva
目的
• ローカル開発環境の作り方を知ってほしい
• ローカル開発環境をつくるメリットを知ってほしい
アジェンダ
• 開発環境あるある?
• Web3層構成を見てみよう
• VirtualBox + Vagrantの紹介
• 開発環境構築のデモ
• 開発環境あるある?解決編
アジェンダ
• 開発環境あるある?
• Web3層構成を見てみよう
• VirtualBox + Vagrantの紹介
• 開発環境構築のデモ
• 開発環境あるある?解決編
ローカル開発で
こんな経験ありませんか?
ローカル環境依存問題
俺のローカル環境だと動かない…orz
原因
• ソフトとか、ツールのバージョン違う
• 環境設定ファイルが違う
• Mac/WindowsなどのOS依存
• ディレクトリ構造が違う
etc.
ローカルPCにインストールしたソフトが
競合してうまく動かない
俺達の 80 Port は渡さないぞ!!
PC壊れた…
また一から環境構築だ…
うちの会社にいたような…(´・ω・`)
VirtualBox + Vagrantなら
解決しちゃいます
乞うご期待!!
アジェンダ
• 開発環境あるある?
• Web3層構成を見てみよう
• VirtualBox + Vagrantの紹介
• 開発環境構築のデモ
• 開発環境あるある?解決編
Webサー
バ
APサー
バ
DBサー
バ
インター
ネット
クライ
アント
静的コンテ
ンツ
動的コンテ
ンツ
データ
HTML・CS
S・JS
Java・PHP
Webサー
バ
APサー
バ
DBサー
バ
インター
ネット
クライ
アント
静的コンテ
ンツ
動的コンテ
ンツ
データ
HTML・CS
S・JS
Java・PHP
VirtualBox + Vagrant
仮想環境の構築
ローカルPC上の構成
• ローカルPCに仮想環境は複数作成するこ
とができる
• Box単位にVagrantfileが作成される
OS( Windows/Mac/Linux )
VirtualBox
OS(Box)
Web AP DB
Vagrantfile
192.168.33.10
OS(Box)
Web AP DB
Vagrantfile
192.168.33.11
アジェンダ
• 開発環境あるある?
• Web3層構成を見てみよう
• VirtualBox + Vagrantの紹介
• 開発環境構築のデモ
• 開発環境あるある?解決編
What’s VirtualBox?
• ライセンスフリーの仮想化ツール
• イメージは、PCの中にもう一つのPCを作
れるもの
• 開発元:Oracle
• 初版:2007/1/15
• 公式サイト:https://www.virtualbox.org/
What’s Vagrant?
• 仮想マシンを管理するツールで、構築や
共有を簡単に行うことができる
• 開発元:Mitchell Hahimoto
• Rubyで作られている
• 公式サイト:https://www.vagrantup.com/
VirtualBoxだけで構築はできる
Vagrantを使うといろいろ便利
アジェンダ
• 開発環境あるある?
• Web3層構成を見てみよう
• VirtualBox + Vagrantの紹介
• 開発環境構築のデモ
• 開発環境あるある?解決編
まずVirtualBoxで作ってみよう!
デモの流れ
• VirtualBoxのインストール
• 仮想マシンの作成
• 仮想マシンの起動
• 共有フォルダの設定
• Hello Worldを表示させてみる
VirtualBoxのインストール
• ダウンロードサイト
:https://www.virtualbox.org/wiki/Downlo
ads
• インストールは、特殊なことをしない限りデ
フォルトで進めればOK
仮想マシンの作成
• 仮想マシンの初期設定をする
• OSタイプの設定
• 仮想メモリの割当を設定
• ハードディスクの容量を設定
  etc..
仮想マシンの起動
• 起動に必要なCentOSをダウンロードして
くる
• ダウンロードサイト
:http://isoredirect.centos.org/centos/7/is
os/x86_64/CentOS-7-x86_64-DVD-170
8.iso
仮想マシンの起動
• OSの初期設定をする
• デフォルトソフトウェアの選択
• インストール先の設定
• ネットワークとホスト名の設定
  etc..
共有フォルダの設定
• ローカルPCの共有させたいフォルダを選
択
• Guest Additionsインストール
$ mkdir /media/cdrom
$ mount -r /dev/cdrom /media/cdrom
$ cd /media/cdrom/
$ ./VBoxLinuxAdditions.run
…
$ ls /media/sf_{共有フォルダ名}
ベースの構築はこれで完了!
ここまでざっと1時間くらい
ダウンロード/起動にやたら時間か
かった
ここからは好みの環境を!
Hello Worldを表示させてみる
• 言語:Java
• Webサーバ:Apache
• アプリケーションサーバ:Tomcat
とりあえず Yum Yum してインストール
を進めていく
• Java インストール
$ yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
…
$ java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
$ javac -version
javac 1.8.0_161
• Apache インストール
• Apache 起動
$ yum -y install httpd
…
$ httpd -version
Server version: Apache/2.4.6 (CentOS)
Server built: Oct 19 2017 20:39:16
$ systemctl start httpd
…
• Tomcat インストール
• Tomcat 起動
$ yum -y install tomcat
…
$ tomcat version
Server version: Apache Tomcat/7.0.76
Server built: Oct 30 2017 10:21:55 UTC
…
$ systemctl start tomcat
…
Firewallの設定も忘れずに!
• Firewallの設定
• Apache
• Tomcat
$ firewall-cmd --add-service=http --zone=public —permanent
$ firewall-cmd —reload
# デフォルトに設定がなかったので、tomcat.xmlを作成
$ vim tomcat.xml
$ firewall-cmd --add-service=tomcat --zone=public --permanent
$ firewall-cmd --reload
モジュールを配置していく
• Apache
• index.htmlの作成
• Tomcat
• sample.warをデプロイ
$ vim /var/www/html/index.html
———
<h1>Hello World</h1>
———
$ ls /usr/share/tomcat/webapps
sample
sample.war
さあ、Hello Worldを拝むときだ!
まずはApacheさんのHello World
アクセス!Enter!
よし、Hello World
\(^O^)/
次はTomcatさんのHello World
アクセス!Enter!
(; ・`ω・´)ナン…ダト!?
Apache → Tomcat連携の設定を忘
れていた・・・
Apache→Tomcatの連携を設定
• Apache <=> Tomcatの連携
• Apache
• Tomcat
# ProxyPassの追加 Apache -> Tomcat
$ vim /etc/httpd/conf.modules.d/httpd-proxy.conf
ProxyPass /sample/ ajp://192.168.33.10:8009/sample/
# httpd.conf Includeさせる
cat /etc/httpd/conf/httpd.conf | grep Include
Include conf.modules.d/*.conf
…
# 受口を設定 Apache -> Tomcat
$ cat /usr/share/tomcat/conf/server.xml
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
…
仕切り直し
アクセス!Enter!
ねこちゃん Hello
\(^O^)/
無事、Hello World 拝めた
でもなんか
結構大変だったな・・・
Vagrantに期待!
Vagrantを使ってみよう!
デモの流れ
• Vagrantのインストール
• Boxの追加
• 仮想マシンの初期化
• Vagrantfileの設定
• 仮想マシンの起動
Vagrantのインストール
• ダウンロードサイト
:https://www.vagrantup.com/downloads
.html
• インストールは、特殊なことをしない限りデ
フォルトで進めればOK
Boxの追加
• Boxとは、作成する仮想マシンのベースと
なるもの
• Box一覧:http://www.vagrantbox.es/
• 追加:vagrant box add {name} {url}
$ vagrant box add CentOS70
https://github.com/tommy-muehle/puppet
-vagrant-boxes/releases/download/1.1.0/
centos-7.0-x86_64.box
仮想マシンの初期化
• VirtualBoxの初期化:vagrant init {boxName}
• Vagrantfileが作成される
$ vagrant init CentOS70
A `Vagrantfile` has been placed in this directory. You are now
…
$ ls vagrant/CentOS70
Vagrantfile
Vagrantfileの設定
• Vagrantfileとは、仮想マシンの設定ファイル
• IPアドレスの設定追加
$ vim Vagrantfile
config.vm.network “private_network”, ip: “192.168.33.10”
仮想マシンの起動
• VirtualBoxを起動:vagrant up
• 起動されたか確認:vagrant status
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports…
…
$ vagrant status
Current machine states:
default running (virtualbox)
…
ベースの構築はこれで完了!
タイムは・・・
6分43秒
コマンドだけ見るとこれだけ
$ vagrant box add {boxName}
{box}
$ vagrant init {boxName}
$ vagrant up
確かに早いし、簡単だ!
でもこれだけか??
Vagrantの凄さはここからだ
Yum Yumとか、サービスの起動設定
とか、構築時に一回だけやるやつ
立ち上げたときにやってくれると嬉しい
コマンドをShellにして自動化
Vagrant up時にShellを実行
• VagrantfileにProvision用のShellを読み込むように設定を追加
• Shellを作成
$ vim Vagrantfile
Bconfig.vm.provision :shell, :path => “ファイル名"
…
$ vim provision.sh
sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
sudo yum -y install httpd
systemctl start httpd
sudo yum -y install tomcat
systemctl start tomcat
今の構築した状態を保存しておいて、
また作るときにベースとして使えたりし
たら嬉しい
パッケージ化してベース(Box)作成
Boxの作成
• Box作成:vagrant package
$ vagrant package
$ ls vagrant/CentOS70
package.box
Vagrantならリカバリーも簡単
環境リカバリー
• 削除→初期化→立ち上げる
• vagrant destroy
• vagrant init {boxName}
• vagrant up
アジェンダ
• 開発環境あるある?
• Web3層構成を見てみよう
• VirtualBox + Vagrantの紹介
• 開発環境構築のデモ
• 開発環境あるある?解決編
解決策はもう出て来てるが、
開発環境あるあるを解決してく
ローカル環境依存問題
俺のローカル環境だと動かない…orz
VatualBox + Vagrantなら
ローカル依存(環境差異)はない
ローカルPCにインストールしたソフトが
競合してうまく動かない
俺達の 80 Port は渡さないぞ
VatualBox + Vagrantなら
環境分離できる
PC壊れた・・・
また一から環境構築だ。。。
うちの会社にいたような…(´・ω・`)
VirtualBox + Vagrant + Boxインス
トール
10分あればできちゃう
まとめ
• 仮想化とか難しい気がしてたけどそ
んなに難しくなかった
• 構築も簡単なので、いろんな環境を
つくって見ようと思った
みなさんも是非作ってみてください!
木村 和真
DAT
E
AUTH
OR2018/5/8
ご静聴ありがとうございました
株式会社oliva
知恵で世界を変えていく。

Weitere ähnliche Inhalte

Was ist angesagt?

Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
cohama
 

Was ist angesagt? (20)

Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
Google Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサGoogle Cloud のネットワークとロードバランサ
Google Cloud のネットワークとロードバランサ
 
セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
 
Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~
 
Easybuggy(バグ)の召し上がり方
Easybuggy(バグ)の召し上がり方Easybuggy(バグ)の召し上がり方
Easybuggy(バグ)の召し上がり方
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ZynqMPのQEMU
ZynqMPのQEMUZynqMPのQEMU
ZynqMPのQEMU
 
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
Cgroupあれこれ-第4回コンテナ型仮想化の情報交換会資料
 
Takalab 勉強会#01 - Kali Linux 環境構築
Takalab 勉強会#01 - Kali Linux 環境構築Takalab 勉強会#01 - Kali Linux 環境構築
Takalab 勉強会#01 - Kali Linux 環境構築
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うか
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 

Ähnlich wie ローカル開発環境の構築をしよう VirtualBox + Vagrant

Osc spring cloud_stack20130223
Osc spring cloud_stack20130223Osc spring cloud_stack20130223
Osc spring cloud_stack20130223
Noriko Suto
 
Transnet.+ lunch mt #1
Transnet.+ lunch mt #1Transnet.+ lunch mt #1
Transnet.+ lunch mt #1
Ryota Tomomura
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
Makoto Kato
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
samemoon
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
 

Ähnlich wie ローカル開発環境の構築をしよう VirtualBox + Vagrant (20)

Vagrant入門以前
Vagrant入門以前Vagrant入門以前
Vagrant入門以前
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話
 
Osc spring cloud_stack20130223
Osc spring cloud_stack20130223Osc spring cloud_stack20130223
Osc spring cloud_stack20130223
 
Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化
 
Vagrant体験入門
Vagrant体験入門Vagrant体験入門
Vagrant体験入門
 
Transnet.+ lunch mt #1
Transnet.+ lunch mt #1Transnet.+ lunch mt #1
Transnet.+ lunch mt #1
 
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみよう
 
cloudstack devcloud
cloudstack devcloudcloudstack devcloud
cloudstack devcloud
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 
Docker on Vagrant
Docker on VagrantDocker on Vagrant
Docker on Vagrant
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Docker Machineを始めるには?
Docker Machineを始めるには?Docker Machineを始めるには?
Docker Machineを始めるには?
 
Real world rails
Real world railsReal world rails
Real world rails
 

ローカル開発環境の構築をしよう VirtualBox + Vagrant