Vagrant+CentOS7.1でLAMP+Zephir+Phalcon2環境を作る

#Vagrant Boxを入れる

```lang:1.BOX追加
vagrant box add CentOS7 https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box
```
##
```lang:2.init
mkdir /vagrant/CentOS7 && cd $_
vagrant init CentOS7
```
##
```lang:3.Vagrantfile編集
vim Vagrantfile

#お好みで！
config.vm.synced_folder "/var/www", "/var/www", owner: "apache", group: "apache", mount_options: ["dmode=777", "fmode=777"]
```

#CentOS7.1の初期設定

##1.リポジトリ登録
```lang:リポジトリ優先度プラグイン
yum -y install yum-plugin-priorities
```

```lang:epel
yum -y install epel-release

#デフォルトで呼ばないように
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
```

```lang:RPMforge
yum -y install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

#デフォルトで呼ばないように
sed -i -e "s/enabled = 1/enabled = 0/g" /etc/yum.repos.d/rpmforge.repo
```

```lang:remi
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
```

```lang:MySQL
yum -y install http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
```

##2.yum update
```
yum -y update
```

##3.時刻同期設定
```lang:1.chronyインストール&サービス登録
yum install -y chrony
systemctl enable chronyd
```

```lang:2.同期サーバーを日本のサーバーに設定
vim /etc/chrony.conf
-----------------------------------------
server ntp.nict.jp iburst
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst
-----------------------------------------
```

```lang:3.chronyd再起動
systemctl start chronyd
```

```lang:4.タイムゾーンをAsia/Tokyoに設定
timedatectl set-timezone Asia/Tokyo
```

##4.Vim入れとこっ
```lang:インストール
yum -y install vim-enhanced
```

```lang:viとして使えるようにエイリアス
echo alias vi='vim' >> /etc/profile
source /etc/profile
```

##5.Firewall止める
```
systemctl stop firewalld
systemctl disable firewalld
```

##6.日本語対応にする
```lang:NKF
wget "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz" -O nkf-2.1.3.tar.gz
tar zxvf nkf-2.1.3.tar.gz
cd nkf-2.1.3
make && make install
rm -rf nkf-2.1.3*
ln -s /usr/local/bin/nkf /usr/bin/nkf
```

```lang:日本語関連パッケージ
yum -y install ibus-kkc vlgothic-*
```

```lang:システム文字セット変更
localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf 
```

##7.一旦reboot
```
reboot
```

#LMAP環境を作る
## Apache
####1.インストール&サービス登録
```lang:インストール
yum -y install httpd
```

```lang:サービス登録
systemctl enable httpd
```

## MySQL
####1.インストール&サービス登録
```lang:インストール
yum -y install mysql-community-server
※デフォルトバージョンは5.6のはず
```

```lang:サービス登録
systemctl enable mysqld
```

####2.初期設定
```lang:my.cnf編集
mv /etc/my.cnf /etc/my.cnf.bk
cat <<EOF > /etc/my.cnf
[client]
default-character-set=utf8

[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8
EOF
```

```lang:セットアップ
mysql_secure_installation
>Enter current password for root (enter for none):
[何も入力せずEnter]

# root ユーザーのパスワードを変更するか？
>Change the root password? [Y/n]
['Y'を入力してEnter]
>New password:
[パスワードを入力してEnter]
>Re-enter new password:
[パスワード入力してEnter]
# 匿名ユーザーを削除するか？
>Remove anonymous users? [Y/n]
['Y'を入力してEnter]
# リモートから root ユーザーのログインを禁止するか？
Disallow root login remotely? [Y/n]
['Y'を入力してEnter]
# test データベースを削除するか？
>Remove test database and access to it? [Y/n]
['Y'を入力してEnter]
# 権限テーブルをリロードするか？
>Reload privilege tables now? [Y/n]
['Y'を入力してEnter]

# MySQLを再起動
systemctl restart mysqld
```

## PHP5.6
#### 1.インストール

```lang:本体インストール
yum --enablerepo=remi-php56 -y install php php-devel
```

```lang:使いそうなものインストール
yum --enablerepo=epel,remi,remi-php56 -y install php-gd php-mbstring php-mcrypt php-xml php-pear php-pdo php-mysqlnd php-pecl-apc php-sqlite
```

#### 2.初期設定
```lang:php.ini編集
# タイムゾーン設定
sed -i "s/;date.timezone =/date.timezone = 'Asia\/Tokyo'/" /etc/php.ini

# mbstring系の設定
sed -i "s/;mbstring.language = Japanese/mbstring.language = Japanese/" /etc/php.ini
sed -i "s/;mbstring.internal_encoding =/mbstring.internal_encoding = UTF-8/" /etc/php.ini
sed -i "s/;mbstring.http_input =/mbstring.http_input = UTF-8/" /etc/php.ini
```

##xhprof
```lang:インストール
pecl install xhprof channel://pecl.php.net/xhprof-0.9.4
```

```lang:iniファイル追加
echo extension=xhprof.so >> /etc/php.d/xhprof.ini
```

##Composer
```lang:インストール
cd /tmp && curl -s http://getcomposer.org/installer | php
```

```lang:composerコマンドで使えるようにする
mv /tmp/composer.phar /usr/local/bin/composer
```

##Phalcon2

```lang:re2cインストール
yum -y install http://pkgs.repoforge.org/re2c/re2c-0.13.5-1.el6.rf.x86_64.rpm
```

```lang:Zephirインストール
cd /usr/local/src
git clone https://github.com/phalcon/zephir
git clone https://github.com/phalcon/json-c zephir/json-c
cd zephir
./install-json
./install -c
```

```lang:Phalcon2をyumでインストール
yum --enablerepo=remi-php56 -y install php-phalcon2
```

*※@kenjis様よりコメントにてremiリポジトリにPhalcon2が存在するとの情報をご提供いただきましたので、コンパイルでのインストール方法は削除いたしました。*

```lang:devtoolインストール
mkdir /usr/local/phalcon-devtool && cd $_
cat <<EOF > composer.json
{
  "require": {
    "phalcon/devtools": "dev-master"
  }
}
EOF
composer install
```

```lang:phalconコマンドとして使えるように
ln -s /usr/local/phalcon-devtool/vendor/phalcon/devtools/phalcon.php /usr/bin/phalcon
chmod ugo+x /usr/bin/phalcon
```

#KVS

##memcached
####1.インストール
```lang:インストール
yum --enablerepo=remi -y install memcached
```

```lang:起動
systemctl start memcached
```

```lang:サービス登録
systemctl enable memcached
```

####2.PHPで使えるようにする
```lang:パッケージインストール
yum --enablerepo=remi-php56 -y install php-pecl-memcached
```

##Redis
####1.インストール
```lang:インストール
yum --enablerepo=epel,remi -y install redis
```

```lang:起動
systemctl start redis
```

```lang:サービス登録
systemctl enable redis
```

####2.PHPで使えるようにする
```lang:パッケージインストール
yum --enablerepo=remi-php56 -y install php-pecl-redis
```

#その他
##ImageMagick
####1.インストール
```
yum --enablerepo=remi -y install ImageMagick-last
```

####2.PHPで使えるようにする
```
yum --enablerepo=remi-php56 -y install php-pecl-imagick php-pecl-imagick-devel
```

##Mecab
####1.インストール
```
yum -y install gcc-c++ wget
mkdir /usr/local/mecab && cd $_
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar xvfz mecab-0.996.tar.gz
cd mecab-0.996 && ./configure
make && make check && make install
cd /usr/local/mecab
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
tar xvfz mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801 && ./configure --with-charset=utf8
make && make install
```

####2.PHPで使えるようにする
```
pear channel-discover pecl.opendogs.org
pear remote-list -c opendogs
pear install opendogs/mecab-beta
> specify pathname to mecab-config [no] : [空エンター]
※/usr/lib64/php/modules/mecab.so にインストールされるはず

echo extension=mecab.so >> /etc/php.d/mecab.ini
```