LoginSignup
16
15

More than 5 years have passed since last update.

VagrantでローカルWebアプリ開発

Last updated at Posted at 2015-11-19

前提

  • 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で、アプリケーションにアクセスできると思います。

16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15