SlideShare ist ein Scribd-Unternehmen logo
1 von 58
2014/04/24 shin1x1
DevLOVE関西
Vagrant 体験入門
ハンズオン準備
(c) 2014 Masashi Shinbara @shin1x1
USBメモリから
ファイルコピー
(c) 2014 Masashi Shinbara @shin1x1
Vagrantで作るPHP開発環境
http://www.slideshare.net/shin1x1/xampp-mamp-vagrant-php
(c) 2014 Masashi Shinbara @shin1x1
Vagrantで作るPHP開発環境[実践編]
http://www.slideshare.net/shin1x1/vagrant-php
(c) 2014 Masashi Shinbara @shin1x1
VagrantX
http://shin1x1.github.io/vagrantx/
(c) 2014 Masashi Shinbara @shin1x1
Web開発あるある
エンジニアSさん
(c) 2014 Masashi Shinbara @shin1x1
• Macbook Air で開発
• Apache / PHP / DB
• 複数案件を一台で
エンジニアSさん
(c) 2014 Masashi Shinbara @shin1x1
1162 <VirtualHost *:80>!
1163 ServerName candycane.local!
1164 DocumentRoot "/Users/shin/sandbox/demo/candycane/app/webroot"!
1165 </VirtualHost>!
1166 !
1167 <VirtualHost *:80>!
1168 ServerName demo.local!
1169 DocumentRoot "/Users/shin/sandbox/demo/20140601_phpcon"!
1170 php_value vld.active 1!
1171 </VirtualHost>!
1172 !
1173 <VirtualHost *:80>!
1174 ServerName evememo.local!
1175 DocumentRoot "/Users/shin/work/1x1/evememo/app/webroot"!
1176 </VirtualHost>!
1177 !
1178 <VirtualHost *:80>!
1179 ServerName kusaon.local!
1180 DocumentRoot "/Users/shin/work/kusaon/app/webroot"!
1181 </VirtualHost>!
エンジニアSさん
(c) 2014 Masashi Shinbara @shin1x1
1162 <VirtualHost *:80>!
1163 ServerName candycane.local!
1164 DocumentRoot "/Users/shin/sandbox/demo/candycane/app/webroot"!
1165 </VirtualHost>!
1166 !
1167 <VirtualHost *:80>!
1168 ServerName demo.local!
1169 DocumentRoot "/Users/shin/sandbox/demo/20140601_phpcon"!
1170 php_value vld.active 1!
1171 </VirtualHost>!
1172 !
1173 <VirtualHost *:80>!
1174 ServerName evememo.local!
1175 DocumentRoot "/Users/shin/work/1x1/evememo/app/webroot"!
1176 </VirtualHost>!
1177 !
1178 <VirtualHost *:80>!
1179 ServerName kusaon.local!
1180 DocumentRoot "/Users/shin/work/kusaon/app/webroot"!
1181 </VirtualHost>!
溢れる
VirtualHost
とある開発チームA
(c) 2014 Masashi Shinbara @shin1x1
• チームで開発
• Macbook / Windows で開発
• Apache / PHP / DB
とある開発チームA
(c) 2014 Masashi Shinbara @shin1x1
あれ?動かない。

何か変なコード書いた?
こっちは動いてるよ。
拡張追加しないとダメだよ。
とある開発チームA
(c) 2014 Masashi Shinbara @shin1x1
あれ?動かない。

何か変なコード書いた?
こっちは動いてるよ。
拡張追加しないとダメだよ。
俺の環境では動く
とある開発チーム新人Cさん
(c) 2014 Masashi Shinbara @shin1x1
ここの手順で開発環境を
構築しておいて。
わかりました!
(c) 2014 Masashi Shinbara @shin1x1
# tar xvzf postgresql-8.3.9.tar.gz!
# mv postgresql-8.3.9 /usr/local/src!
# cd /usr/local/src/postgresql-8.3.9!
# ./congure {prex=/usr/local/pgsql!
# gmake && gmake install!
!/usr/local/pgsql/lib/pgxs/cong/install-sh!
/bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs!
/usr/local/pgsql/lib/pgxs/cong/mkinstalldirs!
!gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'!
PostgreSQL installation complete.!
!# .bash prole!
# Get the aliases and functions!
if [ -f ~/.bashrc ]; then!
.!
~/.bashrc!
!# User specic environment and startup programs!
PATH=$PATH:$HOME/bin!
PATH=$PATH:/usr/java/jdk1.5.0 21/bin!
export PATH!
unset USERNAME!
export JAVA HOME=/usr/java/jdk1.5.0 21/!
export CATALINA HOME=/usr/local/tomcat!
export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib!
export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"!
!# tar xvzf postgresql-8.3.9.tar.gz!
# mv postgresql-8.3.9 /usr/local/src!
# cd /usr/local/src/postgresql-8.3.9!
# ./congure {prex=/usr/local/pgsql!
# gmake && gmake install!
!/usr/local/pgsql/lib/pgxs/cong/install-sh!
/bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs!
/usr/local/pgsql/lib/pgxs/cong/mkinstalldirs!
!gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'!
PostgreSQL installation complete.!
!# .bash prole!
# Get the aliases and functions!
if [ -f ~/.bashrc ]; then!
.!
~/.bashrc!
!# User specic environment and startup programs!
PATH=$PATH:$HOME/bin!
PATH=$PATH:/usr/java/jdk1.5.0 21/bin!
export PATH!
unset USERNAME!
export JAVA HOME=/usr/java/jdk1.5.0 21/!
export CATALINA HOME=/usr/local/tomcat!
export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib!
export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"!
とある開発チーム新人Cさん
(c) 2014 Masashi Shinbara @shin1x1
# tar xvzf postgresql-8.3.9.tar.gz!
# mv postgresql-8.3.9 /usr/local/src!
# cd /usr/local/src/postgresql-8.3.9!
# ./congure {prex=/usr/local/pgsql!
# gmake && gmake install!
!
/usr/local/pgsql/lib/pgxs/cong/install-sh!
/bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs!
/usr/local/pgsql/lib/pgxs/cong/mkinstalldirs!
!
gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'!
PostgreSQL installation complete.!
!
# .bash prole!
# Get the aliases and functions!
if [ -f ~/.bashrc ]; then!
.!
~/.bashrc!
!
# User specic environment and startup programs!
PATH=$PATH:$HOME/bin!
PATH=$PATH:/usr/java/jdk1.5.0 21/bin!
export PATH!
unset USERNAME!
export JAVA HOME=/usr/java/jdk1.5.0 21/!
export CATALINA HOME=/usr/local/tomcat!
export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib!
export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"!
とある開発チーム新人Cさん
これやるの・・・
(c) 2014 Masashi Shinbara @shin1x1
# tar xvzf postgresql-8.3.9.tar.gz!
# mv postgresql-8.3.9 /usr/local/src!
# cd /usr/local/src/postgresql-8.3.9!
# ./congure {prex=/usr/local/pgsql!
# gmake && gmake install!
!
/usr/local/pgsql/lib/pgxs/cong/install-sh!
/bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs!
/usr/local/pgsql/lib/pgxs/cong/mkinstalldirs!
!
gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'!
PostgreSQL installation complete.!
!
# .bash prole!
# Get the aliases and functions!
if [ -f ~/.bashrc ]; then!
.!
~/.bashrc!
!
# User specic environment and startup programs!
PATH=$PATH:$HOME/bin!
PATH=$PATH:/usr/java/jdk1.5.0 21/bin!
export PATH!
unset USERNAME!
export JAVA HOME=/usr/java/jdk1.5.0 21/!
export CATALINA HOME=/usr/local/tomcat!
export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib!
export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"!
とある開発チーム新人Cさん
しかも動かない!
とある開発チーム新人Cさん
(c) 2014 Masashi Shinbara @shin1x1
あ、あの手順の後、
○○を☓☓して、△△も入れておいて
はあ
とある開発チーム新人Cさん
(c) 2014 Masashi Shinbara @shin1x1
あ、あの手順の後、
○○を☓☓して、△△も入れておいて
はあ
スタートラインは
どこだ
WebデザイナーBさん
(c) 2014 Masashi Shinbara @shin1x1
• WordPressのデザイン
• XAMPPをインストール
• でもなんだか動かない。。。
(c) 2014 Masashi Shinbara @shin1x1
WebデザイナーBさん
(c) 2014 Masashi Shinbara @shin1x1
WebデザイナーBさん
Port 80 は
俺のモノ
そこでVagrant
(c) 2014 Masashi Shinbara @shin1x1
Vagrant?
(c) 2014 Masashi Shinbara @shin1x1
Vagrant?
(c) 2014 Masashi Shinbara @shin1x1
軽量で、再現可能かつポータブルな
開発環境の構築、設定を行う
独立した環境
(c) 2014 Masashi Shinbara @shin1x1
• 仮想環境を使った、独立した環境
• ホストに影響が無い
• プロジェクト毎にクリーンな環境
再現が可能
(c) 2014 Masashi Shinbara @shin1x1
• 構築手順をコードで記述
• コードに添って自動構築
• 全く同じ環境を再現可能
ポータブル
(c) 2014 Masashi Shinbara @shin1x1
• 構築手順コードがあればどこでも構築
• チームで同じ環境を各PCに構築
• コマンド一つ実行するだけ
Vagrant
(c) 2014 Masashi Shinbara @shin1x1
• HashiCorp が開発した OSS(MIT)
• Ruby
• 仮想環境の構築、プロビジョニングを

実行するコマンドラインツール
• 構築手順をコードで定義(Vagrantfile)
(c) 2014 Masashi Shinbara @shin1x1
Vagrant
仮想環境
仮想マシン構築
Vagrant
CentOS, Ubuntu,	

FreeBSD, etc
(c) 2014 Masashi Shinbara @shin1x1
仮想環境
仮想マシン構築
Vagrant
プロビジョニング
Vagrant
Apache, PHP, 	

MySQL, Redis, etc
(c) 2014 Masashi Shinbara @shin1x1
仮想環境
仮想マシン構築
Vagrant
プロビジョニング
Vagrant
$ vagrant up
Vagrant ワークフロー
(c) 2014 Masashi Shinbara @shin1x1
$ git clone REPO/project!
$ cd project!
$ vagrant up
• 環境構築はこれだけ
• こうなるように構成しておく!
vagrant 主なコマンド
(c) 2014 Masashi Shinbara @shin1x1
• 仮想サーバ起動
$ vagrant up
• 仮想サーバへ SSH ログイン
$ vagrant ssh
• 仮想サーバ停止
$ vagrant halt
• 仮想サーバ停止+破棄
$ vagrant destroy
(c) 2014 Masashi Shinbara @shin1x1
Vagrantで
おさえておきたい用語
Provider
(c) 2014 Masashi Shinbara @shin1x1
• 仮想環境
• VirtualBox, VMWare, Hyper-V
• AWS, DigitalOcean
Box
(c) 2014 Masashi Shinbara @shin1x1
• 仮想マシンイメージ
• CentOS, Ubuntu, FreeBSD, OSX, etc
• Vagrant Cloud

• Bento - Chef社が作成したBox
https://github.com/opscode/bento
https://vagrantcloud.com/
Box
(c) 2014 Masashi Shinbara @shin1x1
• 仮想マシンイメージ
• CentOS, Ubuntu, FreeBSD, OSX, etc
• Vagrant Cloud

• Bento - Chef社が作成したBox
https://github.com/opscode/bento
https://vagrantcloud.com/
!
ハンズオンでは、
Bento の CentOS 6.5
を使います。
Provisioner
(c) 2014 Masashi Shinbara @shin1x1
• プロビジョンを実行するツール
• シェル, Chef Solo, Puppet, 

Ansible, Docker, etc
• まずは シェル をおすすめ
Provisioner
(c) 2014 Masashi Shinbara @shin1x1
If you've never used a configuration
management system before,
it is recommended you start with
basic shell scripts for provisioning.
http://docs.vagrantup.com/v2/provisioning/index.html
Synced Folder
(c) 2014 Masashi Shinbara @shin1x1
•ホストPCのディレクトリと

仮想サーバのディレクトリを同期
•開発はホストPCで、

実行は仮想サーバで
•PhpStormやEclipseで開発可能
(c) 2014 Masashi Shinbara @shin1x1
$ ls .!
Vagrantfile
$ ls /vagrant!
Vagrantfile
ホストPC
仮想マシン
Synced Folder
Synced Folder
(c) 2014 Masashi Shinbara @shin1x1
• Shared Folder(デフォルト)
• NFS(ホストがNFSサーバになる)
• Rsync(自動でrsync実行)
Vagrantfile
(c) 2014 Masashi Shinbara @shin1x1
• 構築手順を記述したファイル
• このファイルを元に環境構築
• Ruby の DSL
• 分かる人が書けば良い
Vagrantfile
(c) 2014 Masashi Shinbara @shin1x1
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|!
config.vm.box = "opscode-centos65"!
config.vm.network “private_network", ip: "192.168.33.10"!
!
config.vm.provision "shell", inline: <<-EOT!
yum -y install httpd!
cp -a /vagrant/httpd.conf /etc/httpd/conf/!
/sbin/service httpd restart!
/sbin/chkconfig httpd on!
EOT!
end
主なユースケース
(c) 2014 Masashi Shinbara @shin1x1
• 検証環境
• 開発環境
• 仮公開環境
(c) 2014 Masashi Shinbara @shin1x1
ハンズオン
(c) 2014 Masashi Shinbara @shin1x1
流れ
1. USBメモリから必要なファイルコピー
2. Qiita に書いた手順でハンズオン
3. 上手く動いたら tweet (#DevKan)
(c) 2014 Masashi Shinbara @shin1x1
手順資料
#DevKan
http://qiita.com/shin1x1/items/
3288d9de7f04192b6ad8
(c) 2014 Masashi Shinbara @shin1x1
Tips
Git で管理
(c) 2014 Masashi Shinbara @shin1x1
• Vagrantfile とプロビジョニング
ファイルをリポジトリへ
• .vagrant/ は .gitignore
• ソースコードリポジトリに同梱
チームで共有
(c) 2014 Masashi Shinbara @shin1x1
• 環境を揃える

VirtualBox

private ip

shared_folder
• Box は、必要最低限な構成

(Bento)
Sahara Plugin
(c) 2014 Masashi Shinbara @shin1x1
• Vagrant Plugin

https://github.com/jedi4ever/sahara
• 仮想サーバの状態を DB の

ROLLBACK のように戻せる
Sahara Plugin
(c) 2014 Masashi Shinbara @shin1x1
!
$ vagrant plugin install sahara!
• インストール
Sahara Plugin
(c) 2014 Masashi Shinbara @shin1x1
$ vagrant sandbox on
• sandbox モード開始 = BEGIN;
$ vagrant sandbox rollback
• 元に戻す = ROLLBACK;
$ vagrant sandbox commit
• 変更確定 = COMMIT;
$ vagrant sandbox off
• sandbox モード終了
参考1
(c) 2014 Masashi Shinbara @shin1x1
http://docs.vagrantup.com/v2/
参考2
(c) 2014 Masashi Shinbara @shin1x1
http://www.oreilly.co.jp/books/9784873116655/
参考3
(c) 2014 Masashi Shinbara @shin1x1
http://www.amazon.co.jp/dp/B00F418SQ8
@shin1x1
(c) 2014 Masashi Shinbara @shin1x1

Weitere ähnliche Inhalte

Was ist angesagt?

Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオンVagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオンMasashi Shinbara
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境Masashi Shinbara
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーションMasashi Shinbara
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使うMasashi Shinbara
 
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようMasashi Shinbara
 
VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話Daijiro Abe
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るMasashi Shinbara
 
Vagrant入門以前
Vagrant入門以前Vagrant入門以前
Vagrant入門以前katanyan
 
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chefコンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-ChefYukihiko SAWANOBORI
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud FoundryKazuto Kusama
 
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするRyo Adachi
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoy_taka_23
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみようHiroaki_UKAJI
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私a know
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境Katsutoshi Nagaoka
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~Naotoshi Seo
 
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Sugawara Genki
 
BOSHでお手軽CFデプロイon AWS
BOSHでお手軽CFデプロイon AWSBOSHでお手軽CFデプロイon AWS
BOSHでお手軽CFデプロイon AWSi_yudai
 

Was ist angesagt? (20)

Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオンVagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオン
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
 
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使うVagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
 
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみようTwilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
 
VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話
 
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知るPHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
 
Vagrant入門以前
Vagrant入門以前Vagrant入門以前
Vagrant入門以前
 
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chefコンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
 
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
 
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyoFission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみよう
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
 
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装
 
ProjectAtomic-and-geard
ProjectAtomic-and-geardProjectAtomic-and-geard
ProjectAtomic-and-geard
 
BOSHでお手軽CFデプロイon AWS
BOSHでお手軽CFデプロイon AWSBOSHでお手軽CFデプロイon AWS
BOSHでお手軽CFデプロイon AWS
 

Ähnlich wie Vagrant体験入門

VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門Masashi Shinbara
 
はてなのサービスの開発環境
はてなのサービスの開発環境はてなのサービスの開発環境
はてなのサービスの開発環境ast_j
 
ローカル開発環境の構築をしよう VirtualBox + Vagrant
ローカル開発環境の構築をしよう VirtualBox + Vagrantローカル開発環境の構築をしよう VirtualBox + Vagrant
ローカル開発環境の構築をしよう VirtualBox + VagrantKazuma Kimura
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようTakuma Morikawa
 
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響Masahito Zembutsu
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfesTakeshi Komiya
 
Sakura no-yuube-20140327
Sakura no-yuube-20140327Sakura no-yuube-20140327
Sakura no-yuube-20140327Kunihiro TANAKA
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-Masashi Shinbara
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境Fumihito Yokoyama
 

Ähnlich wie Vagrant体験入門 (20)

VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
 
はてなのサービスの開発環境
はてなのサービスの開発環境はてなのサービスの開発環境
はてなのサービスの開発環境
 
Composer 再入門
Composer 再入門Composer 再入門
Composer 再入門
 
ローカル開発環境の構築をしよう VirtualBox + Vagrant
ローカル開発環境の構築をしよう VirtualBox + Vagrantローカル開発環境の構築をしよう VirtualBox + Vagrant
ローカル開発環境の構築をしよう VirtualBox + Vagrant
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみよう
 
コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響コンテナ技術と普及がシステム・インテグレータに与える影響
コンテナ技術と普及がシステム・インテグレータに与える影響
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
Sakura no-yuube-20140327
Sakura no-yuube-20140327Sakura no-yuube-20140327
Sakura no-yuube-20140327
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
Haikara
HaikaraHaikara
Haikara
 
130412 kayac-cinnamon
130412 kayac-cinnamon130412 kayac-cinnamon
130412 kayac-cinnamon
 
Word bench7月号
Word bench7月号Word bench7月号
Word bench7月号
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT①
 
Real world rails
Real world railsReal world rails
Real world rails
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 

Mehr von Masashi Shinbara

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライドMasashi Shinbara
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Masashi Shinbara
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2Masashi Shinbara
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPressMasashi Shinbara
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Masashi Shinbara
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築Masashi Shinbara
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationMasashi Shinbara
 
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインLaravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインMasashi Shinbara
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!Masashi Shinbara
 
Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告 Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告 Masashi Shinbara
 
10分で分かる最近のCakePHP
10分で分かる最近のCakePHP10分で分かる最近のCakePHP
10分で分かる最近のCakePHPMasashi Shinbara
 

Mehr von Masashi Shinbara (13)

日本語消えたスライド
日本語消えたスライド日本語消えたスライド
日本語消えたスライド
 
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
 
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
 
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
 
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
 
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
 
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from AuthenticationHow to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
 
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログインLaravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
 
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
 
PHP 5.5 Zend OPcache
PHP 5.5 Zend OPcachePHP 5.5 Zend OPcache
PHP 5.5 Zend OPcache
 
サーバの防災訓練
サーバの防災訓練サーバの防災訓練
サーバの防災訓練
 
Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告 Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告
 
10分で分かる最近のCakePHP
10分で分かる最近のCakePHP10分で分かる最近のCakePHP
10分で分かる最近のCakePHP
 

Kürzlich hochgeladen

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Kürzlich hochgeladen (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Vagrant体験入門

  • 2. ハンズオン準備 (c) 2014 Masashi Shinbara @shin1x1 USBメモリから ファイルコピー
  • 3. (c) 2014 Masashi Shinbara @shin1x1 Vagrantで作るPHP開発環境 http://www.slideshare.net/shin1x1/xampp-mamp-vagrant-php
  • 4. (c) 2014 Masashi Shinbara @shin1x1 Vagrantで作るPHP開発環境[実践編] http://www.slideshare.net/shin1x1/vagrant-php
  • 5. (c) 2014 Masashi Shinbara @shin1x1 VagrantX http://shin1x1.github.io/vagrantx/
  • 6. (c) 2014 Masashi Shinbara @shin1x1 Web開発あるある
  • 7. エンジニアSさん (c) 2014 Masashi Shinbara @shin1x1 • Macbook Air で開発 • Apache / PHP / DB • 複数案件を一台で
  • 8. エンジニアSさん (c) 2014 Masashi Shinbara @shin1x1 1162 <VirtualHost *:80>! 1163 ServerName candycane.local! 1164 DocumentRoot "/Users/shin/sandbox/demo/candycane/app/webroot"! 1165 </VirtualHost>! 1166 ! 1167 <VirtualHost *:80>! 1168 ServerName demo.local! 1169 DocumentRoot "/Users/shin/sandbox/demo/20140601_phpcon"! 1170 php_value vld.active 1! 1171 </VirtualHost>! 1172 ! 1173 <VirtualHost *:80>! 1174 ServerName evememo.local! 1175 DocumentRoot "/Users/shin/work/1x1/evememo/app/webroot"! 1176 </VirtualHost>! 1177 ! 1178 <VirtualHost *:80>! 1179 ServerName kusaon.local! 1180 DocumentRoot "/Users/shin/work/kusaon/app/webroot"! 1181 </VirtualHost>!
  • 9. エンジニアSさん (c) 2014 Masashi Shinbara @shin1x1 1162 <VirtualHost *:80>! 1163 ServerName candycane.local! 1164 DocumentRoot "/Users/shin/sandbox/demo/candycane/app/webroot"! 1165 </VirtualHost>! 1166 ! 1167 <VirtualHost *:80>! 1168 ServerName demo.local! 1169 DocumentRoot "/Users/shin/sandbox/demo/20140601_phpcon"! 1170 php_value vld.active 1! 1171 </VirtualHost>! 1172 ! 1173 <VirtualHost *:80>! 1174 ServerName evememo.local! 1175 DocumentRoot "/Users/shin/work/1x1/evememo/app/webroot"! 1176 </VirtualHost>! 1177 ! 1178 <VirtualHost *:80>! 1179 ServerName kusaon.local! 1180 DocumentRoot "/Users/shin/work/kusaon/app/webroot"! 1181 </VirtualHost>! 溢れる VirtualHost
  • 10. とある開発チームA (c) 2014 Masashi Shinbara @shin1x1 • チームで開発 • Macbook / Windows で開発 • Apache / PHP / DB
  • 11. とある開発チームA (c) 2014 Masashi Shinbara @shin1x1 あれ?動かない。
 何か変なコード書いた? こっちは動いてるよ。 拡張追加しないとダメだよ。
  • 12. とある開発チームA (c) 2014 Masashi Shinbara @shin1x1 あれ?動かない。
 何か変なコード書いた? こっちは動いてるよ。 拡張追加しないとダメだよ。 俺の環境では動く
  • 13. とある開発チーム新人Cさん (c) 2014 Masashi Shinbara @shin1x1 ここの手順で開発環境を 構築しておいて。 わかりました!
  • 14. (c) 2014 Masashi Shinbara @shin1x1 # tar xvzf postgresql-8.3.9.tar.gz! # mv postgresql-8.3.9 /usr/local/src! # cd /usr/local/src/postgresql-8.3.9! # ./congure {prex=/usr/local/pgsql! # gmake && gmake install! !/usr/local/pgsql/lib/pgxs/cong/install-sh! /bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs! /usr/local/pgsql/lib/pgxs/cong/mkinstalldirs! !gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'! PostgreSQL installation complete.! !# .bash prole! # Get the aliases and functions! if [ -f ~/.bashrc ]; then! .! ~/.bashrc! !# User specic environment and startup programs! PATH=$PATH:$HOME/bin! PATH=$PATH:/usr/java/jdk1.5.0 21/bin! export PATH! unset USERNAME! export JAVA HOME=/usr/java/jdk1.5.0 21/! export CATALINA HOME=/usr/local/tomcat! export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib! export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"! !# tar xvzf postgresql-8.3.9.tar.gz! # mv postgresql-8.3.9 /usr/local/src! # cd /usr/local/src/postgresql-8.3.9! # ./congure {prex=/usr/local/pgsql! # gmake && gmake install! !/usr/local/pgsql/lib/pgxs/cong/install-sh! /bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs! /usr/local/pgsql/lib/pgxs/cong/mkinstalldirs! !gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'! PostgreSQL installation complete.! !# .bash prole! # Get the aliases and functions! if [ -f ~/.bashrc ]; then! .! ~/.bashrc! !# User specic environment and startup programs! PATH=$PATH:$HOME/bin! PATH=$PATH:/usr/java/jdk1.5.0 21/bin! export PATH! unset USERNAME! export JAVA HOME=/usr/java/jdk1.5.0 21/! export CATALINA HOME=/usr/local/tomcat! export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib! export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"! とある開発チーム新人Cさん
  • 15. (c) 2014 Masashi Shinbara @shin1x1 # tar xvzf postgresql-8.3.9.tar.gz! # mv postgresql-8.3.9 /usr/local/src! # cd /usr/local/src/postgresql-8.3.9! # ./congure {prex=/usr/local/pgsql! # gmake && gmake install! ! /usr/local/pgsql/lib/pgxs/cong/install-sh! /bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs! /usr/local/pgsql/lib/pgxs/cong/mkinstalldirs! ! gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'! PostgreSQL installation complete.! ! # .bash prole! # Get the aliases and functions! if [ -f ~/.bashrc ]; then! .! ~/.bashrc! ! # User specic environment and startup programs! PATH=$PATH:$HOME/bin! PATH=$PATH:/usr/java/jdk1.5.0 21/bin! export PATH! unset USERNAME! export JAVA HOME=/usr/java/jdk1.5.0 21/! export CATALINA HOME=/usr/local/tomcat! export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib! export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"! とある開発チーム新人Cさん これやるの・・・
  • 16. (c) 2014 Masashi Shinbara @shin1x1 # tar xvzf postgresql-8.3.9.tar.gz! # mv postgresql-8.3.9 /usr/local/src! # cd /usr/local/src/postgresql-8.3.9! # ./congure {prex=/usr/local/pgsql! # gmake && gmake install! ! /usr/local/pgsql/lib/pgxs/cong/install-sh! /bin/sh ../cong/install-sh -c -m 755 ./mkinstalldirs! /usr/local/pgsql/lib/pgxs/cong/mkinstalldirs! ! gmake[1]: Leaving directory `/usr/local/src/postgresql-8.3.9/cong'! PostgreSQL installation complete.! ! # .bash prole! # Get the aliases and functions! if [ -f ~/.bashrc ]; then! .! ~/.bashrc! ! # User specic environment and startup programs! PATH=$PATH:$HOME/bin! PATH=$PATH:/usr/java/jdk1.5.0 21/bin! export PATH! unset USERNAME! export JAVA HOME=/usr/java/jdk1.5.0 21/! export CATALINA HOME=/usr/local/tomcat! export CLASSPATH=$CLASSPATH:$CATALINA HOME/common/lib! export CATALINA OPTS="-server -Xms512m -Xmx512m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=64m"! とある開発チーム新人Cさん しかも動かない!
  • 17. とある開発チーム新人Cさん (c) 2014 Masashi Shinbara @shin1x1 あ、あの手順の後、 ○○を☓☓して、△△も入れておいて はあ
  • 18. とある開発チーム新人Cさん (c) 2014 Masashi Shinbara @shin1x1 あ、あの手順の後、 ○○を☓☓して、△△も入れておいて はあ スタートラインは どこだ
  • 19. WebデザイナーBさん (c) 2014 Masashi Shinbara @shin1x1 • WordPressのデザイン • XAMPPをインストール • でもなんだか動かない。。。
  • 20. (c) 2014 Masashi Shinbara @shin1x1 WebデザイナーBさん
  • 21. (c) 2014 Masashi Shinbara @shin1x1 WebデザイナーBさん Port 80 は 俺のモノ
  • 23. Vagrant? (c) 2014 Masashi Shinbara @shin1x1
  • 24. Vagrant? (c) 2014 Masashi Shinbara @shin1x1 軽量で、再現可能かつポータブルな 開発環境の構築、設定を行う
  • 25. 独立した環境 (c) 2014 Masashi Shinbara @shin1x1 • 仮想環境を使った、独立した環境 • ホストに影響が無い • プロジェクト毎にクリーンな環境
  • 26. 再現が可能 (c) 2014 Masashi Shinbara @shin1x1 • 構築手順をコードで記述 • コードに添って自動構築 • 全く同じ環境を再現可能
  • 27. ポータブル (c) 2014 Masashi Shinbara @shin1x1 • 構築手順コードがあればどこでも構築 • チームで同じ環境を各PCに構築 • コマンド一つ実行するだけ
  • 28. Vagrant (c) 2014 Masashi Shinbara @shin1x1 • HashiCorp が開発した OSS(MIT) • Ruby • 仮想環境の構築、プロビジョニングを
 実行するコマンドラインツール • 構築手順をコードで定義(Vagrantfile)
  • 29. (c) 2014 Masashi Shinbara @shin1x1 Vagrant 仮想環境 仮想マシン構築 Vagrant CentOS, Ubuntu, FreeBSD, etc
  • 30. (c) 2014 Masashi Shinbara @shin1x1 仮想環境 仮想マシン構築 Vagrant プロビジョニング Vagrant Apache, PHP, MySQL, Redis, etc
  • 31. (c) 2014 Masashi Shinbara @shin1x1 仮想環境 仮想マシン構築 Vagrant プロビジョニング Vagrant $ vagrant up
  • 32. Vagrant ワークフロー (c) 2014 Masashi Shinbara @shin1x1 $ git clone REPO/project! $ cd project! $ vagrant up • 環境構築はこれだけ • こうなるように構成しておく!
  • 33. vagrant 主なコマンド (c) 2014 Masashi Shinbara @shin1x1 • 仮想サーバ起動 $ vagrant up • 仮想サーバへ SSH ログイン $ vagrant ssh • 仮想サーバ停止 $ vagrant halt • 仮想サーバ停止+破棄 $ vagrant destroy
  • 34. (c) 2014 Masashi Shinbara @shin1x1 Vagrantで おさえておきたい用語
  • 35. Provider (c) 2014 Masashi Shinbara @shin1x1 • 仮想環境 • VirtualBox, VMWare, Hyper-V • AWS, DigitalOcean
  • 36. Box (c) 2014 Masashi Shinbara @shin1x1 • 仮想マシンイメージ • CentOS, Ubuntu, FreeBSD, OSX, etc • Vagrant Cloud
 • Bento - Chef社が作成したBox https://github.com/opscode/bento https://vagrantcloud.com/
  • 37. Box (c) 2014 Masashi Shinbara @shin1x1 • 仮想マシンイメージ • CentOS, Ubuntu, FreeBSD, OSX, etc • Vagrant Cloud
 • Bento - Chef社が作成したBox https://github.com/opscode/bento https://vagrantcloud.com/ ! ハンズオンでは、 Bento の CentOS 6.5 を使います。
  • 38. Provisioner (c) 2014 Masashi Shinbara @shin1x1 • プロビジョンを実行するツール • シェル, Chef Solo, Puppet, 
 Ansible, Docker, etc • まずは シェル をおすすめ
  • 39. Provisioner (c) 2014 Masashi Shinbara @shin1x1 If you've never used a configuration management system before, it is recommended you start with basic shell scripts for provisioning. http://docs.vagrantup.com/v2/provisioning/index.html
  • 40. Synced Folder (c) 2014 Masashi Shinbara @shin1x1 •ホストPCのディレクトリと
 仮想サーバのディレクトリを同期 •開発はホストPCで、
 実行は仮想サーバで •PhpStormやEclipseで開発可能
  • 41. (c) 2014 Masashi Shinbara @shin1x1 $ ls .! Vagrantfile $ ls /vagrant! Vagrantfile ホストPC 仮想マシン Synced Folder
  • 42. Synced Folder (c) 2014 Masashi Shinbara @shin1x1 • Shared Folder(デフォルト) • NFS(ホストがNFSサーバになる) • Rsync(自動でrsync実行)
  • 43. Vagrantfile (c) 2014 Masashi Shinbara @shin1x1 • 構築手順を記述したファイル • このファイルを元に環境構築 • Ruby の DSL • 分かる人が書けば良い
  • 44. Vagrantfile (c) 2014 Masashi Shinbara @shin1x1 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|! config.vm.box = "opscode-centos65"! config.vm.network “private_network", ip: "192.168.33.10"! ! config.vm.provision "shell", inline: <<-EOT! yum -y install httpd! cp -a /vagrant/httpd.conf /etc/httpd/conf/! /sbin/service httpd restart! /sbin/chkconfig httpd on! EOT! end
  • 45. 主なユースケース (c) 2014 Masashi Shinbara @shin1x1 • 検証環境 • 開発環境 • 仮公開環境
  • 46. (c) 2014 Masashi Shinbara @shin1x1 ハンズオン
  • 47. (c) 2014 Masashi Shinbara @shin1x1 流れ 1. USBメモリから必要なファイルコピー 2. Qiita に書いた手順でハンズオン 3. 上手く動いたら tweet (#DevKan)
  • 48. (c) 2014 Masashi Shinbara @shin1x1 手順資料 #DevKan http://qiita.com/shin1x1/items/ 3288d9de7f04192b6ad8
  • 49. (c) 2014 Masashi Shinbara @shin1x1 Tips
  • 50. Git で管理 (c) 2014 Masashi Shinbara @shin1x1 • Vagrantfile とプロビジョニング ファイルをリポジトリへ • .vagrant/ は .gitignore • ソースコードリポジトリに同梱
  • 51. チームで共有 (c) 2014 Masashi Shinbara @shin1x1 • 環境を揃える
 VirtualBox
 private ip
 shared_folder • Box は、必要最低限な構成
 (Bento)
  • 52. Sahara Plugin (c) 2014 Masashi Shinbara @shin1x1 • Vagrant Plugin
 https://github.com/jedi4ever/sahara • 仮想サーバの状態を DB の
 ROLLBACK のように戻せる
  • 53. Sahara Plugin (c) 2014 Masashi Shinbara @shin1x1 ! $ vagrant plugin install sahara! • インストール
  • 54. Sahara Plugin (c) 2014 Masashi Shinbara @shin1x1 $ vagrant sandbox on • sandbox モード開始 = BEGIN; $ vagrant sandbox rollback • 元に戻す = ROLLBACK; $ vagrant sandbox commit • 変更確定 = COMMIT; $ vagrant sandbox off • sandbox モード終了
  • 55. 参考1 (c) 2014 Masashi Shinbara @shin1x1 http://docs.vagrantup.com/v2/
  • 56. 参考2 (c) 2014 Masashi Shinbara @shin1x1 http://www.oreilly.co.jp/books/9784873116655/
  • 57. 参考3 (c) 2014 Masashi Shinbara @shin1x1 http://www.amazon.co.jp/dp/B00F418SQ8
  • 58. @shin1x1 (c) 2014 Masashi Shinbara @shin1x1