CentOS7にPHP5.4とCakePHPをインストール

1. EC2をインストール。マーケットプレースからCentOS7のAMIを選ぶ
2. セキュリティグループの設定からインバウンドのタブを選び「編集」を押し、HTTPからのアクセスを許可。
3. centosユーザでログイン
4. システムロケールを変更

    ```
    $ sudo localectl set-locale LANG=ja_JP.UTF8
    ```

5. システムロケールの有効化

    ```
    $ sudo source /etc/locale.conf
    ```

6. タイムゾーンを日本に変更

    ```
    $ sudo timedatectl set-timezone Asia/Tokyo
    ```

7. SELinuxを無効にする

    ```
    vi /etc/selinux/config
    ```

    ```
    + SELINUX=enforcing
    - SELINUX=disabled
    ```

8. 再起動する

    ```
    # shudown -Fr now
    ```

9. PHP7とpostgresqlをインストール（ついでにmlocateとgitも）

    ```
    # yum -y install php
    # yum -y install php-mbstring php-xml php-gd php-mcrypt php-intl 
    # yum -y install php-pecl-memcache php-process php-pear php-xmlrpc 
    # yum -y install php-pgsql php-soap php-odbc php-pdo php-recode php-ldap
    ```

    ```
    # yum -y install postgresql postgresql-server postgresql-devel
    # yum -y install mlocate git
    ```

10. composerのインストール

    こちらのURLのCommand-line installationの部分を実行してください：
    https://getcomposer.org/download/
    以下はサンプルです：

    ```
    # php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    # php -r "if (hash_file('SHA384', 'composer-setup.php') ===     'aa96f26c2b67226a324c27919f1eb05f21c248b987e6195cad9690d5c1ff713d53020a02ac8c217dbf90a7eacc9d141d') { echo 'Installer verified'; } else { echo 'Installer     corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    # php composer-setup.php
    # php -r "unlink('composer-setup.php');"
    ```

11. composer.pharを移動させます

    ```
    # mv composer.phar /usr/local/bin/composer
    ```

12. centosユーザのPATHに/usr/local/binを追加

    ```
    # exit 
    $ cd
    $ vi /home/centos/.bash_profile
    - PATH=$PATH:$HOME/.local/bin:$HOME/bin
    + PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/bin
    ```

13. cakephp3のインストールディレクトリを書き込み可能に

    ```
    $ sudo bash
    # cd /var/www
    # chmod 777 html
    # exit
    ```

14. cakephp3をインストール

    ```
    $ source /home/centos/.bash_profile
    $ cd /var/www/html
    $ composer self-update && composer create-project --prefer-dist cakephp/app ./app
    ```

    *特定のバージョン、例えば3.1系の最新をインストールしたい場合は、

    ```
    $ composer self-update && composer create-project --prefer-dist cakephp/app:3.1.* ./app
    ```

    とする

    途中でSet Folder Permissionsについて聞かれたらYesと回答：

    ```
    Set Folder Permissions ? (Default to Y) [Y,n]? Y
    ```

15. データベースの設定を変更（default）

    変更箇所はapp.phpの223～234行

    ```
    $ vi /var/www/html/app/config/app.php
    -             'driver' => 'Cake\Database\Driver\Mysql',
    +             'driver' => 'Cake\Database\Driver\Postgres',
    -             'username' => 'my_app',
    +             'username' => 'postgres',
    -             'password' => 'secret',
    +             'password' => '',
    -             'database' => 'my_app',
    +             'database' => 'cakephp_dev',
    ```

16. タイムゾーンを変更

    ```/var/www/html/app/config/bootstrap.php
    - date_default_timezone_set('UTC');
    + date_default_timezone_set('Asia/Tokyo');
    ```

17. データベースの設定を変更（test）

    手順11と同じだが、変更箇所はapp.phpの268～274行。
    また'database' => 'cakephp_test'とする

18. URLのリライトを可能にする

    変更箇所は/etc/httpd/conf/httpd.confの151行目

    ```
    $ sudo bash
    # vi /etc/httpd/conf/httpd.conf
    
    - AllowOverride None
    + AllowOverride All
    ```

19. DocumentRootを変更する

    ```
    $ sudo bash
    # vi /etc/httpd/conf/httpd.conf
    
    - DocumentRoot "/var/www/html"
    + DocumentRoot "/var/www/html/app/webroot"
    ```

20. データベースの初期化

    ```
    # su - postgres
    $ /usr/lib64/pgsql/bin/initdb -D /var/lib/pgsql/data/
    $ exit
    ```

21. postgresqlとhttpdの起動

    ```
    # service httpd start
    # service postgresql start
    ```

22. データベースの作成

    ```
    # /usr/bin/createdb -U postgres -p 5432 -h localhost cakephp_dev
    ```

23. 動作確認

    ブラウザを開き、ec2のパブリックIPを指定する