아래는 예전에 연구실에서 작성했던 포맷임. 이 포맷 기준으로 모든 글을 작성하자
# 서버의 용도 #
실험용 : 연구원들의 연구를 위한 실험용으로 사용된다.
프로젝트 관리용 : svn, cvs가 설치되어 연구실의 프로젝트들이 관리되고 있다. svn, cvs 저장소가 필요한 사람은 best 서버 담당자에게 요청하도록 한다.
# 서버 관리 (for 관리자) #
현재 best는 ubuntu server 64-bit version (2007/10 release, linux 2.6.22 kernel)이 설치되어 있다. 아래의 모든 내용은 ubuntu 배포판을 기준으로 한 관리 내용이다.
현재버전의 지원기간 : 2009년까지 (따라서 주기적인 업데이트를 통해 다음버전으로의 배포판 업데이트가 이루어질 수 있도록 해야함)
## 관리자의 임무 ##
서버 업데이트
아래 두 명령으로 간단하게 업데이트를 수행할 수 있다.
장기간 업데이트를 하지않고 한번에 업데이트를 하면 시스템이 불안정해질 수 있고,
지원기간(2009년)내에 업데이트를 하지 않고 지원기간이 지나가면 배포판을 다시 설치할 필요성이
생기므로 한달에 한번정도는 아래 두 명령을 실행한다.{{{
sudo apt-get update
}}}
sudo apt-get upgrade
프로그램 설치/ 저장소 관리
연구원들의 요청에 따라 프로그램을 설치해 주고, svn, cvs저장소에 대한 저장소를 생성하여 사용권한을 부여한다.
프로그램 설치는 아래 두 명령 중 하나를 이용하여 간단하게 수행 할 수 있다.
sudo apt-get install <program name>
or
sudo aptitude
## 관리 내용 정리 ##
### 새로운 유저가 추가 (신입생등) ###
- adduser 해서 유저 만들고, group 지정해줌
- home에 디렉토리를 만들어줌
- 설정파일, 필요한것 있으면 넣어줌
- samba, svn, cvs 등 요구 사항이 있으면 설정해줌
### Samba 관련 ###
#### 현재 Samba 세팅 정보 ####
- 설치 디렉토리 : /usr/local/samba에 설치됨 (ubuntu에서 제공하는 samba가 버그가 있어, 수동으로 컴파일해 설정함)
- 설정파일 위치 : /usr/local/samba/lib/smb.conf
- 유저암호 파일 위치 : /etc/samba/private 폴더 (암호와 설치 디렉토리가 한곳에 모여있어도 상관없으나, 지금은 분산되어 있음, 암호파일 위치 지정도 smb.conf에서 할 수 있음)
#### 사용자 추가 ####
(samba 설정 및 실행이 되있다는 가정하에 존재하는 유저에 대해서)
- /usr/local/samba/lib/smb.conf 파일에 새 user 관련 내용 추가 (복사신공)
- smbpasswd -a username (/etc/samba/private/smbpasswd 의 파일이 자동으로 수정됨)
### CVS 관련 관리 정보 ###
#### 현재 CVS 세팅 정보 ####
- 저장소 루트 위치 : /var/lib/cvsd/
이 디렉토리 아래에 모든 저장소가 존재한다.
cvs설정상 이 위치를 root 디렉토리로 보기때문에 외부에서 접근시 이곳이 루트가 된다. - 설정파일 위치 : /etc/cvsd/cvsd.conf 파일
- 프로젝트/저장소 관리
- Best관리자는 모든 CVS 프로젝트를 저장소 루트 위치(/var/lib/cvsd) 아래에 생성되도록 한다.
- 프로젝트 별로 다른 CVS 저장소(다른디렉토리)를 가지도록 한다. (프로젝트 별 권한 부여 및 관리의 편의를 위해)
- 프로젝트(저장소) 별로 접근권한의 설정은 저장소의 CVSROOT 디렉토리 아래에 passwd 파일을 생성하고 여기에 유저를 추가 하여 따로 관리된다.
(유저추가는 아래에 설명)
현재 존재하는 프로젝트
- /ITRCProject : VICODE 프로젝트 (접근권한 : namjelee, newhero, hgkang, pllab)
- /ADDProject : 2007년 시작 ADD 프로젝트 (접근권한 : hilim, newhero)
- /cvstest : Test용 저장소 (접근권한 : pllab)
- 기타 (개인 cvs 프로젝트들)
새로운 프로젝트(저장소) 추가
새로운 프로젝트 추가 및 저장소 생성은 관리자만 가능하다.
- 프로젝트 저장소를 위한 디렉토리 생성 및 초기화
$ cd /var/lib/cvsd (저장소 루트 위치로 이동) $ mkdir 저장소이름 (프로젝트와 관련되는 이름이면 좋을것이다.) $ cvs -d /var/lib/cvsd/저장소이름 init (저장소 초기화, 주의!! 저장소경로에 대해 절대경로 full path를 써주어야 한다.
- cvs접근을 위한 권한 설정
$ chown root.cvsd 저장소디렉토리 -R $ chmod 770 저장소디렉토리 -R
- cvs설정파일에 새저장소 추가 입력
- /etc/cvsd/cvsd.conf 파일에 Repos /저장소명 추가
저장소에 대한 유저 추가
- 저장소별로 접근가능한 유저가 필요한다.
- 저장소에 대한 사용자 추가: 저장소루트/저장소디렉토리/CVSROOT/passwd 파일에 새로운 유저를 추가해야 한다.
$ sudo cvsd-passwd /var/lib/cvsd/저장소디렉토리/CVSROOT/passwd 유저이름 (패스워드를 입력하라고 뜨면 패스워드를 입력해준다.)
- /etc/init.d/cvsd restart (데몬을 재시작)
ETC
- cvs연습을 하고 싶으면 /cvstest 에 test용 저장소가 있으니 이곳에 프로젝트를 공유하며 연습을 해보세요
- CVS에서 프로젝트 관리를 하고 싶은분은 관리자에게 요청 부탁드려요.
SVN 관련 관리 정보
best 저장소에 관한 간단한 소개 글 : (!) ReposOnBest? 페이지
현재 존재하는 프로젝트
저장소가 필요한 사람은 관리자에게 말씀해 주세요.
- https://best.kaist.ac.kr/svn/ropas 예전 ropas의 통째로 cvs를 가져왔습니다. svn 계정이 있는사람은 누구나 읽고 쓸수 있습니다.
- https://best.kaist.ac.kr/svn/analyzers/pruv 강현구,김유일,박상운의 pruv-c
- https://best.kaist.ac.kr/svn/analyzers/raccoon https://best.kaist.ac.kr/svn/analyzers/raccoon2 김유일, 전진성의 너구리 (수정이 아닌 읽기는 svn 계정만 있으면 누구나 가능합니다.)
- https://best.kaist.ac.kr/svn/SandBox 연습용 저장소입니다. 계정이 없이 아무나 읽고 쓸수 있습니다.
- https://best.kaist.ac.kr/svn/general 랩에서 만들어지는 이런저런 자질구레한 SW들
- 그외 개인 저장소 및 이것저것 : /home/svn 아래에 있는 각각의 폴더들
현재 설정 및 체계
- 저장소 위치 : /home/svn 에 프로젝트별로 저장소가 위치한다.
- 저장소 설정
- 현재 apache2와 svn이 연동해서 작동합니다. 따라서 apache2가 항상 running 상태여야 합니다.
- apache2와 subversion은 ubuntu 패키지가 설치되어 있습니다.
- apache2의 시작,종료 및 재시작
$ /etc/init.d/apache2 [start | stop | restart]
- 설정파일 위치
- 실제 자주 사용되는 설정 파일
- /etc/apache2/dav_svn.authz : 각 저장소에 대한 접근권한을 설정할 수 있는 파일
- /etc/apache2/dav_svn.passwd : svn 유저들에 대한 비밀번호 파일
- 거의 사용될 경우가 없는 설정 파일
- /etc/apache2/mods-enabled/dav_svn.conf : apache2의 dav_svn 모듈에 관한 설정 파일, 최초 설치시나 저장소를 다른곳으로 옮기지 않는한 수정 필요 없음
- 실제 자주 사용되는 설정 파일
- 저장소 관리
- Best관리자만 저장소 생성을 하도록 한다. 관리자는 모든 저장소를 \"/home/svn\" 아래에 생성되도록 한다. (/home/svn3 와 /home/trac는 과거 저장소 백업 인듯, 사용은 안하나 혹시 몰라 그냥 두었음)
새로운 프로젝트(저장소) 추가
맴버들이 프로젝트나 개인 작업을 위한 저장소를 요청하면 관리자는 저장소를 생성해 준다.
- 프로젝트 저장소를 위한 디렉토리 생성 및 초기화
$ cd /home/svn (저장소 루트 위치로 이동) $ svnadmin create --fs-type bdb <저장소이름> // 저장소에 대한 디렉토리가 생성되고 초기화 될것이다. // bdb는 데이타 저장을 berkeleyDB를 사용해서 하겠다는 옵션이다. fsfs옵션을 주어서 파일시스템을 이용해서 할 수도 있다. - svn접근을 위한 소유자 변경 (root -> www-data로)
$ chown www-data <저장소디렉토리> -R
- 저장소에 대한 접근 권한 설정
- /usr/local/apache2/conf/dav_svn.access 파일에 새로 생성된 저장소에 대한 접근 가능 유저를 설정한다.
svn에 대한 유저 추가
- 유저 암호 생성 : svn을 위한 암호가 /usr/local/apache2/conf/dav_svn.passwd 추가되어야 한다.
$ sudo htpasswd /etc/apache2/dav_svn.passwd <유저이름> (패스워드를 입력하라고 뜨면 패스워드를 입력해준다.)
- 유저에 대한 저장소 접근 권한 설정
- dav_svn.authz파일을 수정하여 유저가 원하는 저장소에 접근 권한을 허가해준다.
ETC
- svn연습을 하고 싶으면 https://best.kaist.ac.kr/svn/SandBox에 연습용 저장소가 있으니 이곳에 데이타를 공유하며 연습을 해보세요.
- svn에서 프로젝트 관리나 개인 작업을 관리 하고 싶은분은 관리자에게 요청 부탁드려요.
MYSQL 관련?
- 현재 best에는 mysql 없음. plus에 존재
서버 재설치
꾸준히 update를 수행했을 경우 배포판을 재설치할 필요가 없지만 부득히하게 해킹 등으로 ubuntu를 다시 설치해야 할 상황이 발생하면 절차는 아래와 같다.
백업
가장 먼저 해야 하는 작업은 현재 디렉토리에 대한 백업이다. 아래 디렉토리는 반드시 백업되어야 한다.
- /etc 디렉토리 : 각종 설정파일들이 존재한다. 특히 패스워드와 같은 사용자에 대한 정보가 존재한다.
- /var 디렉토리 : CVS 저장소가 존재한다.
- /usr/local 디렉토리 : samba (설정파일포함), svn관련 프로그램이 존재한다.
위의 디렉토리를 백업한다. 백업은 /home/backupDir 디렉토리로 압축하여 옮겨 놓는다. (/home 디렉토리는 OS교체시도 살려둘 것이므로) 아래는 etc디렉토리를 압축해서 백업하는 예다. 아래와 같은 명령을 백업해야 할 모든 디렉토리에 대해서 수행한다.
tar -cvzf etc.tar.gz /etc mv etc.tar.gz /home/backupDir
리눅스를 설치할 때 파티션을 나누어야 하는데 sdb1 (/home) 은 남겨두고 나머지는 모두 삭제한다. 현재 best의 파티션은 다음과 같다.
- sda
- sda1 : /boot (1 GB)
- sda2 : swap (8 GB)
- sda3 : / (4.1 GB)
- sda5 : /usr (20 GB)
- sda6 : /var (15 GB)
- sda7 : /tmp (2 GB)
- sdb
- sdb1 : /home (432 GB)
<!> 새로 OS를 설치할 때 위와 같이 파티션을 나누면 문제가 없을 것이다. 혹시 부족했던 파티션이 있으면 용량을 늘려도 상관없다. 중요한 것은 /home은 절대 지워서는 안된다는 것이다.
source.list 및 필수 프로그램 설치
ubuntu에서 프로그램 저장소의 주소를 source.list에 적어두면 프로그램을 쉽게 다운로드해서 설치할 수 있기 때문에 source.list를 기록하는 것이 가장 먼저 필요하다. /etc/apt/source.list 파일을 수정하면 된다. 기존에 etc폴더를 참조하고 웹의 정보를 통해 현재 배포판에 맞는 source.list를 입력한다.
vim /etc/apt/source.list
http://www.ubuntu-nl.org/source-o-matic/ 사이트에서 컴퓨터와 지역을 입력하면 여기에 맞는 소스리스트를 자동생성해주기 때문에 이것을 이용하면 좋다.
소스 리스트를 수정한 후 아래 두 명령을 실행하여 최신 소스 리스트로 업데이트 하고 서버를 최신 버전으로 업데이트 한다.
sudo apt-get update // update the local list of packages sudo apt-get upgrade // install all available updates
이제 apt-get install <package> 명령으로 프로그램들을 쉽게 설치할 수 있다.
sudo apt-get install ssh // 설치 sudo apt-get install sshd /etc/init.d/ssh start // ssh 서버 실행
위의 명령으로 먼저 ssh를 설치하자. 이제 서버실에서 서서 작업하는 것이 아니라 연구실에서 앉아서 원격으로 작업을 할 수 있다. :)
설정파일(유저, 암호, 방화벽) 복구
재설치할 때 가장 중요하다고 할 수 있다. 백업한 etc파일로 부터 유저 정보를 살린다. 중요한 것은 sudo -i 명령을 통해 완전히 root 유저가 된 후 아래 명령을 수행해야 한다는 것이다. ubuntu는 사용자 권한에서 sudo명령을 통해 일시적으로 root권한을 가지고 명령을 수행할 수 있도록 해주는데 이 경우 passwd를 바꾸거나 하는 작업에서 권한이 엉켜 곤란한 상황에 빠질 수 있기 때문이다.
- /etc/passwd 파일 복구 기존에 백업한 passwd 파일에서 유저정보를 새로 생긴 passwd파일에 추가한다. 유저 number는 그대로 유지하는 것이 좋다. 그래야 home 디렉토리 권한이 엉키지 않고 유지될 수 있다.
- /etc/shadow 파일 복구 암호가 들어있는 파일이다. passwd 파일 복구하는 것과 동일하게 복구 한다.
- /etc/group 파일 복구 그룹정보가 들어있는 파일을 복구한다. 관리자 계정의 경우 여러 그룹에 추가하게 된다. (adm, dialout, cdrom, floppy, audio, dip, src, plugdev ... 등등, 기존에 있는데로 하면 된다.) 그룹번호 역시 그대로 유지한채 복구한다.
- /etc/host.deny, /etc/hosts.allow best서버는 철저하게 외부에서의 접속이 차단되어야 한다. 따라서 기존의 이 두 파일에 대해서 복구하여 외부로부터의 접근이 차단될 수 있도록 한다.
Samba 설치 및 복구
Samba를 사용하는 유저들이 그대로 Samba를 사용할 수 있도록 설치하고 설정을 복구한다.
- 프로그램 설치
현재는 소스를 이용해 수동으로 설치된 상태이나 ubuntu 패키지를 이용하도록 변경할 필요가 있다.
- 프로그램 설정파일 복구
- /usr/local/samba/lib/smb.conf 파일을 복구한다. 이곳에 삼바를 사용하는 유저들에 대한 설정이 있다.
- /etc/samba/private 디렉토리를 복구한다. 이곳에 유저들의 암호가 저장되어 있다.
- 서버 실행
/usr/local/samba/sbin/smbd -D /usr/local/samba/sbin/winbindd -B /usr/local/samba/sbin/nmbd -D
- 자동실행 스크립트 생성
Samba의 경우 우분투 패키지가 아님으로 재부팅시 자동실행이 안되므로 자동실행되도록 스크립트를 만들어 rc.local에 추가한다.
- 스크립트 생성
#!/bin/sh /usr/local/samba/sbin/smbd -D /usr/local/samba/sbin/winbindd -B /usr/local/samba/sbin/nmbd -D
- 스크립트 생성
- rc.local에 추가
스크립트 이름을 startsmb로 만들었다면
chmod +x startsmb // 실행파일로 만든다. mv startsmb /usr/local/bin // path에 설정된 디렉토리로 이동 vim /etc/rc.local // rc.local 파일에 startsmb를 실행하는 문장 추가
CVS 설치 및 복구
- cvs를 설치한다. apt-get 이용해서 간단하게 설치할 수 있다.
sudo apt-get install cvsd
- 설정파일 복구 /etc/cvsd/cvsd.conf 파일을 복구한다.
- 저장소 복구 /var/lib/cvsd/ 디렉토리에 기존의 저장소를 복구한다. 복구한다. 기존과 같이 소유자를 설정해 준다.
- cvs서버를 실행한다.
sudo /etc/init.d/cvsd start
SVN 설치 및 복구
- SVN을 위해 apache2, berkeleyDB, openSSL의 세가지 프로그램이 필요하다. 이 세가지 프로그램을 설치하고 apache2에 대한 설정파일을 복구한다. 현재는 이 프로그램들도 수동으로 설치되어 /usr/local에 위치한다.
- 간단하게 할려면 백업한 /usr/local/ 아래 세가지 프로그램이 있으니 이것을 그대로 복사하여 설정파일과 실행파일을 그대로 사용할 수 있다.
- 역시 apache2에 대한 자동실행을 위해 rc.local에 실행문장을 추가한다. (백업한 /etc/rc.local을 참조)
설치후 테스트
- 재부팅 후 svn, cvs, samba가 자동실행되어 잘 작동하는 지 체크한다.
- xwindow등을 이용해서 원격에서도 vim등의 작업이 원활하게 수행되는 지 체크한다.
- cvs, svn 저장소에 대한 검사
- 각 단계에서 안되는 것이 있으면 해결하고, 필요한 프로그램이 있으면 설치한다.
추가 설치된 프로그램
현재 best서버에서 ubuntu server버전 설치후 추가된 프로그램이다.
- ssh, vim-full version, java6, javacc, jlex, dot, graphviz, latex, hlatex, cscope, ocaml, sbcl, sed, bison, lex, yacc, flex, bison
- hanterm <!> 필요한 프로그램이 있으면 말씀해주세요.
Log
서버 관리하면서 큰 변화가 있을 때 마다 수정
- 20080106 서버관리자 변경 : 이재호 -> 조우영
- 20080105
- samba 설치 /usr/local/samba
- 아파치2 설치 /usr/local/apache2
- berkeleyDB 설치 /usr/local 아래
- subversion, openssl 설치 /usr/local 아래
- 20080105 OS 재설치
- 우분투 7.10 버전
- 20070701 OS 재설치/ 백업
- 우분투 7.01 버전 (2008년까지 지원되는 버전. 따라서 2008년중 배포판 업그레이드 필요함)
- 20060218 기계바꾸고 새 OS 설치 20060218 이전 기록 삭제
Todo
현재 각 유저마다 passwd 설정을 3가지를 해야되는데,
- 로긴 passwd
- samba passwd (optional)
- apache passwd (for svn)
관리자, 사용자 모두 번거로우니 통합 인증할수 있게... 가능하다면 다른 머신의 것도 함께?
To. Admin
할말이 있으면 요청하세요.
