EC2 Amazon LinuxのインスタンスにCakePHPの環境を構築する

Amazon EC2CakePHPの環境を作ってみた際のメモです。

Amazon Linuxだから引っかかったというところはほとんど無いです。
Amazon LinuxyumリポジトリCentOS 5.5よりも新しく、PHPは5.3、MySQL5.1がインストールされるので、CentOSが素で入っているクラウド/VPSサービスよりも環境構築は楽かと。

LAMPのインストール

インスタンス作成後、とりあえずまずはyum update

$ sudo yum update

yumLAMPをインストール

$ sudo yum install httpd php mysql-server php-mysql

バージョンの確認

PHP
$ php -v
PHP 5.3.6 (cli) (built: Mar 29 2011 19:13:32) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

CentOSと異なりAmazon Linuxでは、デフォルトのリポジトリで5.3が入ります。

Apache2

Apacheはデフォルトでインストールされていのでバージョンのみ確認
$ httpd -v
Server version: Apache/2.2.16 (Unix)
Server built: Jan 16 2011 12:22:02

MySQL
$ sudo /etc/init.d/mysqld start
$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.52 Source distribution

PHPの動作確認

$ vi /var/www/html/info.php
<?php phpinfo(); ?>


設定変更

Apacheの設定

KeepAliveはデフォルトOffなのでOnにしておきます。

$ sudo vi /etc/httpd/conf/httpd.conf 
KeepAlive On
PHPの設定

日本語の設定等をします。

$ sudo /etc/php.ini 
;default_charset = "iso-8859-1"
default_charset = "UTF-8"

;mbstring.language = Japanese
mbstring.language = Japanese

;mbstring.internal_encoding = EUC-JP
mbstring.internal_encoding = UTF-8

short_open_tag = Off
short_open_tag = On

※ short_open_tagの設定は今回始めてしましたが、これはAmazon Linuxだから?それともPHPの細かいバージョンによってことなるのでしょうか?
これがOnになっていないと<?= ?>の記述が使えません。

CakePHPの動作確認

https://github.com/cakephp/cakephp/downloads
から2011年5月現在の安定版の最新1.3.8をダウンロードするか、wgetでダウンロードします。

$ wget --no-check-certificate http://github.com/cakephp/cakephp/tarball/1.3.8
$ cd /var/www/html
$ sudo tar xvfz ~/cakephp-cakephp-1.3.8-0-g33afe21.tar.gz
$ sudo mv cakephp-cakephp-41cd0e4 cakephp
Apacheの設定

CakePHPに含まれる.htaccessを使う場合は、AllowOverride Allを指定します。

$ sudo vi /etc/httpd/conf.d/cakephp.conf

    DocumentRoot /var/www/html/cakephp
    
      AllowOverride All
    

設定を読み込みます。

$ sudo /etc/init.d/httpd reload
cacheディレクトリの権限変更
$ sudo chown -R apache:apache cakephp
$ sudo chmod -R +w cakephp/app/tmp/cache
$ sudo vi cakephp/app/config/core.php

「Security.salt」、「Security.cipherSeed」の値を適当に変更して、「date_default_timezone_set('UTC');」のコメントを外します(http://book.cakephp.org/ja/view/920/%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D)

/**
 * A random string used in security hashing methods.
 */
        Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
        Configure::write('Security.cipherSeed', '76859309657453542496749683645');

...

/**
 * If you are on PHP 5.3 uncomment this line and correct your server timezone
 * to fix the date & time related errors.
 */
	date_default_timezone_set('UTC');

以上で、アプリケーション開発環境は整いました。
ここまでの設定を追えてトップページを表示してみたスクリーンショット、残るエラーはデータベースの設定のみです。

データベースの設定を始めアプリケーション開発については公式マニュアルを参照ください。

http://book.cakephp.org/ja/