準備
事前にダウンロードしてインストールする
Vagrant 1.9.1
VirtualBox 5.1.12-1
インストールと起動
Vagrantのバージョンを確認
$ vagrant --version
homeに移動
$ cd ~
ディレクトリの作成
$ mkdir centos7
中に移動
$ cd centos7/
初期化 今回入れたのはコチラ https://atlas.hashicorp.com/centos/boxes/7
$ vagrant init centos/7
立ち上げる
$ vagrant up --provider virtualbox
sshで接続 もし、パスワードを聞かれた場合はvagrant
$ vagrant ssh
centosのバージョン確認
$ cat /etc/redhat-release
-> CentOS Linux release 7.3.1611 (Core)
試しにWebページを表示してみる
Apacheの設定
Apacheをインストール
$ sudo yum -y install httpd
起動
$ sudo systemctl start httpd.service
自動起動設定
$ sudo systemctl enable httpd.service
ローカルなのでファイアーウォールを切る
$ sudo systemctl stop firewalld
ファイアーウォールのステータスを確認(inactive状態を確認すること)
$ sudo systemctl status firewalld
ファイアーウォールを切るの自動起動設定
$ sudo systemctl disable firewalld
htmlファイルの作成
htmlのディレクトリに移動
$ cd /var/www/html/
index.htmlを作成 何か適当に記述しておく -> <h1>Hello World</h1>
$ sudo vi index.html
Vagrantファイルのネットワーク設定をする
一回サーバーを終了
$ exit
Vagrantfileを編集
$ sudo vi Vagrantfile
privateネットワークのコメントアウトを外す
config.vm.network "private_network", ip: "192.168.33.10"
エディターを抜けて
$ vagrant reload
以上でブラウザから接続!!
接続できない場合の対応(僕のもう片方のMacで構築するとなぜか接続できず) ↓↓↓
まずSELinuxを確認
$ getenforce
-> Disabled
Disabledなので問題なし、次は$ systemctl status httpd
でApatchのステータスを確認
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2017-01-01 14:26:53 UTC; 23min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 1040 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─1040 /usr/sbin/httpd -DFOREGROUND
├─1113 /usr/sbin/httpd -DFOREGROUND
├─1114 /usr/sbin/httpd -DFOREGROUND
├─1115 /usr/sbin/httpd -DFOREGROUND
├─1117 /usr/sbin/httpd -DFOREGROUND
└─1118 /usr/sbin/httpd -DFOREGROUND
Active: active (running)
になっているのでOK!
次は外部から通信できているかを確認するためにPingコマンドを使う
$ ping 192.168.33.10
Request timeout for icmp_seq 167
Request timeout for icmp_seq 168
Request timeout for icmp_seq 169
Request timeout for icmp_seq 170
Request timeout for icmp_seq 171
ナルホド...通信できていないようなので、
そもそも192.168.33.10
が適切に設定されているのかをipコマンドで確認する
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
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 52:54:00:22:5b:53 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
valid_lft 86234sec preferred_lft 86234sec
inet6 fe80::5054:ff:fe22:5b53/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 08:00:27:23:38:7d brd ff:ff:ff:ff:ff:ff
そもそもeth1
に"192.168.33.10"
が設定されていないことがわかる。
僕は詳しくないネットワーク設定を色々といじった後に戻せなくなると嫌だったので、
ココを参考にShell Scriptで解決することにした。
VagrantFileと同じ階層にbootstrap.sh
を作成
centos7
にifconfig
が入っていないのでサーバー側で $ yum install net-tools
を入れる
#固定ip設定
ifconfig eth1 192.168.33.10 netmask 255.255.255.0 up
VagrantFileを修正
config.vm.network "private_network", ip: "192.168.33.10"
# 外部からアクセスできない場合
config.vm.provision :shell, :path => "bootstrap.sh"
$ vagrant halt
で一回停止して、$ vagrant up --provision
で起動し直す
--provision
のオプションを付けないとShellScriptが実行されないので注意
外部から$ ping 192.168.33.10
で通信できていることを確認
64 bytes from 192.168.33.10: icmp_seq=2242 ttl=64 time=0.256 ms
64 bytes from 192.168.33.10: icmp_seq=2243 ttl=64 time=0.287 ms
64 bytes from 192.168.33.10: icmp_seq=2244 ttl=64 time=0.393 ms
64 bytes from 192.168.33.10: icmp_seq=2245 ttl=64 time=0.356 ms
64 bytes from 192.168.33.10: icmp_seq=2246 ttl=64 time=0.403 ms
$ ip addr
でeth1に192.168.33.10
が設定されていることを確認
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
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 52:54:00:22:5b:53 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
valid_lft 84730sec preferred_lft 84730sec
inet6 fe80::5054:ff:fe22:5b53/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:23:38:7d brd ff:ff:ff:ff:ff:ff
inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe23:387d/64 scope link
valid_lft forever preferred_lft forever
これでやっと固定IPが設定され、ブラウザからの接続確認ができた
今回はネットワークの設定をあまりいじりしたくなかったので、ShellScriptを実行して解決しました。
起動する時に$ vagrant up --provision
とオプションを毎回付けなければいけないが。。。
一旦ネットワーク設定をいじることなく解決。