CakePHPをインストール

まずは公式サイトからCakePHPをダウンロード&解凍。
インストール方法が開発と運用と応用の3パターンあったのでいきなり応用で試してみたら見事に玉砕。
仕方なく開発→運用→応用と順番に入れ替える作戦に変更。


開発と運用の差はDocumentRootの設定だけみたい。
こちらは難なく動いた。
さて問題の応用インストール。

とりあえずコアライブラリを移動

/var

インストール直後の状態からappフォルダ以外を/usr/lib64へ移動。

/usr

/var

  • /www
    • /cake_app
      • /webroot

階層が変わったのでDocumentRootを変更し、webroot直下のindex.phpを修正。

define('ROOT', DS.'var'.DS.'www');
define ('APP_DIR', 'cake_app');
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib64'.DS.'cake_core'.DS);

ここまでは大丈夫。

アプリフォルダの場所変更

cake_app内でwebroot以外を場所homeディレクトリへ移動。

/home

  • /me
    • /cake_app

/usr

  • /lib64
    • /cake_core

/var

  • /www
    • /webroot

またまた階層が変わったのでDocumentRootを修正して、webroot直下のindex.phpを修正。

define('ROOT', DS.'home'.DS.'me');

この変更で画面真っ白け。
てことはアプリフォルダの設定がまずいみたい。
調べてみたら/home/meのパーミッションがme以外のユーザーが参照できないようになってたので、
PHPからでも参照できるようにパーミッションを変更。
これで無事インストール完了。

SliceHostにmemcachedをインストール

キャッシュは今までPEARのCache_Liteを使ってたけど、メモリを使ったmemcachedの方がよさげなので一応インストール。
サーバサイドに常駐するmemcachedと、PHPからキャッシュ操作を行うPECLのMemcacheが必要。
memcachedはlibeventというライブラリを使用しているので、まずはlibeventをインストール

yum install libevent-devel

memcachedyumでインストール出来ないので、コンパイルしてインストールする。
バージョンは1.2.8を選択。

wget http://www.danga.com/memcached/dist/memcached-1.2.8.tar.gz
tar zxvf memcached-1.2.8.tar.gz
cd memcached-1.2.8
./configure
make
make install

特に問題なくインストール終了。
memcachedを起動しておく。
rootで操作していたので、-u nobodyを付けて実行。

memcached -d -m 64 -p 11211 -u nobody

次にPECLのMemcacheをインストール

pecl install memcache

php.iniにextension=memcache.soを追加して再起動。
また例によってインストールしたのにPHP側が認識しない。
最初にyumphp-pecl-memcacheとかインストールしたせいだろうか。
消したり入れ直したりしてたらようやく動いた。
php-pecl-memcacheはいらないみたい。


参考ページ:
PHP: Memcache - Manual
memcachedをインストールしphpから使用する - 適当な日々

SliceHostにTritonnをインストール

MySQLを入れたけど日本語で全文検索したいのでTritonnに差し替えてみた。
OSはCentOS 5.3。


RPMでのインストールを解説していたページがあったのでそれを参考に、tritonn-1.0.12-mysql-5.0.67をインストール。
Tritonnのインストールが無事終了したのは良いけど、php-mysqlがインストールできなくて困った。
conflictsって出てるからTritonnで入れたmysql-serverと衝突してるっぽい。
バージョン下げたりしても全然ダメ。


もうこりゃお手上げかなーって思ったら、自分のサーバ環境と違うパッケージをインストールしてた。
そりゃ衝突するわ。。。ちゃんとしたパッケージを入れ直したら衝突することなくインストール完了。
日本語で全文検索を試したらバッチリ動いた。2日も悩んだよ。。。


参考ページ:
やすみやすみ 技術編: Tritonn (MySQL with Senna, MeCab) を CentOS 5.2 にインストール

SliceHostにPECLインストール

とりあえずImageMagickとHTTPRequestをインストール。
peclコマンドでインストールしようと思ったらnot found。
PEARを入れてなかったのが原因みたい。てことでまずはPEARをインストール。

yum install php-pear

peclコマンドでimagickをインストールしてみるとメモリ絡みでエラー。
どうやらメモリが確保できてないみたい。
php.iniでmemory_limitを修正しても何故か効かない。

調べてみると、iniファイルを変更してもダメな時は直接ini_setでmemory_limitを設定するといいみたい。
てことでpearcmd.php内に

ini_set('memory_limit', '16M');

を追加。
メモリエラーは回避したけどImageMagickが足りないみたい。
yumコマンドでImageMagickをインストール。

yum -y install ImageMagick-devel

これでインストール成功。
php.iniにextension=imagick.soを追加したら無事完了。
と思ったらphpinfo()で確認してもImageMagickが入ってない。
peclコマンドで確認するとインストールは出来てるっぽいけど、PHP側がロード出来てないのかな。
とりあえずimagickのバージョンを2.2.2から2.2.1に落としたら認識した。
PHP5.2.6でimagick2.2.2は使えないのかな〜


続いてHTTPRequestをインストールしてみると何やらいろいろ足りない模様。
zlib-develとcurl-develが足りないようなのでyumコマンドでインストール。
再度HTTPRequestをインストール。
インストールが出来たらphp.iniにextension=http.soを追加でこちらは無事完了。


参考サイト:
PECLコマンドが成功するまでのエラー解決備忘録(imagick編) : うえちょこ@ぼろぐ
PHPのHTTPRequestクラスを入れるのに一苦労

SliceHostに乗り換えてみる

root権限が欲しくて手頃なVPSを探していたら、SliceHostが引っ掛かってきたので登録してみた。
さくらでも良かったけどトラブルあったり、何かと制限あるからね。。。
Sign Up // Slicehost

アカウント登録

とりあえず一番安い「256 slice」を選択。
メモリ256MB、ディスク10GBで20$。
転送量が100GB制限らしいけどそこまで規模はないので多分大丈夫。

サーバ周りの設定

こちらのサイトを参考にセットアップ。
it : CentOS5 on SliceHost - 02 - 構築の準備とログイン

ApachePHPMySQLのインストール&設定まで丁寧に説明されてて、
あまりトラブルことなく無事MySQLの設定まで完了。
はまったところをメモ。

パスワード無しでのログイン

Windowsユーザーなもので、PuTTYを使用するため、
鍵の作成がちょっと違う。
PuTTYでパスワード無しのログインをやるにはこちらを参考に設定。
PuTTY で鍵交換方式による SSH 接続

最新版PHPのインストール

こちらのサイトを参考にインストール。
CentOS5にPHP5.2.5を割と簡単にアップデートする方法みーっけ★ - GuinEa Pig

いきなりApacheが動かなくなって焦った。
何故かリロードコマンドが失敗する。。。
仕方ないので

yum remove php

で一度PHPを削除して入れ直し。
再度リロードするも失敗。
頭に来たからリスタートに変えたら成功。
どうもApacheが動いていなかっただけみたい。

MySQLルートパスワードの設定

上手くいかなかったのでマニュアルから参照。
MySQL :: MySQL 5.1 リファレンスマニュアル :: 2.10.3 最初の MySQL アカウントの確保

SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');

VersionControl_SVNを使ってみた

PEARsvnコマンドを制御できるVersionControl_SVNというのがあったので使ってみた。
ちょっとはまったところをメモ。

PEARマニュアル

マニュアルの例をベースにパスやらを変えて実行したらエラー。
svnのパスが違うので修正。

//自分の環境合わせて修正する
var $svn_path = '/usr/local/bin/svn';

ワイルドカードを指定すると勝手にエスケープされるので、実行時にuse_escapeshellcmdプロパティをfalseに設定。
引数はrunメソッドの第一引数に配列で渡す。
中身を見ると単純にスペースで連結してるだけなので、渡したい引数を配列に設定すれば大丈夫。