はじめに
Vagrantは、開発環境の構築と共有を簡単に行うためのツールです。 どこでも同じ環境を再現できるように仮想マシン環境を管理する機能と、Atlasを通して共有する仕組みが提供されています。
ページ内リンク
索引 |
---|
はじめに |
Vagrantのインストール |
VirtualBoxをインストールする |
VagrantでCentOSを立ち上げる |
ファイル転送ツールを導入する |
Rubyファイルをブラウザから確認する |
vagrantコマンド一覧はコチラ⇒vagrantコマンド一覧
Vagrantのインストール
まずは、Vagrant by HashiCorpからインストーラーがダウンロードできます。
[DOWNLOAD 2.0.0]をクリックします。
Macなら「MAC OS X」を選択し、[64-bit]をクリックします。
ダウンロードが終わったらダウンロードファイルを開きます。
ダウンロードしたファイルを開くとこのような画面になりますので、Vagrant.pkgをダブルクリックしてインストールしましょう。
インストーラの画面が表示されます。[続ける]をクリックします。
[インストール]をクリックします。
パスワードを求められるので入力。
インスール完了します。[閉じる]をクリックします。
“Vagrant”のインストーラをゴミ箱に入れますか?と聞かれます。好きな方を選択します。
インストールが完了したらTerminalを開きます。
下記のコマンドを実行。
[Vagrantのバージョン確認]
1 |
$ vagrant -v |
[実行結果]
1 |
Vagrant 2.0.0 |
無事にバージョンが返ってくればVagrantのインストールは完了です。
VirtualBoxをインストールする
まずは、コチラ⇒公式サイトからダウンロード
[Downlodas]をクリックします。
VirtualBox 5.1.28 platform packages.にある[OS X hosts]をクリックします。
ダウンロードしたファイルを開くとこのような画面になりますので、[VirtualBox.pkg]をダブルクリックしてインストールしてください。
確認ダイアログが表示されます。[続ける]をクリックします。
インストーラーが表示されます。[続ける]をクリックします。
[インストール]をクリックします。
パスワードを求められるので入力。
インスール完了します。[閉じる]をクリックします。
“Oracle VM VirtualBox”のインストーラをゴミ箱に入れますか?と聞かれます。好きな方を選択します。
インストールが完了したらTerminalを開きます。
下記のコマンドを実行。
[VirtualBoxのバージョン確認]
1 |
$ VBoxManage -v |
[実行結果]
1 |
5.1.28r117968 |
無事にバージョンが返ってくればVirtualBoxのインストールは完了です。
VagrantでCentOSを立ち上げる
続いて、インストールしたVagrantを使って、CentOSを立ち上げてみます。実際の操作はターミナルを使用しましょう。
Vagrantbox.esというサイトから立ち上げるために必要な情報を取得することができます。今回は、CentOS 7.0の64bitを使い、名前は「centos」にしましょう。
まずはターミナルを使って、Vagrantに「centos」という名前のboxを追加します。boxとは仮想マシンを手軽にクローンするためのベースイメージのことです。
[Boxファイルを準備]
1 |
$ vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box |
[実行結果]
1 2 3 4 5 |
130427.box ==> box: Box file was not detected as metadata. Adding it directly... ==> box: Adding box 'centos' (v0) for provider: box: Downloading: http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box ==> box: Successfully added box 'centos' (v0) for 'virtualbox'! |
[Boxファイルがある場合]
1 2 |
$ vagrant box add ボックス名 ◯◯◯.boxを置いた場所のパス (例) $ vagrant box add test /Users/ユーザ名/test.box |
[Box一覧の確認]
1 |
$ vagrant box list |
[実行結果]
1 |
centos (virtualbox, 0) |
[設定ファイルの作成]
1 |
$ vagrant init centos |
[実行結果]
1 2 3 4 |
A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. |
私の場合は、/Users/ユーザ名/Vagrantfile
Vagrantfileが作成されます。
[Vagrantを起動]
1 |
$ vagrant up |
[実行結果]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
==> default: Importing base box 'centos'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: uchida_default_1507540321436_86527 ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Remote connection disconnect. Retrying... default: Warning: Connection reset. Retrying... default: Warning: Remote connection disconnect. Retrying... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 4.2.12 default: VirtualBox Version: 5.1 ==> default: Mounting shared folders... default: /vagrant => /Users/ユーザ名 |
これで、VagrantでCentOSの立ち上げが完了しました。
では、Vagrantが起動しているか確認します。
Finder ⇒ アプリケーション ⇒ VirtualBox.appをダブルクリック
実行中になっているか確認します。
ファイル転送ツールを導入する
それでは今度は、ファイル転送ツールを使ってMacからCentOS内のファイルを参照できるようにしましょう。
ファイル転送ツールにはCyberduckやFileZillaなど様々ありますが、今回はFileZillaを使っていくことにします。
先ほどの、「vagrant up」でVagrantを立ち上げる際に出力されるログを見てみましょう。ここにSSH接続に必要な情報はが表示されています。パスワードはvagrantになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
==> default: Importing base box 'centos'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: uchida_default_1507540321436_86527 ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Remote connection disconnect. Retrying... default: Warning: Connection reset. Retrying... default: Warning: Remote connection disconnect. Retrying... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... |
それではさっそくFileZillaを立ちあげます。
ダイアログが立ち上がるので「Open the Site Manager. Right-click for a list of sites.」をクリックします。
[新しいサイト(N)]をクリックしてから上記のようにログから得られた情報を入力していきます。Hostには「default: SSH address」で表示されたものを入力します。入力を終えたら[接続(C)]をクリックします。
確認ダイアログが出るので、[OK]をクリックします。
これで無事につながれば接続完了です。
Rubyファイルをブラウザから確認する
最後に、具体的な使い方として、Rubyのファイルを作成して、それをブラウザで確認してみましょう。
まずは、httpdサーバの構築を行っていきます。ターミナルからSSH接続を行いましょう。
[vagrantに接続]
1 |
$ vagrant ssh |
[実行結果]
1 |
Welcome to your Vagrant-built virtual machine. |
[webサーバーのインストール]
1 |
$ sudo yum -y install httpd |
[実行結果]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
Loaded plugins: fastestmirror Determining fastest mirrors * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp base | 3.7 kB 00:00 base/primary_db | 4.7 MB 00:00 extras | 3.4 kB 00:00 extras/primary_db | 29 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 4.7 MB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.2.15-60.el6.centos.5 will be installed --> Processing Dependency: httpd-tools = 2.2.15-60.el6.centos.5 for package: httpd-2.2.15-60.el6.centos.5.x86_64 --> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-60.el6.centos.5.x86_64 --> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-60.el6.centos.5.x86_64 --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-60.el6.centos.5.x86_64 --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-60.el6.centos.5.x86_64 --> Running transaction check ---> Package apr.x86_64 0:1.3.9-5.el6_2 will be installed ---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be installed ---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed ---> Package httpd-tools.x86_64 0:2.2.15-60.el6.centos.5 will be installed --> Processing Dependency: libssl.so.10(libssl.so.10)(64bit) for package: httpd-tools-2.2.15-60.el6.centos.5.x86_64 --> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: httpd-tools-2.2.15-60.el6.centos.5.x86_64 ---> Package mailcap.noarch 0:2.1.31-2.el6 will be installed --> Running transaction check ---> Package openssl.x86_64 0:1.0.0-27.el6_4.2 will be updated --> Processing Dependency: openssl = 1.0.0-27.el6_4.2 for package: openssl-devel-1.0.0-27.el6_4.2.x86_64 ---> Package openssl.x86_64 0:1.0.1e-57.el6 will be an update --> Running transaction check ---> Package openssl-devel.x86_64 0:1.0.0-27.el6_4.2 will be updated ---> Package openssl-devel.x86_64 0:1.0.1e-57.el6 will be an update --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================================== Package Arch Version Repository Size ==================================================================================================================== Installing: httpd x86_64 2.2.15-60.el6.centos.5 updates 836 k Installing for dependencies: apr x86_64 1.3.9-5.el6_2 base 123 k apr-util x86_64 1.3.9-3.el6_0.1 base 87 k apr-util-ldap x86_64 1.3.9-3.el6_0.1 base 15 k httpd-tools x86_64 2.2.15-60.el6.centos.5 updates 80 k mailcap noarch 2.1.31-2.el6 base 27 k Updating for dependencies: openssl x86_64 1.0.1e-57.el6 base 1.5 M openssl-devel x86_64 1.0.1e-57.el6 base 1.2 M Transaction Summary ==================================================================================================================== Install 6 Package(s) Upgrade 2 Package(s) Total download size: 3.8 M Downloading Packages: (1/8): apr-1.3.9-5.el6_2.x86_64.rpm | 123 kB 00:00 (2/8): apr-util-1.3.9-3.el6_0.1.x86_64.rpm | 87 kB 00:00 (3/8): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm | 15 kB 00:00 (4/8): httpd-2.2.15-60.el6.centos.5.x86_64.rpm | 836 kB 00:00 (5/8): httpd-tools-2.2.15-60.el6.centos.5.x86_64.rpm | 80 kB 00:00 (6/8): mailcap-2.1.31-2.el6.noarch.rpm | 27 kB 00:00 (7/8): openssl-1.0.1e-57.el6.x86_64.rpm | 1.5 MB 00:00 (8/8): openssl-devel-1.0.1e-57.el6.x86_64.rpm | 1.2 MB 00:00 -------------------------------------------------------------------------------------------------------------------- Total 2.0 MB/s | 3.8 MB 00:01 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : apr-1.3.9-5.el6_2.x86_64 1/10 Installing : apr-util-1.3.9-3.el6_0.1.x86_64 2/10 Updating : openssl-1.0.1e-57.el6.x86_64 3/10 Installing : httpd-tools-2.2.15-60.el6.centos.5.x86_64 4/10 Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 5/10 Installing : mailcap-2.1.31-2.el6.noarch 6/10 Installing : httpd-2.2.15-60.el6.centos.5.x86_64 7/10 Updating : openssl-devel-1.0.1e-57.el6.x86_64 8/10 Cleanup : openssl-devel-1.0.0-27.el6_4.2.x86_64 9/10 Cleanup : openssl-1.0.0-27.el6_4.2.x86_64 10/10 Verifying : openssl-devel-1.0.1e-57.el6.x86_64 1/10 Verifying : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 2/10 Verifying : apr-1.3.9-5.el6_2.x86_64 3/10 Verifying : openssl-1.0.1e-57.el6.x86_64 4/10 Verifying : httpd-2.2.15-60.el6.centos.5.x86_64 5/10 Verifying : mailcap-2.1.31-2.el6.noarch 6/10 Verifying : apr-util-1.3.9-3.el6_0.1.x86_64 7/10 Verifying : httpd-tools-2.2.15-60.el6.centos.5.x86_64 8/10 Verifying : openssl-devel-1.0.0-27.el6_4.2.x86_64 9/10 Verifying : openssl-1.0.0-27.el6_4.2.x86_64 10/10 Installed: httpd.x86_64 0:2.2.15-60.el6.centos.5 Dependency Installed: apr.x86_64 0:1.3.9-5.el6_2 apr-util.x86_64 0:1.3.9-3.el6_0.1 apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 httpd-tools.x86_64 0:2.2.15-60.el6.centos.5 mailcap.noarch 0:2.1.31-2.el6 Dependency Updated: openssl.x86_64 0:1.0.1e-57.el6 openssl-devel.x86_64 0:1.0.1e-57.el6 Complete! |
[webサーバーの起動]
1 |
$ sudo service httpd start |
[実行結果]
1 2 |
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName [ OK ] |
上記のように表示されればOKです。
[Apacheの起動設定]
1 |
$ sudo chkconfig httpd on |
[実行結果]
何も表示されない。エラーにならなければOK。
これでオンになりました。
オンになっていることは下記のコマンドで確認することができます。
[状態確認]
1 |
$ chkconfig –list httpd |
[実行結果]
1 2 3 4 5 6 7 8 |
chkconfig バージョン 1.3.49.3 - Copyright (C) 1997-2000 Red Hat, Inc. このソフトウェアは GNU 一般公共使用許諾契約書に従って無償で再配布することができます。 使用法: chkconfig [--list] [--type <タイプ>] [名前] chkconfig --add <名前> chkconfig --del <名前> chkconfig --override <名前> chkconfig [--level <レベル>] [--type <タイプ>] <名前> <on|off|reset|resetpriorities> |
デフォルトではファイアウォール設定がされているので、iptablesコマンドを使って編集します。
1 |
$ sudo service iptables stop |
[実行結果]
1 2 3 |
iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] |
iptables stopコマンドを実行しただけでは、一時的にiptablesが無効になっただけで、OSを再起動したときにiptablesが起動してしまいます。
OS再起動後もiptablesを起動しないようにするには、chkconfigコマンドで設定します。
1 |
$ sudo chkconfig iptables off |
[実行結果]
何も表示されない。エラーにならなければOK。
続いてはブラウザからアクセスするための設定を行っていきます。一度、SSHの接続から離れましょう。
1 |
$ exit |
[実行結果]
1 2 |
logout Connection to 127.0.0.1 closed. |
ここでVagrantファイルを編集していきます。
Vagrantファイルの編集はターミナルで下記のように入力します。
[ファイルの編集]
1 |
$ vi Vagrantfile |
[ファイルの中身]
1 2 3 |
# config.vm.network "private_network", ip: "192.168.33.10" ↓ config.vm.network "private_network", ip: "192.168.33.10" |
上記のようにコメントアウトされている一行があるので、#
を削除してコメントアウトを外しましょう。削除するには、#の上にコマンドを合わせて、小文字の「x」と入力します。
削除できたら、「:wq」と入力して保存します。
保存をしたら、Vagratのリロードをします。
[リロード]
1 |
$ vagrant reload |
[実行結果]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
==> default: Attempting graceful shutdown of VM... ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 4.2.12 default: VirtualBox Version: 5.1 ==> default: Configuring and enabling network interfaces... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key ==> default: Mounting shared folders... default: /vagrant => /Users/uchida ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run. |
リロードが完了したら192.168.33.10
にアクセスしてみましょう。
このような画面が確認できればブラウザからアクセスできたということになります。
また、192.168.33.10に接続できることは、下記のコマンドで確認することができます。
[vagrantに接続]
1 |
$ vagrant ssh |
[接続の確認]
1 |
$ ip a |
[実行結果]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:c9:39:9e brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0 inet6 fe80::a00:27ff:fec9:399e/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:72:a0:29 brd ff:ff:ff:ff:ff:ff inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1 inet6 fe80::a00:27ff:fe72:a029/64 scope link valid_lft forever preferred_lft forever |
せっかくなのでファイルを設置して表示もしてみます。シンボリックリンクを作成します。
[vagrantに接続]
1 |
$ vagrant ssh |
[ファイルやディレクトリを削除する]
1 |
$ sudo rm -rf /var/www/html |
[シンボリックリンク]
1 |
$ sudo ln -fs /vagrant /var/www/html |
[ディレクトリの移動]
1 |
$ cd /var/www/html/ |
[ファイルの作成]
1 |
$ touch test.rb |
[ファイルの編集]
1 |
$ vi test.rb |
[ファイルの中身]
1 2 3 4 5 6 7 8 9 |
<!DOCTYPE html> <html> <head> <title>Vagrant</title> </head> <body> <h1>Hello, Vagrant!!</h1> </body> </html> |
ここまでできたらブラウザを立ちあげて、http://192.168.33.10/test.rbへアクセスしてみましょう。
このようにブラウザで表示されるはずです。
これでVagrantを使ったローカル開発環境の構築ができました。