Vagrant の機能に、環境設定のためのスクリプトを実行する機能がある。
それを、「プロビジョニング」と呼ぶ。
こちらの記事が参考になる
↓
http://fnya.cocolog-nifty.com/blog/2015/12/vagrant-centos7.html
手順
①Vagrantfileに設定を記述する
②スクリプトファイルを作成する
③実行する
①Vagrantfileに設定を記述する
config.vm.provision :shell, :path => "provision.sh"
②スクリプトファイルを作成する
Vagrantfileと同じ階層に、「provision.sh」というファイルを作成する。
そのファイルの中に、下記を記述。
内容は、一気にいろいろインストールしろという命令。
#Apache sudo yum -y install httpd sudo systemctl start httpd.service sudo systemctl enable httpd.service #firewalld sudo systemctl start firewalld.service sudo systemctl enable firewalld.service sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp --permanent sudo firewall-cmd --reload #MariaDB sudo yum -y remove mariadb* sudo rm -rf /var/lib/mysql/ #wget sudo yum -y install wget #vim sudo yum -y install vim #MySQL sudo wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm sudo rpm -Uvh mysql-community-release-el7-5.noarch.rpm sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/mysql-community.repo sudo yum -y --enablerepo=mysql56-community install mysql-community-server sudo systemctl start mysqld.service sudo systemctl enable mysqld.service #PHP sudo yum -y install php php-mysql php-mbstring sudo systemctl restart httpd.service # chmod sudo chmod -R 777 /var/www/html
③実行する
②のファイルをプロビジョニングで実行するコマンド。
$ vagrant provision
いろいろ赤いエラーが出たが、
目的のPHP、Apache、MySQLは無事インストールされていた。
[vagrant@localhost ~]$ php -v PHP 5.3.3 (cli) (built: Aug 11 2016 20:33:53) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies [vagrant@localhost ~]$ httpd -v Server version: Apache/2.2.15 (Unix) Server built: Jul 18 2016 15:24:00
追記
WEBサーバーもPHPもインストールした。
さて、PHPファイルでも確認してみようと、
/var/www/html/
の下にindex.phpファイルを作成して、
「192.168.33.10」
をブラウザに叩きこむ。
しかし、
ERR_CONNECTION_REFUSED
で接続できない…
何故か。
これは、iptablesが設定されていて、
外部からの通信を遮断するファイアウォール設定がされているため。
②の中で登場する、「firewalld」も、iptablesの一種。(CentOS7からなので6以前は無視してOK)
対処としては、仮想マシンにログインした状態で、下記3コマンドを実行。
$ sudo chkconfig httpd on $ sudo service iptables stop $ sudo chkconfig iptables off
これでファイアウォールの設定を変更し、外部アクセスを許可する。