vagrantでローカルpcに開発環境を作る手順

はじめに

最近で1人vpsレンタルサーバでの作業が多かったのでsshでログインして直接作業してしまうことが多かった。
今後、2人以上で作業することもあると思うがそのときは各自ローカルpcで作業してソース管理ツールで共有して。という流れがやはり望ましいのだと思う。で、とりあえずローカルpcで作業するための作業メモです

前提条件は以下です
・とりあえず開発端末はmac(手元にこれしかないから)
・virturalbox、vagrantがインストール済み

vagrant boxを作成してsshでログインするまで

A list of base boxes for Vagrant - Vagrantbox.es
ここにあるものが作成できる環境で必要なものを選択してインストール可能です。今回は64bit版のcentosをいれます

// vagrant boxの作成
# vagrant box add centos64 https://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box
# mkdir centos64 && cd centos64 && vagrant init centos64

// Vagrantfileの編集 private ipの設定 26行目くらい ※コメントアウトを外す
#config.vm.network :private_network, ip: "192.168.33.10"
config.vm.network :private_network, ip: "192.168.33.10"

// 確認
# vagrant box list
centos64 (virtualbox)

// 起動
# vagrant up

// ssh接続
# vagrant ssh
はじめにやっておいたほうがいい作業
# sudo yum update
# yum install wget
yumレポジトリにremiを追加

デフォルトのものだとバージョンがそれぞれ、phpが5.3.3、mysqlが5.1.73と少し古いのでremiをレポジトリに登録して新しいバージョンのものをインストールできるようにします。

// 作業ディレクトリ
# mkdir -p ~/work/`date +"%Y%m%d"` && cd ~/work/`date +"%Y%m%d"`

// remiダウンロード
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

// remiインストール
# sudo rpm -Uhv remi-release-6.rpm
apachephpmysqlのインストール

webサーバ設定作業メモ - 私用 - とりあえずphpとか
基本的にはこちらに書いてある手順になるのですが、phpmysqlはremiからインストールしたいので以下のようにremiを指定してインストールします。

// phpをremiからインストール
# yum install php php-devel php-mysql php-gd php-mbstring --enablerepo=remi
# php-v 
PHP 5.4.38 (cli) (built: Feb 18 2015 16:46:56) 

// mysqlをremiからインストール
# yum install mysql-server --enablerepo=remi
# mysql --version
mysql  Ver 14.14 Distrib 5.5.42, for Linux (x86_64) using readline 5.1

その他、以下は上記ページに書いたとおりに行います
apacheのインストール
httpd.conf、php.ini、my.cnfの設定
apachemysql自動起動の設定

で、apacheが起動していることを確認するためにブラウザで「http://192.168.33.10/」にアクセスしてapacheのtestページが表示されていればokです

また、そのままだと以下のワーニングが出たのでその対応もメモ

> service httpd configtest
httpd: apr_sockaddr_info_get() failed for vagrant-centos64.vagrantup.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK

vi /etc/hosts

127.0.0.1  ・・・vagrant-centos64.vagrantup.com // 127.0.0.1の行の末尾に追加

vi /etc/httpd/conf/httpd.conf

ServerName vagrant-centos64.vagrantup.com
共有フォルダの設定

今のままだとwebサイトなどを開発する際に、vagrant sshで仮想サーバにログイン後にviなどでファイルを編集して。という形で開発を進めていく形になる。
まぁこれでもいいといえばいいのですが、vagrantの共有フォルダ機能を使えばいちいちsshログインしなくてもローカルのpcで編集すれば仮想サーバ側にも同期されるようなのでコレを設定します。
作業pcから仮想サーバの特定のディレクトリへのシンボリックリンクみたいなイメージになります。

// web開発作業用フォルダの作成
mkdir ./www

vi Vagrantfile

// 42行目くらい コメントアウトを外して ./www(ホストPC)と/var/www/html(仮想サーバ)をリンクさせる
# config.vm.synced_folder "../data", "/vagrant_data"
config.vm.synced_folder "./www", "/var/www/html"
githubへ登録

githubのアカウントは取得しておいてください

1. githubへアクセスしてページ右下の「New Repository」ボタンを押す
https://github.com/

2. 「Repository name」を入力して「Create Repository」ボタンを押す
今回はtestとします

3. 完了ページに初期化用のコマンド例が表示されるので、ローカルpcで実行

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/***/test.git
git push -u origin master
途中から開発する人が増えたら環境を渡す

各々が上記の作業を行うっていうのも手間だと思うので(環境構築は勉強になるのでやったほうがいいこともあるとは思うのですが)、ここまで作った環境を別マシンにコピーする方法

// コピー元のVagrantfileがあるフォルダにて以下コマンド実行で、package.boxが生成される
# vagrant package

// コピー先のマシンにpackage.boxをコピー

// boxを作成
vagrant add test ./package.box

// boxを初期化
vagrant init test

// 起動してsshログイン
vagrant up && vagrant ssh

あとはwebサーバとかmysqlのユーザ作成とかすれば、とりあえず開発はスタートできそうです。
参考:webサーバ設定作業メモ2 - 私用 - とりあえずphpとか

以下を参考にしました
Apache の httpd: apr_sockaddr_info_get() failed for エラー
Apacheのエラー:Could not reliably determine the server’s fully qualified domain name… | Weblogy

以上です