UbuntuにLAMP環境(PHP5.6)を構築する(構築~xdebug,composerの導入まで)

## 環境

* [Voyager X2(Xbuntu 14.04)](http://voyagerlive.org/)

## PHP5.6+apache2のインストール

```
$ sudo apt-get update
$ sudo apt-get install -y python-software-properties
$ sudo apt-add-repository ppa:ondrej/php5-5.6
```

### パッケージリストを最新化する
```
$ sudo apt-get update
```

### インストールされるPHPバージョンの確認
```
$ sudo apt-cache policy php5
php5:
  インストールされているバージョン: (なし)
  候補:               5.6.16+dfsg-1+deb.sury.org~trusty+1
  バージョンテーブル:
     5.6.16+dfsg-1+deb.sury.org~trusty+1 0
...省略
```

### インストール
```
$ sudo apt-get install -y php5
... 省略
以下の特別パッケージがインストールされます:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libonig2 libqdbm14
  libssl1.0.2 php5-cli php5-common php5-json php5-readline
提案パッケージ:
  apache2-doc apache2-suexec-pristine apache2-suexec-custom php-pear
  php5-user-cache
以下のパッケージが新たにインストールされます:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5 libapr1
  libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libonig2 libqdbm14
  libssl1.0.2 php5 php5-cli php5-common php5-json php5-readline
アップグレード: 0 個、新規インストール: 17 個、削除: 0 個、保留: 17 個。
```

どうやらapache2等も一緒に入れてくれるみたいです。

### 確認

```
$ php -v
PHP 5.6.16-1+deb.sury.org~trusty+1 (cli)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

$ apache2 -v
Server version: Apache/2.4.16 (Ubuntu)
Server built:   2015-09-08T00:00:00
```

## MariaDBのインストール

今回はMySQLではなくMariaDBを入れます。最近では安定でしょう。
公式サイトのRepository Configuration Toolを利用することで簡単にインストール方法がわかるので便利です。
http://downloads.mariadb.org/mariadb/repositories/

```
$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
$ sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.1/ubuntu trusty main'
```

### パッケージリストの最新化
```
$ sudo apt-get update
```

### インストール
```
$ sudo apt-get install mariadb-server
```

実行すると、rootのパスワードを設定しろと出てくるので設定しておきましょう。

### 確認
```
$ mysql --version
mysql  Ver 15.1 Distrib 10.1.9-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
```

## 関連する物をインストール

phpがmysqlに接続できるようにするためのモジュールのセット

```
$ sudo apt-get install php5-mysql
```

### xdebugの追加(必要な人だけ)

xdebugはデバッグツールです。

#### インストール
```
$ sudo apt-get install php5-xdebug
```

#### 追加されたか確認
```
$ php -v
PHP 5.6.16-1+deb.sury.org~trusty+1 (cli)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans
```

上記のようにXdebugが追加されているので成功ですね。
`/etc/php5/apache2/conf.d` 以下にxdebug用の設定ファイルがあるので設定しておきましょう。

```
sudo vi /etc/php5/apache2/conf.d/20-xdebug.ini
```

初期状態では、モジュールのロードがされる記述のみとなっています。その後に追加しましょう。
内容は適宜環境に合わせてください。

```
xdebug.remote_enable=1
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.idekey="sample-key"
```

あとはapacheを再起動しておきましょう。

```
$ sudo service apache2 restart
```

### composerの導入(必要な人だけ)

グローバルに使いたいので、グローバルに入れます。

```
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
```

入ったか確認

```
$ composer -V
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
Composer version 1.0-dev (feefd51565bb8ead38e355b9e501685b5254d0d5) 2015-12-03 16:17:58
```

xdebugが有効だと遅いよと怒られます。
一応、debian系だと`php5dismod xdebug`で無効化、`php5enmod xdebug`で有効化のようです。
ただ無効化状態だと全体でデバッグができなくなってしまいます。

確認してみると`/etc/php5/cli/conf.d/20-xdebug.ini`はシンボリックリンクで成り立っているようなので、cliのやつだけ削除したら良さそうです。
一旦はこれで良いと思います。もし必要になった場合は公式のようにaliasをつけるのと、シンボリックリンクを消したので、元ファイルをコピー等して、cliのみzend_extensionの部分のコメントアウトをすると良いでしょう。

## 参考

http://qiita.com/kikurage__/items/404edc69b242eb9d3342
http://fideloper.com/ubuntu-install-php54-lamp

あとでcomposerの追加も記載する予定です。→記載しました。