들어가며
이번 포스팅은 DD-WRT 공유기에서 opkg를 사용할 수 있다는 전제 하에 진행되는 것이며, opkg를 사용하기 때문에 이전에 다루었던 OpenWRT 공유기에 텍스트큐브 설치하기와 거의 대동소이한 진행 과정을 보입니다.다만, 저번 포스트와의 차이점라면 이번 포스트에서는 php5-fastcgi 대신 php5-cgi 를 이용하여 구축하였다는 점(나머지 lighttpd와 SQLite3은 동일하게 사용)과 포트 포워딩을 함께 다루었다는 점입니다.
준비물
- 텍스트큐브 1.9.0 베타 3* 이 외의 것들은 opkg 를 이용하여 설치할 것입니다.
설치 과정
패키지 설치
공유기에 SSH로 접속하여 다음의 패키지들을 설치합니다.
lighttpd-mod-cgi
php5-cgi
php5-mod-sqlite3
php5-mod-gd
php5-mod-session
php5-mod-xml
php5-cgi
php5-mod-sqlite3
php5-mod-gd
php5-mod-session
php5-mod-xml
콘솔 명령어
opkg update
opkg install lighttpd-mod-cgi php5-cgi php5-mod-sqlite3 php5-mod-session php5-mod-xml
opkg install lighttpd-mod-cgi php5-cgi php5-mod-sqlite3 php5-mod-session php5-mod-xml
이 패키지들을 설치하면 코어까지 자동적으로 설치가 진행됩니다.
lighttpd.conf 설정
/etc/lighttpd/lighttpd.conf 를 vi 로 열어, 다음 부분들을 찾아 수정합니다.사용할 모듈을 설정합니다.
그림과 같이 세 부분의 주석을 제거해 주세요.
server.modules = (
[...]
"mod_cgi",
[...]
)
[...]
"mod_cgi",
[...]
)
lighttpd로 구축할 서버의 문서 루트 경로를 설정합니다.
## a static document-root, for virtual-hosting take look at the
server.document-root = 웹서버의 루트로 사용할 경로 (예: /mnt/sda1/)
server.document-root = 웹서버의 루트로 사용할 경로 (예: /mnt/sda1/)
index 파일 형식을 설정하는 부분입니다.
## files to check for if .../ is requested
index-file.names = ( "index.html", "index.htm", "index.php" )
index-file.names = ( "index.html", "index.htm", "index.php" )
구축할 서버의 리슨 포트를 지정합니다.
기본값은 80이지만 이 포트는 웹 GUI(공유기 설정 페이지)가 사용중이므로 주석을 제거하여 다른 포트를 지정합니다.
## bind to port (default: 80)
server.port = 80/21/22 등을 제외한 다른 비주류 포트번호 (예: 8880)
server.port = 80/21/22 등을 제외한 다른 비주류 포트번호 (예: 8880)
php5-cgi 모듈을 사용하기 위해 다음 부분을 그림과 같이 변경해 줍니다.
#### CGI module
cgi.assign = ( ".php" => "/usr/bin/php" )
cgi.assign = ( ".php" => "/usr/bin/php" )
수정이 모두 끝났으면, ESC 를 눌러 입력 모드가 - 로 되게 변경한 후, :wq 를 입력하여 저장합니다.
php.ini 설정
/etc/php.ini 를 vi로 열어, 다음 부분들을 찾아 수정합니다.doc_root 를 찾아 비워줍니다.
; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
doc_root =
;include_path = ".:/php/includes"
doc_root =
php 확장 모듈을 설정합니다.
다음 네 개 모듈의 주석을 제거해 주세요.
; Dynamic Extensions
extension=gd.so
extension=session.so
extension=sqlite3.so
extension=xml.so
extension=gd.so
extension=session.so
extension=sqlite3.so
extension=xml.so
타임존을 설정하는 부분입니다.
[Date]
date.timezone = Asia/Seoul
date.timezone = Asia/Seoul
php의 설정을 마쳤으면 콘솔에 php-cgi -v 를 입력하여 에러가 나지는 않는지 확인해봅니다.
php-cgi -v
이 그림과 같이 에러 없이 출력되면 정상적으로 설정이 완료된 것!
만약 다이나믹 확장 모듈이 없거나 읽을 수 없다는 에러가 나타난다면, 해당 모듈이 제대로 설치 되었는지 확인해해주세요.
lighttpd 의 기동
lighttpd.conf와 php.ini의 설정이 완료되었다면, 콘솔에 다음과 같이 입력하여 lighttpd를 기동시키도록 합니다.
lighttpd -f (lighttpd.conf의 경로)
별 다른 메세지 없이 (log.c.75) server started 와 같은 식으로 출력되면 정상 작동하는 것으로, 이제 웹 서버가 설정대로 정상 동작하는지를 확인하기 위해 phpinfo() 페이지를 생성하도록 합니다.
(이 단계를 생략하고 바로 텍스트큐브의 설정으로 넘어가도 됩니다.)
lighttpd.conf 에서 설정한 서버 문서의 루트 경로로 이동하여 정보 파일을 생성합니다.
echo "<?php phpinfo(); ?>" phpinfo.php
에러 없이 생성이 완료되었다면, 브라우저를 이용하여 다음 페이지를 열어봅니다.
http://공유기IP:포트번호/phpinfo.php
다음 그림과 같은 페이지가 출력된다면 정상적으로 기동되는 것입니다.
텍스트 큐브 설정
Adapter.php 설정
텍스트큐브 1.9.0 베타 3 버전부터 DBMS로 SQLite3 를 지원하지만, 포함된 Adapter.php에서 db의 경로를 설정하는 부분이 자유롭지 못하므로 먼저 이를 고쳐주도록 하겠습니다.Adapter.php 파일을 vi로 엽니다.
vi /텍스트큐브가 설치된 경로/framework/data/SQLite3/Adapter.php
다음과 같이 24번째 라인을 변경해 줍니다.
self::$db = new SQLite3($database['database']);
이제 DB 경로를 자유롭게 설정할 수 있게 되었습니다.
텍스트큐브 1.9.0 베타 3 설치
브라우저를 이용하여 텍스트큐브의 압축이 풀린 경로로 이동하도록 합니다.
http://공유기IP:포트번호/tc
※ 다음 스크린샷들은 이전 OpenWRT 공유기에 텍스트큐브 설치하기의 포스트에서 그대로 가져온 것들입니다.
라이선스 안내입니다.
NEXT를 눌러 다음 단계로 넘어가도록 합니다.
새로운 텍스트큐브를 설정합니다.
DBMS를 설정하는 부분입니다.
위의 Adapter.php를 제대로 수정하였다면, 데이터베이스 이름에 데이터베이스의 전체 경로/데이터베이스 파일 명을 입력해 주시면 됩니다.
예) tc.db 라는 파일을 /mnt/ 에 생성한 경우
데이터베이스 이름 : /mnt/tc.db
만약 파일을 읽을 수 없다는 에러가 나타난다면 내용이 비어있는 파일을 해당 경로에 집어 넣고 이름을 변경해 주면 됩니다.데이터베이스 이름 : /mnt/tc.db
정상적으로 입력이 되었다면 설치 요구 사항을 확인하는 페이지가 나타납니다.
다음을 누르면 lighttpd 가 .htaccess 를 이용한 rewrite 모듈을 지원하지 않기 때문에 다음과 같은 에러가 나타나지만, 사용상의 큰 문제점은 없으므로 체크박스에 체크를 하고 다음으로 넘어가도록 합니다.
단일 블로그만이 선택 가능합니다.
관리자의 정보를 입력하고 다음을 누르면 블로그가 생성됩니다.
설정이 완료되었습니다.
위 링크로 접속해 보면...
느리긴 하지만 정상적으로 접속이 되는 것을 확인할 수 있습니다.
포트포워딩
외부로부터의 접근이 가능하게끔 하려면 포트포워딩을 시켜야 하는데, 이를 위해서 다음을 자신의 설정에 맞게끔 변경하여 콘솔에 입력합니다.
iptables -I INPUT -p tcp -d 공유기 IP --dport 서버 포트 번호 -j logaccept
iptables -t nat -I PREROUTING -p tcp -d $(nvram get wan_ipaddr) --dport 외부 포트 -j DNAT --to 공유기 IP:서버 포트 번호
iptables -t nat -I PREROUTING -p tcp -d $(nvram get wan_ipaddr) --dport 외부 포트 -j DNAT --to 공유기 IP:서버 포트 번호
가령, 공유기의 IP 주소가 192.168.1.1 이고, lighttpd 에서 설정한 서버의 포트 번호가 8080인데, 외부에서 공유기의 IP를 입력하여 접속시키고 싶다- 라면,
iptables -I INPUT -p tcp -d 192.168.1.1 --dport 8080 -j logaccept
iptables -t nat -I PREROUTING -p tcp -d $(nvram get wan_ipaddr) --dport 80 -j DNAT --to 192.168.1.1:8080
이와 같이 입력하면 됩니다.iptables -t nat -I PREROUTING -p tcp -d $(nvram get wan_ipaddr) --dport 80 -j DNAT --to 192.168.1.1:8080
만약 이를 입력해도 포트포워딩이 정상적으로 이루어지지 않는다면, 공유기를 재기동 시킨 후 가장 먼저 이를 입력해주면 정상적으로 동작할 것입니다.
이는 공유기를 재기동 할 때마다 별도로 입력해 주어야 합니다.
(이와 같은 콘솔 입력으로는 포트포워딩 설정이 저장되지 않음)
마치며
기본적으로 이번 포스트는 이전에 포스팅 하였던 OpenWRT 공유기에 텍스트큐브 설치하기와 거의 다를 바가 없습니다. 단지 php5-fastcgi 모듈을 사용하였느냐, php5-cgi 모듈을 사용하였느냐의 차이일 뿐이죠.따라서 자신의 기호에 맞게 설정하여 사용하면 되겠습니다.
읽어주셔서 감사합니다.
'컴퓨터' 카테고리의 다른 글
45만원 선 게임용 견적 (4) | 2011.07.13 |
---|---|
RewriteRule - 이전 주소 접근 시 변경된 주소로 이동시키기 (2) | 2011.07.12 |
공유기(EDIMAX BR-6204Wg)와 시리얼 통신 하기 (0) | 2011.07.11 |
티스토리 초대장을 드립니다. (종료) (11) | 2011.07.08 |
Firefox 에서 한글로 input 입력 시 onkeypress, onkeyup, onkeydown 안 먹는 문제 해결 트릭 (1) | 2011.07.08 |
DD-WRT 공유기에서 OPKG 사용하기 (2) | 2011.07.06 |
티스토리 블로그에 구글 맞춤검색 달기 (DIV의 display 이용) (2) | 2011.07.04 |
티스토리 블로그에 구글 맞춤검색 달기 (iframe 방식) (2) | 2011.07.02 |
자신의 블로그에 구글 번역 기능 달기 (2) | 2011.07.01 |
USB 메모리 4종 읽기 속도 비교 (0) | 2011.07.01 |
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.