はじめに
今さらですが、久しぶりにローカルに LAMP 環境を構築する機会があったので手順などをメモします。
準備
以下をインストールします。
Ansible を使いたいので Homebrew でインストールしておきます。
$ brew install ansible
Vagrant
作業ディレクトリを用意して Vagrantfile を作成します。
# 作業ディレクトリの作成
$ mkdir /path/to/work/dir
$ cd /path/to/work/dir
# Vagrantfile の作成
$ vagrant init
box は Vagrant Cloud で提供されているものを使います。今回は centos/7
を利用します。IP アドレスはデフォルトで 192.168.33.10
です。
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.define "hoge" do |node|
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "data", "/vagrant", create: true
end
end
このまま vagrant up
するとおそらく共有フォルダのあたりでコケます。理由は VirtualBox Guest Additions のバージョンが合わないからです。なので、それをいい感じにしてくれる Vagrant のプラグインをインストールします。
$ vagrant plugin install vagrant-vbguest
これで vagrant up
すると、とりあえず CentOS な環境が出来上がります。ちなみに作成した環境にログインするときは vagrant ssh
でもいけますが vagrant ssh-connfig
すると ssh で接続するための情報が出力されます。~/.ssh/config
に書き込んでおくと ssh default
みたいな感じでログインできます。
Ansible
今回は手っ取り早く LAMP 環境を構築したいので、AP サーバとか DB サーバとかは個別に用意しません。
Vagrantfile があるところに provisioning ディレクトリを作成して、その中に playbook.yml として作成します。情報としては古いですが、昔参考にしていた記事 をもとに playbook を作成していきます。
- hosts: playground
become: yes
tasks:
- name: system update
yum:
name: '*'
state: latest
- name: install tools
yum:
name:
- wget
- vim
- git
- name: install repos
yum:
name:
- epel-release
- https://rpms.remirepo.net/enterprise/remi-release-7.rpm
state: present
- name: disable repos
replace:
path: /etc/yum.repos.d/{{item}}
regexp: 'enabled *= *1'
replace: 'enabled=0'
loop:
- epel.repo
- remi.repo
- remi-php70.repo
- name: install packages
yum:
name:
- httpd-devel
- php
- php-devel
- php-mbstring
- php-mysqlnd
- php-pdo
- mariadb-server
enablerepo: "epel,remi-php70"
- name: start httpd
service:
name: httpd
state: started
enabled: yes
- name: start mariadb
service:
name: mariadb
state: started
enabled: yes
これで vagrant provision
すると httpd/php/mariadb がインストールされた環境が構築されます。
ブラウザで http://192.168.33.10
にアクセスしてテストページが表示されていれば OK です。
