어제 올렸던 Pogoplug에 Torrent Clinet 만들기 (http://calflove.tistory.com/343)는

실제 패키지들이 설치되는 디렉토리 (/opt)를  SD 메모리카드에 마운트한다는 가정하에

포스팅을 했으나 FAT 파일 시스템인 관계로 실행 권한에 몇가지 문제가 있네요...

 

그래서 정확한 해결 방법을 찾기 전에는 그냥 내장 메모리에 설치하기로 했습니다.

다만 내장 메모리가 100M가 채 안되는 적은 용량인 관계로... 관리를 잘 하셔야 할 것입니다..

 

아래 표는 Pogoplug Clinet 설치 전후 용량을 비교해 놓은 것입니다..

 

패키지가 그닥 크지 않아 내부 메모리에 설치하셔도 무방해 보입니다..

 

 

/opt # df
Filesystem           1K-blocks      Used Available Use% Mounted on
ubi0:rootfs              99432     13340     86092  13% /
none                     59312        12     59300   0% /tmp
/tmp/.cemnt/sda1     293031232 121209988 171821244  41% /tmp/.cemnt/mnt_sda1
/tmp/.cemnt/mmcblk0p1
                        248760     15912    232848   6% /tmp/.cemnt/mnt_mmcblk0p1

 

[ 설치전 용량 ]

 

 

 

/opt/var/spool/cron/crontabs # df
Filesystem           1K-blocks      Used Available Use% Mounted on
ubi0:rootfs              99432     18504     80928  19% /
none                     59312        12     59300   0% /tmp
/tmp/.cemnt/sda1     293031232 121209988 171821244  41% /tmp/.cemnt/mnt_sda1
/tmp/.cemnt/mmcblk0p1
                        248760     15912    232848   6% /tmp/.cemnt/mnt_mmcblk0p1

 

[ 설치후 용량 ]

 

 

임베디드 리눅스를 잘 몰라 일단 편법을 사용하였으나... 

좀 더 공부해서.. 원 시스템을 최대한 안 건드리는 방법을 찾아내 보겠습니다..

 

그럼....

Posted by 카프러브

 

포고 플러그를 토렌트 클라이언트로 만들기라는 주제로 쓴 이전 포스팅 ( http://calflove.tistory.com/343 )을 이용 실제로 서버로 쓸 수 있을까?...

 

포고 플러그에 대해서 올라온 후기 중 http://fullestlife.tistory.com/196 를 보시면 과연 클라우드로 쓸 수 있을까 하는 생각이 든다.

 

실제로 포고 플러그를 전원 연결 상태에서 실제 외장하드가 마운트될 때까지 걸린 시간을 측정해 보았다..

 

/tmp/.cemnt # df
Filesystem           1K-blocks      Used Available Use% Mounted on
ubi0:rootfs              99432     13232     86200  13% /
none                     59312        12     59300   0% /tmp
/tmp/.cemnt/sda1     293031232 121196280 171834952  41% /tmp/.cemnt/mnt_sda1
/tmp/.cemnt/mmcblk0p1  248760     15768    232992   6% /tmp/.cemnt/mnt_mmcblk0p1

/tmp/.cemnt # uptime
 05:21:47 up 51 min, load average: 2.27, 2.00, 1.98

 

USB로 연결된 외장하드와 SDmemory 카드를 인식하는데 걸린 시간이 무려 51분이다....

 

따라서 SD 메모리에 PKG를 설치해 놓은 필자로써는 포고 플러그의 전원 ON/OFF에 대한 자동화가 거의 힘들거라는 생각이 든다..

 

포고 플러그를 서버로 쓰려면,  

한번 켜면..끄지 말아야 하는... 불편한 진실...

 

 

혹시나 개인용 클라우드 구매를 고려하시는 분들은.... 이 사실은 좀 아셔야 할 듯....

 

금일 포고 플러그 고객센터에 마운트 시간을 줄이기 위한 방법에 대해 문의했는데...

어떤 답변이 올 지 기대됩니다...

Posted by 카프러브

 

 

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

 

제가 써본 포고 플러그는

 

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 카프러브

Mac에서 Reader라는 앱을 쓰다가 알게된 앱입니다.

현재 여러분은 블로그같은 웹 상의 글을 어떤 방식으로 읽으시나요..
저의 경우 괜찮은 글이 많은 블로그는 RSS 구독을 하거나 하지만
포스팅이 그리 많지 않은 블로그는 구독을 하기는 그렇고 해서
즐겨찾기에 등록해 놓았다가 읽고 지우고 했습니다.
그런데.. 이는 해당 컴퓨터에서만 읽어야 하기 때문에 좀 번거러움이 있었지요..


저의 패턴에 딱 적합한 앱이 있기에 소개합니다..

Readability (http://www.readability.com)

이는 PC 에서 괜찮은 포스팅을 찾았을 때 즐겨찾기 처럼 등록을 해 놓으면
http://www.readability.com 에 리스트가 저장이 되고, 태블릿이나 스마트폰, 킨들에서 읽을 수 있습니다.


http://www.readability.com 에 가셔서 계정을 생성하시고





http://www.readability.com/bookmarklets 에 순서에 따라 웹 브라우져에 즐겨찾기를
생성하시면 됩니다.



그러면 위와 같이 일반 즐겨찾기와 같은 형태로 생성이 됩니다.




그 후 웹 상에서 괜찮을 글을 찾으셨을 때.... Read Later를 클릭하면 Readability 사이트에 저장이 됩니다.




그럼 위와 같이 웹사이트에서도 스마트폰에서도 동일하게 콘텐츠를 보실 수 있습니다.


사용법도 어렵지 않고 편리한 앱이니 한번쯤 써 보시기 바랍니다.

Posted by 카프러브