前提
- Mac OSX
- 「brew cask」インストール済み
VagrantでVMを起動する
1. brewで、virtualboxとvagrantをインストールします。
brew cask install virtualbox
brew cask install vagrant
2. boxを追加する
以下から、開発環境にあったOSを選択して、boxとして追加します。
http://www.vagrantbox.es/
vagrant box add centos70 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
3. Vagrantディレクトリの初期化
コマンドを実行したカレントディレクトリに
Vagrantfile
が作成されます。
vagrant init centos70
4. VMの起動
手順3で初期化したディレクトリで、VMを起動します。
vagrant up
固定IPを割り振る
1. Vagrantfile
を編集して、IPを固定化します。
vim Vagrantfile
------
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.33.10"
------
2. 再起動して設定を反映する
vagrant reload
VMにSSHで接続する
vagrant ssh
ファイアウォールを無効化する
CentOS7からデフォルトでonになっているようなので、stopします。
# VM側
sudo systemctl stop firewalld
Webサーバーを起動する
1. httpd24+PHP56をインストールする
# VM側
sudo yum install epel-release
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm -Uvh remi-release-7.rpm
sudo yum install httpd
sudo chkconfig httpd on # 自動起動設定
sudo yum install -y --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof
2. httpdを起動する
# VM側
sudo service httpd start
3. Webサイトにアクセスする
以下のURLで、Apacheのテストページにアクセスできると思います。
http://192.168.33.10
ホストとVM間で、ディレクトリ共有
ホストとVMでディレクトリ共有を行うことで、
ホスト側で編集したファイルをVM側のWebサーバーでホスティングさせることができます。
Vagrantの場合、特別な設定は不要です。
vagrant init :box名
で初期化したディレクトリが共有ディレクトリになります。
#VM側の共有フォルダ
/vagrant
VM側でドキュメントルートとなる場所にシンボリックリンクを貼れば、VM側でホスティングできます。
vagrant ssh
#VM側
ln -s /vagrant/sampleapp /var/www/sampleapp
ホストOS側の任意のパスを共有したい
vagrantの共有ディレクトリに、ホストOS側のパスに対してシンボリックリンクを貼っても
VM側からホストOS側のパスを参照できないため、リンク切れの状態になります。
そのため、以下の方法でVM側とホスト側で同期を取ります。
1. Vagrantfileに共有設定を追加する
config.vm.synced_folderの第一引数に「ホスト側のパス」、第二引数に「VM側のパス」を指定します。
# ホスト側
vim Vagrantfile
------
config.vm.synced_folder "ホスト側のパス", "/var/www/sampleapp", type: "rsync"
------
2. 再起動する
# ホスト側
vagrant reload
3. 同期自動監視する
自動で同期が行われないため、以下のコマンドで監視します。
# ホスト側
vagrant rsync-auto
Virtual Hostの設定
複数アプリケーションの運用を想定して、vhostの設定を行います。
1. vhostを設定する
# ホスト側
vagrant ssh
# VM側
sudo vi /etc/httpd/conf.d/vhost.conf
------
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/var/www/sampleapp"
ServerName vm.sampleapp.co.jp
<Directory /var/www/sampleapp>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
------
2. httpdを再起動する
# VM側
sudo httpd -k restart
hostsを設定して、vhostで起動したアプリにアクセスする
今の状態で、http://vm.sampleapp.co.jp
にアクセスしても
ページが見つからずエラーとなります。
hostsを設定することで、vm.sampleapp.co.jp
のドメインで
VM側のWebサーバーにアクセスすることができます。
# ホスト側
sudo vim /etc/hosts
------
192.168.33.10 vm.sampleapp.co.jp
------
http://vm.sampleapp.co.jp
で、アプリケーションにアクセスできると思います。