개인 클라우드를 꿈꾸며 구매했던 포고 플러그..생각보다 성능이 좋질 않아... 거의 놀고 있었다...

 

제가 써본 포고 플러그는

 

1. 외장하드 연결시 HDD 검사 같은 프로세싱을 거치는 관계로 마운트까지 상당 시간이 걸린다.

2. 안드로이드 계열은 덜한데 iOS계열에서 연결시 접속 시간이 꽤 걸린다.

 (이 점은 이해가 안감. 왜 Mobile Device 별로 시간이 다르게 걸리는지..)

3. 동영상 파일을 온라인으로 보기에는 현실적으로 불가능함 ( Local에서 wifi 환경에서도 불가능 )

 

그런 상황에서 우연히 알게된 포고 플러그 커스터마이징해서 쓰기...

 

Embeded Linux 인 관계로.. 이것 저것 고쳐 쓰는 분들이 꽤 계셨다..

어떤 분은 분해까지 해서 쓰시던데... 전 그냥.. PKG 설치 정도에서 마무리..

 

지금부터 설명하는 것은 Pogoplug를 Torrent Client로 만드는 과정이다.

 

즉 특정 디렉토리에 Torrent Seed 파일을 넣어두면 자동으로 Download하게 만드는 형식이다.

토렌토를 위해 PC를 안켜도 된다는 것이죠...

 

 

구축 환경


준비물

 

1. Pogoplug Mobile
2. USB 외장하드디스크
3. SD Memory card


구축 단계

 

1. ipkg 설치
2. torrent client 설치
3. torrent 설정

 

** 주의 사항

 

1. 본 포스팅은 http://aaronrandall.com 을 참조하여 정리한 것입니다.
2. 본 포스팅을 따라하다가 발생되는 그 어떤 문제점도 저는 책임 질 수 없습니다

 

** 설치 위치에 따른 안내

 

1. 저는 외장 하드디스크에서 Torrent 데이타를 저장하고 SD Memory card에 Torrent Clinet를 설치하는 방식을 선택하였습니다.
2. SD Memory Card는 FAT로 마운트되는 관계로 심볼릭 링크가 안생겨 추가적인 작업이 필요합니다. 
3. 만약 Torrent Clinet를 NTFS로 마운트된 외장 하드에 설치시에는 심볼릭 링크 관련된 문제점이 없을 수도 있습니다.

 

 

 

 

Part I. PKG 설치

 

 


* 중요 : 1단계는 NTFS로 마운트된 곳(외장하드) 에서 실행하시기 바랍니다.


1. http://my.pogoplug.com에서 SSH 접속 설정을 enable 시킨다.

 

 [ Account Setting ] > [ Security ] > [Enable SSH access for this Pogoplug device] 설정


2. SSH로 pogoplug 접속

 

 # ssh [ Pogoplug IP ]
 User : root
 Password : 암호  ( 1번에서 넣은 암호 입력 )


3. / 파티션 재마운트

 

 # mount -o remount,rw /


4. opt 디렉토리 생성 및 외장 하드 디스크 마운트

 

/opt는 패키시 설치시 파일들이 복사되는 위치이다.

 

 # mkdir /opt

 

아래 마운트 포인트는 장비마다 다를 수 있으므로 df를 통해 확인하시기 바랍니다.

여기서 일단 USB로 연결된 외장하드를 /opt에 마운트 한다.

 # mount /tmp/.cemnt/sdb1 /opt


5. 패키지 설치

 

 #cd /opt
 # wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/ipkg-opt_0.99.163-10_arm.ipk
 # tar -xOvzf ipkg-opt_*_arm.ipk ./data.tar.gz | tar -C / -xzvf -
 ( FAT 나 NTFS로 연결된 곳에서 실행시 이 부분에서 일부 파일이 tar로 안 풀립니다. tar 과정에서 보여진 파일 실제 디렉토리에 있는지 확인하시기 바랍니다. 저의 경우 외장하드에서는 정상이였고, SD 메모리카드에서는 일부 파일이 없었습니다. )
 
 # mkdir -p /opt/etc/ipkg
 # echo "src cross http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable" > /opt/etc/ipkg/armel-feed.conf
 # echo "src native http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/native/unstable" >> /opt/etc/ipkg/armel-feed.conf

 

6. ipkg 버전 확인

 

 # busybox | head -n1

 
7. ipkg 버전이 “BusyBox v1.7.0″ 이면

 

 # /opt/bin/ipkg update

 

8. ipkg 버전이 “BusyBox v1.16.1″ 이면

 

 (아마 국내에서 구매하신 분은 여기에 속하실 것이라 생각됩니다.)

 

 # cd /tmp/
 # wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/wget_1.12-2_arm.ipk
 # tar xvzf wget_1.12-2_arm.ipk
 # tar xzvf data.tar.gz -C /
 # mv /usr/bin/wget /usr/bin/wget.old
 # ln -s /opt/bin/wget /usr/bin/wget

 # /opt/bin/ipkg update
 
 이부분에서 저는
 
 /opt/bin/ipkg: error while loading shared libraries: /opt/lib/libipkg.so.0: file too short

 또는
 
 퍼미션 에러가  발생하였습니다. 
 
 # cd /opt/lib 를 가 보니..
 
 /opt/lib # ls -la
 -r-xr-xr-x    1 root     root            42 Sep 17 08:24 libipkg.so
 -r-xr-xr-x    1 root     root            42 Sep 17 08:24 libipkg.so.0
 -rwxr-xr-x    1 root     root        150260 Feb 15  2012 libipkg.so.0.0.0
 
 되어 있더군요.. 아무래도 libipkg.so.0.0.0가 진짜 라이브러리 같아서
 
 /opt/lib # mv libipkg.so.0 libipkg.so.0.org
 /opt/lib # cp libipkg.so.0.0.0 libipkg.so.0
 
 해 주었더니넘어가네요...
 
 
 # /opt/bin/ipkg update
 
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/PackagesUpdated list of available packages in /opt/lib/ipkg/lists/cross
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/native/unstable/PackagesUpdated list of available packages in /opt/lib/ipkg/lists/native
 Successfully terminated.

 # /opt/bin/ipkg install libnsl
 Installing libnsl (2.5-4) to root...
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/libnsl_2.5-4_arm.ipk
 Configuring libnsl
 Successfully terminated.

 

 이 부분에서는 아래 표기한 블로그 원문에는 없었던 절대경로 /opt/bin을 추가해줘야 합니다.


 이렇게 성공 메세지가 떨어집니다..

 

 만약 /opt가 FAT로 마운트 되어 있다면 심볼릭 링크 관련 에러가 발생할 것입니다.

그럴 경우 아래와 같이 복사해 줍니다.
 
 # cp libnsl-2.5.so libnsl.so    
 # cp libnsl-2.5.so libnsl.so.1
 

 

여기까지는 NTFS로 연결된 외장하드에서 작업을 했고, 원래 설치 장소인 SD 메모리로 복사를 해 준다.

 

필자의 경우

 

외장하드 : /tmp/.cemnt/mnt_sda1

SD 메모리 : /tmp/.cemnt/mnt_mmcblk0p1

 

였는데

 

외장하드에 설치된 디렉토리들 ( bin, etc, lib, mans, var, share 등 )을 모두 mv로 옮겨 주었다.

 

# cd /opt (실제는 /tmp/.cemnt/mnt_sda1 )

# mv {상기 디렉토리} /tmp/.cemnt/mnt_mmcblk0p1

# umount /opt

# mount /tmp/.cemnt/mnt_mmcblk0p1 /opt

 

그럼 이제부터는 /opt는 SD 메모리 카드로 마운트 된 상태이다.

 

 

 

Part II. BITTORRENT PACKAGE 설치

 

 

 

1. transmission PKG 설치

 

 #/opt/bin/ipkg install transmission


만약 /opt가 FAT로 마운트 되어 있다면 심볼릭 링크 에러 발생하기 때문에 원래는 심볼릭 링크로 연결되어야 하는 파일들을 아래와 같이 복사 작업 진행

 

 # cp libcrypto.so.0.9.8 libcrypto.so
 # cp libcrypto.so.0.9.8 libcrypto.so.0
 
 # cp libssl.so.0.9.8 libssl.so
 # cp libssl.so.0.9.8 libssl.so.0
 
 # cp libcurl.so.4.2.0 libcurl.so
 # cp libcurl.so.4.2.0 libcurl.so.4
 
 # cp libz.so.1.2.5 libz.so
 # cp libz.so.1.2.5 libz.so.1
 
 # cp libevent-2.0.so.5.1.8 libevent-2.0.so.5
 # cp libevent-2.0.so.5.1.8 libevent.so     
 
 # cp libevent_core-2.0.so.5.1.8 libevent_core-2.0.so.5
 # cp libevent_core-2.0.so.5.1.8 libevent_core.so     
 
 # cp libevent_extra-2.0.so.5.1.8 libevent_extra-2.0.so.5
 # cp libevent_extra-2.0.so.5.1.8 libevent_extra.so
 
 # cp libevent_openssl-2.0.so.5.1.8 libevent_openssl-2.0.so.5
 # cp libevent_openssl-2.0.so.5.1.8 libevent_openssl.so
 
 # cp libevent_pthreads-2.0.so.5.1.8 libevent_pthreads-2.0.so.5
 # cp libevent_pthreads-2.0.so.5.1.8 libevent_pthreads.so


2. transmission을 구동하여 기본 설정화일을 생성

 

 # /opt/bin/transmission-daemon

 # killall transmission-daemon


3.  configuration 디렉토리 생성

 

 # mkdir /opt/config


4. 생성된 설정파일을 Config 디렉토리에 옮긴다.

 
 # mv /root/.config/transmission-daemon /opt/config/


5. transmission configuration의 복사본을 만들어 준다.

 

 # cd /opt/config/transmission-daemon/

 # cp settings.json settings.json.backup


6. transmission configuration을 설정한다.

 

필자는 Pogoplug의 외장 하드 디스크에

 

torrents 디렉토리와 Movies 디렉토리를 만들어서 Seed파일과 데이타 파일을 저장하고자 했다.

 

따라서 Pogoplug의 실제 저장 위치는

 

시드 파일 : /tmp/.cemnt/mnt_sda1/torrents

데이타 파일 : /tmp/.cemnt/mnt_sda1/Movies
 

가 된다.

 

설정 파일을 열어 디렉토리 설정을 변경한다.


 # vi /opt/config/transmission-daemon/settings.json

 

아래 “download-dir”, “incomplete-dir” 내용을   
  
/tmp/.cemnt/mnt_sda1/Movies
  
로 변경


7. 수정한 Config를 통해 Transmission client 구동

 

 # /opt/bin/transmission-daemon --config-dir /opt/config/transmission-daemon


8. Transmission 구동 확인

 

 웹 브라우져에서

 

 http://pogoplug IP:9091/transmission/web/

 

입력해 보면...웹 페이지가 뜬다.
 
9. 접근 허용 IP 추가

 

데몬 보안 정책에 의해 10번 과정에서 인증되지 않은 IP라고 나올 것이다.
 접근할 수 있는 IP 대역을 추가해 준다.

 

 # vi /opt/config/transmission-daemon/settings.json
 

 "rpc-whitelist": "127.0.0.1",  // 이 부분을
 
 "rpc-whitelist": "127.0.0.1,192.168.*.*",  // Client IP 대역을 추가해 준다.


 
 그 뒤에 transmission-daemon에 변경된 설정을 적용한다.
 


/opt/bin/transmission-daemon --config-dir /opt/config/transmission-daemon 의 PID를 확인한 후,
 # ps     // PID 확인
 # kill -HUP PID

 

해주면 적용 완료된다.
 
다시 웹브라우져에서 
 
http://pogoplug IP:9091/transmission/web/
 
웹  페이지가 뜨는 것을 확인한다.
 
 

 


Part III. Torrent 전송 기능 추가하기

 

 

이제 마지막 과정이다.

 

1. the transmission scheduler script 생성

 

본 과정은 torrents 디렉토리에 seed 파일을 넣어두면, transmission 데몬에게 전달해주는 스크립트를 만들어주는 과정이다. 아래는 필자의 설정 값이다.

 

시드 파일 위치 : /tmp/.cemnt/mnt_sda1/torrents/
Pogoplug IP : 192.168.120.2

 

스크립트 파일을 생성해주고,

 # touch /opt/bin/transmission-scheduler.sh

VI로 열어 스크립트를 입력한다.

 

# vi /opt/bin/transmission-scheduler.sh
 

#!/bin/sh                                                                                                                          
                                                                                                                                   
 pathToTorrentFolder='/tmp/.cemnt/mnt_sda1/torrents/'                                                                               
 transmissionUrl='http://192.168.120.2:9091/transmission'                                                                           
                                                                                                                                   
 for f in $pathToTorrentFolder*.torrent ;                                                                                           
        do /opt/bin/transmission-remote $transmissionUrl -a "$f"; rm "$f";                                                         
 done 

 
2. 스크립트로 실행 권한을 부여한다.

 

 # chmod +x /opt/bin/transmission-scheduler.sh
 
3. 스크립트 테스트

 

torrents 디렉토리에 실제로 seed파일을 복사해 넣고 되는지 확인한다.

 

# cp *.torrent /tmp/.cemnt/mnt_sda1/torrents/

# cd /opt/bin
# ./transmission-scheduler.sh
192.168.120.2:9091/transmission/rpc/ responded: "success"

 

위 스크립트 실행결과가 위와 같이 나오면 성공한 것이다.

 

웹 브라우져에서

 

http://pogoplug IP:9091/transmission/web/

 

입력해보면 아래와 같이 토렌토 다운로드 상황을 확인해 볼 수 있다.

 

 

 

 

 

여기까지 오면 모든 설치는 끝난다. 마지막으로 seed 파일을 넣어주면 주기적으로 체크해서 다운로드 할 수 있게 cron을 설정한다.

 

4. crontab 설정

 

# mkdir -p /opt/var/spool/cron/crontabs
# ln -s /opt/var/spool /var/spool
 

블로그에선

 

 # crontab -e

 

로 편집이 가능하다고 하는데 필자의 Pogoplug mobile에는 해당 명령어가 없었다.

 

따라서 아래와 같이 진행했다.
 
 # cd /var/spool/cron/crontabs
 # touch root
 # vi root
 

 

 */5 * * * * /opt/bin/transmission-scheduler.sh

 

 

 

5. crond 실행


 # busybox crond
 

 

이제부터는 네트워크 드라이브 또는 웹에서 연결된 torrents 디렉토리에 seed 파일을 넣어두면

Movies 디렉토리에 영상 파일들이 다운로드 되어 있을 것이다..

 

즐거운 라이프 되시길...

 

 

 

참조

 

1단계 : http://aaronrandall.com/blog/customising-your-pogoplug/

2단계 : http://aaronrandall.com/blog/installing-a-bittorrent-client-on-the-pogoplug/

3단계 : http://aaronrandall.com/blog/adding-torrents-via-my-pogoplug-com/

 

 

 

Posted by 카프러브

 

ffmpeg_movie.c

 

 

1. ffmpeg란 : http://helloworld.naver.com/helloworld/8794

 

 

 

2. CentOS에서 FFMPEG 설치

 

 

1) Yum 저장소 추가 : Centos-DAG.repo라는 파일에 아래 내용을 추가해 넣는다.

 

# cd /etc/yum.repos.d

 

# vi Centos-DAG.repo

 

 

[dag]

name=Dag RPM Repository for Red Hat Enterprise Linux

baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag

gpgcheck=1

enabled=1

 

 

2) a52dec 설치

 

 

# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

# yum install a52dec-devel.x86_64

 

참고) 이 부분을 안해주면 아래와 같은 에러가 발생한다.

 

Public key for a52dec-0.7.4-8.el6.rf.x86_64.rpm is not installed 

 

 

 

3) ffmpeg 설치

 

 

# yum install ffmpeg-devel.x86_64

 


3. ffmpeg-php 설치

 

 - 인터넷에서 검색을 해 보면 굉장히 간단한 설치처럼 보이나 CentOS 6에서는 쉽지 않은 설치였음. 아무래도 패키지가 나온지 오래되다보니, 바뀐 OS와 안 맞는 것처럼 보임.

- 해결책은 소스를 바꾸어야 함..


1)  소스 다운로드

 

http://ffmpeg-php.sourceforge.net


2) 소스 압축 풀기


# bzip2 -cd ffmpeg-php-0.6.0.tbz2 | tar xf -

 

3) 소스 수정

 

ffmpeg-php에서는 크게 2가지 에러가 나는데 이를 위해 두개의 소스를 고치거나 대체해야 한다.

 

 

ffmpeg_movie.lo 오류 방지

 

 

wget http://www.9xhost.info/scripts/ffmpeg-php-0.6.0/ffmpeg_movie.c


ffmpeg_movic.c를 다운 받아 원래 있던 파일을 대체한다.

 

# cd /usr/local/src/ffmpeg-php-0.6.0

 

# mv {다운받아놓은 위치}/ffmpeg_movic.c ./

 

 


 

 ffmpeg_frame.lo 오류 방지


 - ffmpeg_frame.c 안에 PIX_FMT_RGBA32를 PIX_FMT_RGB32로 치환해준다.

 

# vi ffmpeg_frame.c


 :%s/PIX_FMT_RGBA32/PIX_FMT_RGB32/g
 :w :q!



4) 설치

 

# /usr/local/php-5.5.5/bin/phpize

# ./configure --prefix=/usr/local/ffmpeg-php-0.6.0 --enable-shared --with-php-config=/usr/local/php-5.5.5/bin/php-config

 

# make

# make install

 

5) 모듈 복사

 

# cd /usr/local/php-5.5.5/lib/php/extensions/no-debug-zts-20121212/

# cp ./ffmpeg.so /usr/local/httpd/modules/

 

6) 설정

 

# vi /usr/local/httpd/conf/php.ini

extension_dir = "./" 을

extension_dir = "/usr/local/httpd/modules" 로 수정

 

extension=ffmpeg.so 추가

 

7) 설치 확인

 

# /usr/local/php-5.5.5/bin/php -r 'phpinfo();' | grep ffmpeg

 

 

 

 

 

참고 문헌

 

1) http://chrisjean.com/2009/01/13/install-ffmpeg-and-ffmpeg-php-on-centos-easily/

 

2) http://www.nazly.net/installing-ffmpeg-and-ffmpeg-php-on-centos/

 

3) http://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1720&sca=1

 

4) https://d.stavrovski.net/blog/yum-install-ffmpeg-and-ffmpeg-php-in-centos-6-with-virtualmin/#install-ffmpeg-php

 

5) http://www.9xphp.com/Thread-FFMPEG-ffmpeg-PHP-centos-5-6-easy-install

 



 

 

 

 

Posted by 카프러브

 

 

[ vsftpd ]

 

 

Q1. 아래와 같이 에러가 날때..

 

[root@db2 src]# ftp ServerIP

Connected to ServerIP

500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp
ftp>

 

 

A1. /etc/vsftpd/vsftpd.conf 에 아래 한줄 추가

 

ftp_username=nobody

 

 

Q2. ftp 접속시 파일 읽기는 되는데 쓰기는 안 될 경우

 

A2. 여러가지 원인에 의해 발생할 수 있는 문제이나 대부분 아래 방법으로 해결 가능..

 

- 해당 디렉토리 권한 문제 : 접속 계정에 대해 쓰기 권한을 부여

- selinux 에 의한 문제 : vsftp에 대해 / 또는 selinux를 disable 시킴.

 

 

[ MySQL ]

 

Q3. 원격지 MySQL 서버에 접속시 지연이 발생할 때..

 

A3. /etc/my.cnf에 아래 한줄 추가..

 

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-name-resolve

 

 

 

 

 

Posted by 카프러브

 

서버들간 데이타 동기화 중 가장 간단한 rsync 설정방법

 

 

1. rsyc 설치

 - CentOS는 기본적으로 설치가 되어 있어서 설치 과정 생략

 - 설치 확인

 # rpm -qa | grep rsync

 

 

[ 서버측 설정 ]

 

2. 설정

 

 - /etc 밑에 rsyncd.conf 생성한 후 아래 내용 입력

 

[home] // 서비스명
path=/Web/download  // 데이터 동기화될 원본 위치
uid=아이디
gip=그룸
use chroot=yes
readonly=yes
  // 마스터 서버이므로 read 권한만 준다
hosts allow=xxx.xxx.xxx.xxx // 클라이언트 IP

 

3. 데몬 구동

 - 서버간 동기화는 xinetd로 구동해도 충분

 - xinetd에서 rsync enable 시켜줌.

 

# vi /etc/xinetd.d/rsyc

 

service rsync
{
        disable = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

 

4. 방화벽 오픈

 

 - iptables에서 TCP 873 오픈

 

 

 

[ 클라이언트 측 설정 ]

 

1. 명령어를 통한 동기화

 

# /usr/bin/rsync -avz 서버IP::서비스명 {동기화될 디렉토리}

 

2. Cron을 통한 주기적인 백업

 

# crontab -e

* * * * * /usr/bin/rsync -avz 서버IP::home ./

 

 

Posted by 카프러브

Apache2에 mod_url 설치

IT/HowTo 2012. 6. 30. 12:15

 

## 설치 환경

 

- OS : CentOS 6

- 아파치 : httpd 2.4.2

- mod_url : 1.6.2.6 (최신 버전인 1.16은 컴파일 과정에서 에러남)

 

# 아파치 설치 과정 : http://calflove.tistory.com/335 참조

 

mod_url 설치를 위해서 최신 버전을 설치하려고 하였으나 컴파일 에러 발생.

따라서 약간 버전이 낮는 것으로 컴파일 하여 설치 성공

 

[ Download & 소스 설치 ]

 

# wget http://caos.kldp.net/frs/download.php/6015/mod_url-apache2-1.6.2.6.tar.bz2

# bzip2 -d mod_url-apache2-1.6.2.6.tar.bz2

# tar -xvf mod_url-apache2-1.6.2.6.tar

 

[ 컴파일 ]

 

# /usr/local/httpd-2.4.2/bin/apxs -i -a -c mod_url.c

 

그러면 아파치 모듈 디렉토리 (/usr/local/httpd-2.4.2/modules)에 설치된다. (755 권한)

 

-rwxr-xr-x   1 root root    34325 2012-06-30 11:53 mod_url.so

 

[ 환경 설정 ]

 

아파치 설정화일 httpd.conf에 아래 부분이 이미 추가되어 있다.

 

LoadModule redurl_module      modules/mod_url.so

 

 

그 하단에

 

<IfModule mod_url.c>
        CheckURL On
</IfModule>

 

부분만 추가시키고 아파치 웹 서버를 재구동 시킨다.

 

 

 

 

Posted by 카프러브

 

 

 

## 설치 환경

 

- CentOS 6.4

- Apache 2.4.6

- PHP 5.5.5

- MySQL ver 5.6.14

- 설치 위치 : /usr/local/httpd-2.4.6

- 데이타 위치 /Web

 

 

1. 다운로드

 

1) 아파치 : http://httpd.apache.org/download.cgi

2) PHP : http://www.php.net/downloads.php

3) OpenSSL : http://www.openssl.org

 - [LASTEST] 가 붙어 있는 버전을 다운받습니다


 

 

2. 소스 압축 풀기

 

# cd /usr/local/src

 

# tar -xvzf httpd-2.4.6.tar.gz

# tar -xvzf php-5.5.5.tar.gz

# tar -xvzf mysql-5.6.14.tar.gz

 

 

3. APM 설치를 위한 사전 요구 사항

 - 본 패키지 설치 과정은 OS 설치 사항에 따라 변경될 수 있다.

 - 소스 설치가 아닌 것들은 yum으로 설치

 

1) APR ( for Apache )


최신 버전은 http://mirror.apache-kr.org/apr/ 에서 다운받으시길 바랍니다.


2013년 11월 7일 현재 최신 버전


APR : 1.4.8

APR-ICONV : 1.2.1

APR-UTIL : 1.5.2


 

** Apache 2.4.X 는 APR 1.4 이상을 필요로 한다. 현재 필자가 설치하는 CentOS 6.2 에서는 1.3.9 패키지를 사용하므로 소스 컴파일해서 설치하였다.

 

# cd /usr/local/src

 

# wget http://mirror.apache-kr.org//apr/apr-1.4.8.tar.gz

# tar -xvzf apr-1.4.8.tar.gz

# cd apr-1.4.8

# ./configure --prefix=/usr/local/apr-1.4.8

# make ; make install

 


# wget http://mirror.apache-kr.org//apr/apr-util-1.5.2.tar.gz

# tar -xvzf apr-util-1.5.2.tar.gz

# cd apr-util-1.5.2

# ./configure --prefix=/usr/local/apr-util-1.5.2 --with-apr=/usr/local/apr-1.4.8

# make ; make install



# wget http://apache.mirror.cdnetworks.com/apr/apr-iconv-1.2.1.tar.gz

# tar -xvzf apr-iconv-1.2.1.tar.gz

# cd apr-iconv-1.2.1

./configure --prefix=/usr/local/apr-iconv-1.2.1 --with-apr=/usr/local/apr-1.4.8


 

2) PCRE ( for Apache )

# yum install pcre-devel.x86_64

 

3) LUA ( for Apache )

# yum install lua-devel.x86_64

 

4) XML2 Library ( for Apache )

# yum install libxml2-devel.x86_64

 

5) libncurses5-dev ( for MySQL )

# yum install ncurses-devel.x86_64

 

6) 그래픽 관련 라이브러리 ( for PHP )

# yum install zlib-devel.x86_64   

# yum install libjpeg-devel.x86_64

# yum install libpng-devel.x86_64

# yum install libjpeg-turbo-devel.x86_64 (CentOS 6.4로 업데이트되면서 패키지명이 바뀐 듯 합니다)

# yum install gd-devel.x86_64

# yum install php-mbstring.x86_64

# yum install libexif-devel.x86_64

 

7) mcrypt 라이브러리 설치

# yum install libmcrypt-devel.x86_64


8) curl 라이브러리 설치

 # yum instalcurl.x86_64

 # yum install libcurl-devel.x86_64


9) icu 설치

 #  yum install icu libicu libicu-devel




4. MySQL 설치 : http://calflove.tistory.com/334 참고



 

5. OpenSSL 설치


1) YUM을 통한 설치

 # yum install openssl openssl-devel


2) 소스를 통한 설치 ( 여기서는 이 방법을 기준으로 한다 )

# cd /usr/local/src/openssl-1.0.0f

./config --prefix=/usr/local/openssl-1.0.1f --openssldir=/usr/local/openssl shared threads zlib

# make; make install


- prefix 뒤 디렉토리에는 라이브러리가,  openssldir 뒤 디렉토리에는  인증서 관련 파일들이 설치됩니다. 


# echo /usr/local/openssl/lib >> /etc/ld.so.conf
# /sbin/ldconfig


- 동적 라이브러리를 설정안하면 Apache 컴파일 과정에서 에러가 발생한다.




6. Apache 설치

 

# cd /usr/local/src/httpd-2.4.6

# ./configure --prefix=/usr/local/httpd-2.4.6 --enable-so --enable-mods-shared --enable-ssl  --with-ssl=/usr/local/openssl --enable-modules=ssl --with-mpm=worker --enable-cache --with-apr=/usr/local/apr-1.4.8 --with-apr-util=/usr/local/apr-util-1.5.2 

 


- apache 2.x에는  mod_ssl이 포함되어 있기 때문에 옵션만 주면 된다.

- 여기 사용된 옵션은 아파치 웹 서버의 성능을 높히기 위한 것으로써 아래 문서를 참고하기 바람

    http://httpd.apache.org/docs/2.4/mod/worker.html

    http://httpd.apache.org/docs/2.4/mod/mod_cache.html



# make; make install



참고 > make 실행시 아래와 같은 에러가 발생하면 apr 버전이 낮아서 생기는 문제임

 

exports.c:1778: error: redefinition of 'ap_hack_apr_gid_get'

exports.c:778: note: previous definition of 'ap_hack_apr_gid_get' was here

exports.c:1796: error: redefinition of 'ap_hack_apr_version'

exports.c:789: note: previous definition of 'ap_hack_apr_version' was here

exports.c:1797: error: redefinition of 'ap_hack_apr_version_string'

exports.c:790: note: previous definition of 'ap_hack_apr_version_string' was here

make[2]: *** [exports.lo] 오류 1

make[2]: Leaving directory `/usr/local/src/httpd-2.4.6/server'

make[1]: *** [all-recursive] 오류 1

make[1]: Leaving directory `/usr/local/src/httpd-2.4.6/server'

make: *** [all-recursive] 오류 1


혹시 서버에 APR 패키지가 설치되어 있다면 지우고 소스로 설치한다.


# yum remove APR


 


7. PHP 설치

 

# cd /usr/local/src/php-5.5.5

# ./configure --prefix=/usr/local/php-5.5.5 --with-config-file-path=/usr/local/httpd-2.4.6/conf --with-apxs2=/usr/local/httpd-2.4.6/bin/apxs --with-mysql=/usr/local/mysql-5.6.14 --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql --with-mysql-sock=/tmp/mysql.sock  --with-jpeg-dir=/usr --with-mcrypt=/usr --with-png-dir=/usr --with-zlib=/usr --enable-mbstring --enable-exif --enable-zip --enable-ftp --enable-sockets  --enable-pcntl --enable-sigchild --enable-mbstring --with-gd  --enable-bcmath --with-iconv  --with-freetype-dir --with-libxml-dir --with-gettext --with-pcre-dir --with-curl --with-openssl-dir --enable-intl 


# make ; make install

 

 


8. Apache Config

 

# cd /usr/local/httpd-2.4.6/conf

 

# vi httpd.conf

 

- 아래 부분 삽입

 

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>

 

- 아래 주석 해제 및 삽입

 

<IfModule mime_module>

    AddType application/x-httpd-php .php .htm .html .inc .php4 .php3
    AddType application/x-httpd-php-source .phps

</IfModule>

 


* 참고 : 로그 분할


# vi httpd.conf 또는 httpd-vhosts.conf


- 아래 로그 부분 부분에 로그 분할 관련 설정 (1일 단위로 로그 분할)


    ErrorLog "|/usr/local/httpd/bin/rotatelogs error_log.%Y%m%d 86400"

    CustomLog "|/usr/local/httpd/bin/rotatelogs access_log.%Y%m%d 86400" common




9. PHP Config

 

# cd /usr/local/src/php-5.5.5

# cp php.ini-production /usr/local/httpd-2.4.6/conf/php.ini

 

# cd /usr/local/httpd-2.4.6/conf

# vi php.ini 

 

아래 항목을 아래와 같이 바꾸어준다


short_open_tag = On 


 


10. Apache 구동 스크립트 복사 및 구동

 

 # cd /usr/local/httpd-2.4.6/bin

 # cp apachectl /etc/rc.d/init.d/httpd

 

- Apache Config test

# /etc/rc.d/init.d/httpd configtest

 

- Apache Start

# /etc/rc.d/init.d/httpd start

 

 


11. 방화벽 오픈 및 테스트 


# lokkit --service http


# telnet lcoalhost 80


 

참고 문헌

 - http://httpd.apache.org/docs/2.4/programs/configure.html (Apache Config)

 - http://byseob.blogspot.kr/2010/08/centos-5455-updatede-apm-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95-%ED%99%95%EC%9D%B8.html (APM 설치)

 - http://absorbed.tistory.com/27 ( 아파치 설치 오류 관련 )

 - http://legend.anycert.co.kr/support/openssl_install.html (OpenSSL 설치)

 - http://legend.anycert.co.kr/support/httpd_ssl_install.html (mod-ssl 설치)

 


 

Posted by 카프러브

 

## 설치 환경

 

 - CentOS 6.4

 - MySQL ver 5.6.14

 - 설치 위치 : /usr/local/mysql-5.6.14

 - 데이타 위치 : /mysql/data

 

 

 

 

1. Download 및 소스 압축 풀기

 

    http://www.mysql.com/downloads/mysql/ 에서 커뮤니티 버전 다운 로드

 

    # tar -xvzf mysql-5.6.14.tar.gz

 

 

2. User 및 디렉토리 생성

 

1) 사용자 생성

 

   # adduser -M -s /bin/false mysql

 

2) 데이타 디렉토리 생성

 

   # cd  /

   # mkdir mysql

   # cd mysql

   # mkdir data

   # mkdir log 

   # chown mysql.mysql data

   # chown mysql.mysql log

 

 

3. CMAKE 설치

 

   - CentOS 의 경우 yum을 이용하여 설치

   # yum install cmake.x86_64

 

   - 직접 설치를 원하시는 분은

    http://www.cmake.org/ 에서 다운로드 받은 후 설치

 

 

4. 소스 컴파일

 

   - 운영상의 편의성을 위해 설치 경로명에 버전을 같이 명기

   - 설치 옵션은 http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.5/en/source-configuration-options.html 참조

   - CharSet 관련 설정은 http://dev.mysql.com/doc/refman/5.5/en/extended-show.html 참조

 

  # cmake

  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.14 \

  -DMYSQL_DATADIR=/mysql/data \

  -DDEFAULT_CHARSET=euckr \

  -DDEFAULT_COLLATION=euckr_korean_ci \

  -DWITH_EXTRA_CHARSETS=all

 

  # make ; make install

 

 

5. 심볼릭 링크 생성

 

  # ln -s /usr/local/mysql-5.6.14 /usr/local/mysql

 

 

6. 환경 설정

 

1) 권한 설정

  # cd /usr/local

  # chown -R mysql.mysql ./mysql-5.6.14

 

  # cd /

  # chown -R mysql.mysql /mysql

 

2) 스크립트 구동

  -

  # cd /usr/local/mysql

  # ./scripts/mysql_install_db --user=mysql --datadir=/mysql/data


 

 

7. my.cnf

 

1) 시스템 메모 크기에 따른 /usr/local/mysql/support-file/my-default.cnf을 /etc/my.cnf 로 복사한다.


2) my.cnf를 시스템에 맞게 설정한다.


 

8. 구동

 

# ./bin/mysqld_safe &


9.  root 암호 설정


  # ./bin/mysqladmin -u root password 'new-password' 

 

10.  자동 구동 설정

 

# cd $MYSQL_HOME/support-files

# cp mysql.server /etc/rc.d/init.d/mysqld

 

# vi /etc/rc.d/init.d/mysqld

 - 아래 부분 수정 

  basedir=/usr/local/mysql
  datadir=/mysql/data

 # chkconfig --add mysqld

 

 # chkconfig --list | grep mysql
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

 

 

참고 문헌

 - http://www.lovelgw.com/Blog/291 (MySQL 5.5.x 설치 [cmake])

 - http://thesever.tistory.com/54 (MySQL 5.5 설치)

 - http://dev.mysql.com/doc/mysql-sourcebuild-excerpt/5.5/en/source-configuration-options.html#cmake-compiler-flags (MySQL 컴파일 옵션 )

 

 

 

Posted by 카프러브


본 문서는 Apache + PHP + Oracle Client를 설치 문서이다.

작성일 : 2011. 9. 7



참고 사이트

- Installing PHP and the Oracle Instant Client : http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html

- Apache 2.X + PHP 5.X 설치 : http://www.dakrink.pe.kr/archives/341

- php.ini 관련 설정 : http://www.solanara.net/solanara/amp



설치 환경 및 모듈 버전

- OS : Redhat Enterprise 5.2

- Httpd : Apache 2.2.20 (http://httpd.apache.org)

- PHP : php 5.3.8 (http://www.php.net)

- Oracle Instant Client : 11.2.0.2.0 (http://www.oracle.com/technetwork/database/features/oci/index.html)

- OCI8 : 1.4.6 (http://pecl.php.net/package/oci8)



설치 위치

- Apache : /usr/local/httpd-2.2.20
- PHP : /usr/local/php-5.3.8



소스 위치

- /usr/local/src



Step 1. Installing Apache with PHP


1. Compile & Install Apache

# cd /usr/local/src/httpd-2.2.20
# ./configure --prefix=/usr/local/httpd-2.2.20 --enable-module=so --enable-mods-shared=most
# make ; make install


2. Edit httpd.conf ( 아래 라인 추가 )

AddType application/x-httpd-php .php .htm .html .inc .php5 .php4
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php index.htm


3. Compile & Install PHP

# cd /usr/local/src/php-5.3.8
# ./configure --prefix=/usr/local/php-5.3.8 \
--with-apxs2=/usr/local/httpd-2.2.20/bin/apxs \
--with-config-file-path=/usr/local/httpd-2.2.20/conf \
--with-exec-dir=/usr/local/httpd-2.2.20/bin --with-gd
# make ; make install


4. Check Web Server Working



Step 2. Install Oracle Instant Client


1. Download Oracle Instant Client

1) Download URL : http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

2) Download Package
- Instant Client Package - Basic
- Instant Client Package - SDK


2. Installing by RPM (32BIT)

1) 32bit

# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.2.0.i386.rpm

2) 64bit

# rpm -Uvh oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm
# rpm -Uvh oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm

위 RPM은 /usr/lib/oracle/11.2/client 또는 /usr/lib/oracle/11.2/client64에 설치된다.



Step 3. Installing OCI8


1. OCI 8 설치

# /usr/local/php-5.3.8/bin/pecl install oci8

그럼 아래와 같은 질문이 출력된다.

Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :

그러면 아래와 같은 옵션을 입력한다.

instantclient,/usr/lib/oracle/11.2/client/lib


2. 모듈 복사

OCI8이 설치되면 /usr/local/php-5.3.8/lib/php/extensions/no-debug-non-zts-20090626 아래 oci8.so가 생성된다. 이 외에 Extension Modules이 있을 수 있으니 상위 디렉토리(/usr/local/php-5.3.8/lib/php/extensions) 로 복사해 넣는다.


3. 모듈 설정

1) php.ini 복사

소스 컴파일 경우 php.ini가 생성되지 않는다. 이를 위해 상용 서비스용 샘플 Config 파일을 복사한다.
PHP 컴파일시 준 옵션 (--with-config-file-path=/usr/local/httpd-2.2.20/conf)에 의해 httpd 설정 디렉토리에 복사해 넣는다.

# cp /usr/local/src/php-5.3.8/php.ini-production /usr/local/httpd-2.2.20/conf

2) php.ini 수정 ( 아래 라인을 찾아 수정한다)

date.timezone = Asia/Seoul
short_open_tag = On
include_path = ".:/usr/local/php-5.3.8/lib"
extension_dir = "/usr/local/php-5.3.8/lib/php/extensions/"
expose_php = Off

3) php.ini 에 추가 ( Dynamic Extensions 섹션에 추가 )

extension=oci8.so

4) 환경 변수 수정

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH;/usr/lib/oracle/11.2/client/lib



Finally, Start Apache Server & Testing


1. 아파치 문서 디렉토리에 테스트 페이지 생성

# vi test.php

<?

phpinfo ();

?>


2. 웹 브라우져에서 확인




3. 테스트용 소스 코드 작성

# vi testoci.php

<?php

$conn = oci_connect('hr', 'hr_password', 'mymachine.mydomain/MYDB');

$stid = oci_parse($conn, 'select table_name from user_tables');
oci_execute($stid);

echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";

?>


4. 에러 확인

위 코드 수정후 정상 작동이 안 될 경우 php.ini의 옵션 값중 display_errors = Off를 On으로 변경해 주면 에러값이 출력된다.


Posted by 카프러브

오늘 받은 리눅스 매거진 뉴스레터 중에 " iotop: Per Process I/O Usage " 이란 기사가 눈
에 띄었다..

기사 원문 : http://www.linux-mag.com/id/8366/?hq_e=el&hq_m=1253841&hq_l=10&hq_v=006ef52014

IO를 많이 쓰는 프로그램을 Top 처럼 보여준다는 유틸 소개였다..

CPU나 RAM 성능이 좋아지면서.... 물리적인 제한을 갖고 있는 IO가 서버 성능에 지대한 영향을 미치면서... 이에 대한 성능 측정도 필요했었는데... 마침 그런 툴이 있다니...

테스트 하기 위해.. 다운로드를 받았습니다..


 < http://guichaz.free.fr/iotop/ >


요구 조건은 아래와 같습니다...
  • Python >= 2.5 -or- Python 2.4 + ctypes
  • 2.6.20 kernel (or greater) with IO accounting and VM event counters configured

    (그러나..공식 문서에는 없는 요구 조건이 있습니다. 이 문서를 끝까지 읽으시고....설치 여부를 결정하시기 바랍니다.)

  • 설치는 간단한 편입니다.. 2단계만 거치면 되니까요..


    압축을 풀고

    # python setup.py build





    # python setup.py install


    만 해주면 설치 완료...

    그러나....실행해 보면... 아래와 같은 에러가 뜨네요....



    찾아보니... python 2.3 이상이어야 ctype을 설치할 수 있고 2.5는 기본 설치...
    저는 python 버전이 2.4.3-44.el5  이더군요...

    그래서 http://pypi.python.org/pypi/ctypes 에 가서...설치 시작...
    Linux에서는 암만 편해졌어도...최소한의 삽질 필요..ㅠㅠ

    여기서 설치는 두단계만 거치면 되네요... 그러나 테스트를 지원하기 때문에...
    설치 전에 테스트 실시..

    # python setup.py build
    # python setup.py test
    # python setup.py install


    바로 실행을 해 보았습니다...


    그러나...예상했던 화면은 안 나오고....엉뚱한 화면..이 나왔습니다..

    맨 하단에

    CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO %


    커널에서 CONFIG_TASK_DELAY_ACCT 를 활성화 시켜줘야 하나 보네요....ㅠㅠ

    구글링을 통해서 찾은 결과... http://www.gnutoolbox.com/iotop/ 가 가장 정확히 해결 방안을 내 놓고 있습니다...

    결론은 커널 컴파일을 해야 한다는 점..ㅠㅠ 지금 시스템이 다른 어플리케이션으로 인해
    그럴 상황이 아니기 때문에...

    저는 결론은 포기... 그러나..곧 기본 패키지로 들어올만한 유틸인 것 같습니다..









    Posted by 카프러브

    회사 업무로 인해 Tomcat를 설치할 일이 생겼습니다.

    설치 환경은 CentOS인데 yum을 이용하여 설치하기로 마음을 먹었습니다.


    이유는 패키지를 이용하면 이후 보안 문제 등으로 버전업을 해야 할 경우 이후 관리가 용이하고,

    표준화된 디렉토리 구조로 인해 후임자가 설치 환경을 파악히기 쉽다는 점 때문입니다.

    그러나 톰캣 설치를 해 본적이 없는 저는 이번 일로..고생 좀 했습니다..


    아래는 CentOS 설치시 개발 관련된 선택 설치는 한 상태에서 Tomcat 관련에서 추가로 설치한 패키지들입니다.

    ## Tomcat Package ##
    tomcat5 ; Tomcat
    tomcat5-webapps ; Tomcat Webapps ( /usr/share/tomcat5/webapps/ROOT 설치 화일 )
    tomcat5-admin-webapps : Tomcat Admin Webapps (
    http://HOST/admin 설치화일 )
    tomcat5-servlet-2.4-api : Servlet API
    tomcat5-jsp-2.0-api.i386 : JSP API
    struts-webapps-tomcat5.i386 : Struts

    ## JDK ##
    java-1.6.0-openjdk-devel
    ## MySQL ##
    mysql-server.i386
    mysql-server.i386

    mysql-connector-odbc.i386
    mysql-devel



    설정 환경


    - localhost를 사용하지 않고 추가 host를 이용하고 기본 ROOT ( /usr/share/tomcat5/webapps/ROOT )를 변경하는 설정


    [ 설정 방법 ]


    1. /etc/tomcat5/web.xml


    아래 두 부분이 기본적으로 보안으로 인해 주석처리 되어 있는데 주석을 지워준다.

    <servlet>
    <servlet-name>invoker</servlet-name>
    <servlet-class>
    org.apache.catalina.servlets.InvokerServlet
    </servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>


    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>


    2. /etc/tomcat5/server.xml


    설정 화일 맨 끝부분 </Engine>이 닫히기 전에 아래 부분을 삽입한다.

    <Host name="hostname" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">

    <Alias>10.0.0.1</Alias>
    <Alias>test.domain.co.kr</Alias>
    </Host>


    3. /etc/tomcat5/Catalina/hostname/ROOT.xml


    기본적으로 설정 디렉토리 밑에 있는 Catalina 디렉토리를 이동하면 localhost 디렉토리가 있다.

    그러나 server.xml에서 설정한 <Host> name과 동일한 디렉토리를 만들고 거기에 ROOT.xml을 생성하여 아래 내용을 넣는다.
     

    <?xml version="1.0" encoding="UTF-8"?>

    <Context docBase="/App/wcms/dist/webapp"
    privileged="true" antiResourceLocking="false" antiJARLocking="false"
    reloadable="false" >
    </Context>


     4. /etc/profile


    패키지로 설치할 때 가장 고민하는 부분이죠... 패키지의 디렉토리 구조를 정확하게 파악해야 한다는...

    제가 몇 차례 시행 착오 끝에 얻어낸 설정 내용입니다.. ( CentOS 5.5에서 패키지로만 설치했을 때 설정내용입니다. )

    export CATALINA_HOME=/usr/share/tomcat5
    export JAVA_HOME="/usr/lib/jvm/java"
    export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/common/lib:/usr/share/java/tomcat5- servlet-2.4-api.jar:/usr/share/java/tomcat5-jsp-2.0-api.jar
    export PATH=$PATH:$CATALINA_HOME/bin:/usr/bin


    5. $ROOT/WEB-INF/lib/mysql-connector-java-5.1.15-bin.jar


    http://www.mysql.com/downloads/connector/j 에서 mysql-connect를 다운 받아... WEB-INF/lib 밑에 복사해 넣는다.



    [ 설정 관련된 정보 ]


    설정에 관해서 인터넷 검색을 통해서 찾아본 자료들이 많이 틀리더군요..

    나중에 안 것인데.... 버전 별로 설정들이 조금씩 다르더군요....


    최근 Tomcat 5.5를 기준으로 설정 관련해서..제가 정리한 자료들입니다.....
     

    1. servlet-api


    인터넷 검색을 통해서 보니.. servlet-api.jar 설정 관련된 부분이 나옵니다..

    그런데 yum을 설치한 시스템에서는


    tomcat5-servlet-2.4-api.jar

    servletapi5.jar


    있더군요..뭐가 틀린지 궁금했었는데...http://blog.naver.com/webpro000/60035380483 에 아래와 같은 내용이 있더군요..

     

    servlet-api.jar 와 servlet.jar 파일은 tomcat에서 servlet 엔진 역할을 하는 모듈로서
    servlet.jar 는 톰켓 4.x 이전 버젼,
    servlet-api.jar는 톰켓 5.x 버전 부터 사용된다.
    Tomcat 버젼별 지원하는 Servlet 버젼
    3.x 대.. Java Servlet 2.2 and JSP 1.1
    4.x 대.. Java Servlet 2.3 and JSP 1.2
    자세한 내용은 다음 사이트를 참고 하세요
    http://java.sun.com/products/servlet/download.html

    서블릿을 개발하려면 이런 설정이 필요하다.
    tomcat 4.x
    tomcat_4.x_home/common/lib에 있는 servlet.jar -> java_home/jre/lib/ext에 copy
    tomcat_5.x_home/common/lib에 있는 servlet-api.jar, jsp-api.jar -> java_home/jre/lib/ext에 copy

    5.0 부터는 servlet-api.jar 와 jsp-api.jar 로 나뉘어서 같은 디렉토리에 존재합니다.



    2. Context 설정

    톰캣 초기에는 server.xml에서 context를 설정했으나...
    지금은 조금은 바뀌어 context.xml 또는 $TOMCAT_CONFIG/Catalina/HOST/ROOT.xml 에서 설정한다.
    물론 server.xml / context.xml에서 설정해도 된다.


    3. Tomcat Admin 설정 ( /etc/tomcat5/tomcat-users.xml )

    tomcat5-admin-webapps 패키지를 설치하면 웹 상에서 톰캣의 설정을 할 수 있다. Host나 Context 추가도 웹으로도 가능하다.
    그러나 실제로 해 보니...부분적으로 에러 나는 부분이 있고, 설정을 한 후에는 설정 내용으 바로 반영이 안되는 단점이 있어 "다시 읽기"를 해야 한다.
    http://hostname/admin 로 접속하면 아이디와 암호를 물어보는데 관리자 권한이 있는 아이디를 입력해야 한다.

    예를 들어 tomcat이란 계정에 그 권한을 부여하려면 roles에 admin,manager를 추가시켜준다.

    <?xml version='1.0' encoding='utf-8'?>
    <tomcat-users>
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <user username="tomcat" password="tomcat" roles="tomca,admin,manager"/>
    <user username="both" password="tomcat" roles="tomcat,role1"/>
    <user username="role1" password="tomcat" roles="role1"/>
    </tomcat-users>


     

    4. 각종 다운로드 위치

    [Apache] http://httpd.apache.org/download.cgi
    [MySQL] http://dev.mysql.com/downloads
    [MySQL-Connector] http://www.mysql.com

    [PHP] http://www.php.net/

    [JDK ] http://java.sun.com/
    [Tomcat] http://jakarta.apache.org/
    [Tomcat-connector] http://jakarta.apache.org/site/downloads/downloads_tomcat.html

     

    5. Apache와 Tomcat을 같이 쓰는 이유


    Web 컨테이너는 웹 서버 기능이 있다. 톰캣도 마찬가지로 웹 서버기능이 있으나...아파치를 연동해서 쓴다.

    이는 정적인 페이지는 아파치가 빠르기 때문에, JSP나 Servlet 부분을 제외한 페이지는 아파치를 이용한다.


    6. WEB-INF/lib


    라이브러리를 쓰기 위해서는 환경변수 $CLASSPATH에 넣어야 하는데 WEB-INF/lib에 밑에 복사해 넣으면 동일한 효과가 있다.

    Tomcat을 전혀 모르는 상황에서 설치한 것이기 때문에 전체적인 이해가 부족하더라도 조금이나마 도움이 되시길 바랍니다.

    Posted by 카프러브