Egloos | Log-in


서버 어플리케이션 배포 스크립트

배포 작업의 최소 단위는 다음 복사, 실행, 루트 사용자로 실행 세 가지 기능이다. 이를 조합하여 배포 작업을 쉽게 기술할 수 있다. Fabric의 Bash 판이다.


user=blog

_put()
{
src=$1
dst=$2
host=$3
scp -pr $src ${user}@${host}:$dst
}

_run() {
cmd=$1
host=$2
ssh -l ${user} $host $cmd
}

_sudo() {
cmd=$1
host=$2
ssh -l root $host $cmd
}


간단한 사용 예. JDK 설치:

  1. 설치된 JDK 제거한다.

  2. 로컬의 .jdk1.6.0_10 디렉토리를 대상 호스트의 app의 하위 디렉토리로 복사한다.

  3. jdk1.6.0_10의 Soft Link jdk를 만든다.



jdk_install()
{
host=$1
echo "Install JDK on $host"
_run "mkdir -p app ; rm -rf app/jdk1.6.0_10 app/jdk" $host
_put ./jdk1.6.0_10 app/ $host
_run "cd app && ln -sf jdk1.6.0_10 jdk" $host
}


조금 어려운 아파치 HTTP 서버 설치와 시작:

  1. 설치된 아파치 HTTP 서버 제거한다.

  2. 바이너리 패키지를 대상 호스트로 복사한다.

  3. 바이너리 패키지 압축을 푼다.

  4. 일반 계정으로 실행하여도 80포트를 사용할 수 있도록 httpd 실행 파일의 소유주를 root로 변경하고 setuid를 설정한다.

  5. 바이너리 패키지를 삭제한다.

  6. 설정 파일을 대상 호스트로 복사한다.



httpd_install()
{
host=$1
echo "Install httpd on $host"
_run "mkdir -p app ; rm -rf app/httpd-2.2.10" $host
_put $source_dir/src/main/httpd-2.2.10-linux.tar.gz ./ $host
_run "tar xvzf httpd-2.2.10-linux.tar.gz -C app --exclude manual" $host
_sudo "cd /home/blog/app/httpd-2.2.10/bin && chown root httpd && chmod +s httpd" $host
_run "rm httpd-2.2.10-linux.tar.gz" $host
_put "$source_dir/src/main/environment-release/httpd/*" app/httpd-2.2.10/ $host
}



  1. 열 수 있는 파일 디스크립터 수를 만 개로 설정하고 아피치 서버를 시작한다.



httpd_start()
{
host=$1
echo "Start httpd on $host"
_run "ulimit -n 10000 && app/httpd-2.2.10/bin/apachectl start" $host
}


명령행에서 target_hosts 에 나열된 호스트를 대상으로 작업을 차례로 실행할 수 있다.

#!/bin/sh

#
# Tasks
#

target_hosts="
10.0.1.1 10.0.1.2
"
for host in $target_hosts
do
echo "Host $host"
for task in $@
do
$task $host
done
done


이렇게

$ ./deploy.sh httpd_stop httpd_install httpd_start

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 이피 | 2009/01/07 14:24 | 트랙백 | 덧글(0)

트랙백 주소 : http://colus.egloos.com/tb/4805223
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶