2010년 4월 23일 금요일

우분투 레포지토리 캐시 서버 구축하기

이전 포스트에서 우분투 설치 자동화[footnote]Kitsch, 그 저속함에 매료된다 : 우분투 리눅스 설치 자동화에 도전 ...[/footnote]에 대해 알아보았다. 우분투를 설치하면서 가장 시간이 오래 걸리는 부분이 바로 패키지를 공식 레포지토리에서 받아오는 부분일 것이다. 본인은 포스트를 작성하기 위해 간단히 서버 한 대를 설치한 후 테스트로 한 대에만 설치해보았다. 하지만 실재 환경에서는 비슷한 시간대에 수십대의 컴퓨터에 설치를 진행할 경우 제한된 네트워크을 통해 동일한 패키지를 계속 내려 받아야 할 것이다.

하지만 패키지 다운로드를 로컬 네트워크 내에서 이루어질 수 있도록 만들 수 있다면 설치 시간을 많이 줄일 수 있을 것이다. 본 포스트에서 그 방법을 알아보도록 하자.

우분투 설치 자동화 포스트에서 구축하였던 환경을 그대로 사용할 예정이며 레포지토리 캐시를 위해 apt-cacher를 설치하도록 한다.

1. apt-cacher  설치

 # sudo apt-get install apt-cacher

 
2. apt-cacher 설정하기
2.1 apt-cacher.conf 수정하기

설치가 완료되었으면 설정을 위해 /etc/apt-cacher/apt-cacher.conf 파일을 수정하자. apt-cacher의 기본 포트는 3142이다. (추신 : apt-cacher의 기본 포트는 큰 의미는 없는듯 하다. 설정 완료후 열려있는 포트를 살펴보면 해당 포트는 열려 있지 않았다. 아마도 아파치 웹서버에 얹혀져서 돌아가는 듯하다.)

allowed_hosts : apt-cacher에 접근할 수 있는 호스트를 지정한다. 기본값으로 모든 호스트의 접근이 허용된다. 본 포스트에서는 192.168.111.0 네트워크에 존재하는 호스트에 접근을 허용할 것이다. 콤마를 이용하여 여러개의 IP를 지정할 수 있으며 192.168.111.128 - 192.168.111.200 과 같이 범위를 지정할 수 있다.

 allowed_hosts=192.168.1.0/24

 
generate_reports : 기본값은 1이며 하루 단위로 레포트를 생성한다. http://apt-cacher-server/apt-cacher/report 에 접속하여 볼 수 있다.

2.2 서버 시작시 apt-cacher 구동하기

서버 재부팅시 apt-cacher를 자동으로 시작하도록 하기 위해서는 /etc/default/apt-cacher의 AUTOSTART 값을 1로 수정한다.

 AUTOSTART=1

 
수정을 완료하였으면 아파치 웹서버를 재시작하자.

 # service apache2 restart


3. 레포지토리 설정하기

3.1 preseed.cfg 수정하기

레포지토리 캐시를 사용하기 위해서는 preseed.cfg를 수정하여 캐시에서 패키지를 받아올 수 있도록 하여야 한다. 이전 포스트에서 사용한 preseed.cfg에서 레포지토리와 관련된 부분은 아래와 같다.

### Mirror settings

# If you select ftp, the mirror/country string does not need to be set.
d-i mirror/country string manual
d-i mirror/http/hostname string archive.ubuntu.com
d-i mirror/http/directory string /ubuntu
d-i mirror/http/proxy string
 위 부분을 아래와 같이 수정한다.

 ### Mirror settings

# If you select ftp, the mirror/country string does not need to be set.

d-i mirror/country string manual

d-i mirror/http/hostname string 192.168.111.111 #apt-cacher 서버 주소

d-i mirror/http/directory string /apt-cacher/kr.archive.ubuntu.com/ubuntu

d-i mirror/http/proxy string

3.2 sources.list 수정하기

sources.list를 열어보면 레포지토리 주소가 아래와 같은 형식으로 되어있을 것이다.

 deb http://kr.archive.ubuntu.com/ubuntu/ lucid main restricted


주소를 모두 아래와 같은 형식으로 수정한다.

본 포스트에 사용된 랩 환경을 적용하면 아래와 같이 될 것이다.

4. 기존 다운로드된 deb 패키지를 캐시에 적용하기

apt-cacher 서버를 설정하기 이전에 다운로드하여 설치한 deb 패키지들은 캐시되지 않기 때문에 동일한 패키지를 설치하더라도 다시 받아올 것이다. apt-cacher 패키지는 설치 이전에 받은 패키지들을 캐시하기 위한 툴을 제공한다. apt-cacher에서 제공하는 툴은 /usr/share/apt-cacher/ 디렉토리 아래에서 찾을 수 있다. 이들 중 apt-cacher-import.pl을 사용하여 기존 패키지들을 캐시에 적용하도록 한다.

 /usr/share/apt-cacher/apt-cacher-import.pl -s /var/cache/apt/archives


 -s 옵션을 사용하면 /var/cache/apt-archives/ 아래 패키지들을 전부 복사하지 않고 심볼릭 링크를 사용할 것이다. /var/cache/apt-cacher/packages/ 아래를 확인해보면 패키지들을 가리키는 심볼릭 링크들을 볼 수 있을 것이다. 또한 첫번째 우분투를 설치하면서 캐시서버에 저장되어 있지 않은 패키지들을 받아오기 때문에 두번째 우분투를 설치할 때는 캐시서버에서 패키지들을 받아올 것이다.


참고 자료

댓글 없음:

댓글 쓰기