Unix

CakePHP 설치하다

ForceCore 2009. 3. 20. 13:21
public_html 에 유저로서 설치하되...
이런 디렉토리 구조로 해봤다.
숙제 제출하는 홈페이지다 -_-a

디렉토리 구조:

http://book.cakephp.org/view/35/Advanced-Installation : 필자의 설정을 따르려면 공식 매뉴얼의 이 글을 많이 참고해야 할 것이다.

~ = /home/id
~/cake_1.2.1.8004
~/cake -> ~/cake_1.2.1.8004
~/database
~/public_html/2009_spring

후웃?!
그렇다. 여기저기 파일이 뒤섞여있는 advanced setup인데다가...
database디렉토리가 따로 있다 = DB를 mysql도 아니고 sqlite를 쓴다.
sqlite이기 때문에, public_html의 바깥에 두었다.
2009_spring 이라고 된 디렉토리는 뭐냐면...

보통 cakephp를 압축 해제하기만 한다면,
$CAKE = /home/id/cake (소프트링크)
$CAKE/app/webroot 가 있는데 이걸 2009_spring 이라고 이름 바꾸고 public_html에 넣은 것이다.
$CAKE/cake
$CAKE/app
이렇게 크게 세 디렉토리가 있다고 볼 수 있다. 그 중 webroot를 public_html 위치로 옮겼다고 보면 된다.

mod_rewrite:
요즘은 이게 대세다. 되게 해놓으라 -_-;; 유저 홈디렉토리에도...

테스트 접속:
http://서버/~id/2009_spring 으로 접속하니... 당연히 에러가 뜬다.
$CAKE 디렉토리 요소들의 뼈와 살을 분리해서 따로 놀게 했기 때문임.
우선은 2009_spring 안의 index.php 를 잘 수정해줘야 한다.

define('ROOT'   , '/home/id/cake');
define('APP_DIR', 'app');
define('CAKE_CORE_INCLUDE_PATH', ROOT);
필자는 이렇게 정의하니 성공을... 반쪽짜리로 했다.
제대로 되지 않는다... mod_rewrite는 유저 홈디렉토리에서 돌아가는 것을 기준으로 작성되지 않았기 때문이다.
2009_spring의 .htaccess 도 바꿔줘야만 한다.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /~id/2009_spring
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

이렇게 한 줄만 더 넣으면 충분하다.

DB설정:
sqlite를 쓰려면 어떻게 해야 한다는 말을 잘 못봤다 -_-;;; 아래와 같이 하면 된다.
$CAKE/app/config/database.php

    var $default = array(
        'driver' => 'sqlite',
        'persistent' => false,
        'database' => '/home/id/database/dbname.sqlite',
        'prefix' => '',
    );

sqlite DB의 특성상 비번이나 ID같은게 필요 없다 = 보안이 다소 취약할 수 있다. 잘못하면. 당연히 public_html 안에 두면 안 된다. http 프로토콜로 다운받아갈 수 있게 되면, 큰일난다.

그리고 db에 write까지 할 권한을 줘야 한다. 이 때 주의사항은, dbname.sqlite 파일만 666 권한을 주면 안 된다는 것이다. 그것을 품은 디렉토리인 database 디렉토리도 777권한으로 변경해야지만 sqlite write 가 성공한다.