개인 서버 만들기 (2): 우분투 및 파일 서버

개인 서버 만들기 (2): 우분투 및 파일 서버

우분투 12.04

약간의 우여곡절 끝에 구매한 마이리플의 LOOK D525. 수요일 점심 먹고 주문했는데, 금요일 집에 갔더니 도착해 있더군요. 이럴 때다마 느끼는 거지만, 우리나라 인터넷 쇼핑-택배 조합은 참 환상적이란 생각을 다시금 해 봅니다…

각설하고, 제가 구축하는 개인 서버의 용도는 다음과 같습니다.

  1. 파일 서버 (개인 자료 저장소, samba, ftp)
  2. 블로그 호스팅 서버 (워드프레스)
  3. 나머지: Air video 서버, (원격) torrent client, UPNP/DLNA 서버

애초에 개인 서버는 우분투로 할 생각이기 때문에 미리 만들어둔 우분투 12.04 CD를 가지고 설치했습니다. LOOK D525를 포함해서 보통의 베어본들은 넷북과 마찬가지로 ODD(CD, DVD 드라이브)가 없습니다. 그래서 OS 설치하려면 외장 ODD를 구하거나, USB 디스크에 설치 이미지를 넣고 부팅 가능하게 만들어야 합니다. USB 부팅 디스크 만들기는 좀 성가신 데다, 운 나쁘면 상당한 삽집을 해야 할 수 있기 때문에, 외장 ODD를 하나 준비하는 게 정신 건강에 좋습니다.

다행히 저희 집에는, ODD를 내장하지 않은 마눌님 울트라북 살 때 같이 장만한 외장 ODD가 있기 때문에 전 그냥 설치 CD 넣고 전원 연결… 아니죠, 전원 넣고 바로 설치 CD 삽입했습니다. 요즘의 리눅스 배포판들은 대체로 설치 과정에서의 완성도도 매우 높은데요, 특히나 우분투는 웬만한 최신 장치들을 자동으로 다 잡아 주기 때문에 우분투 설치는 사실 일도 아닙니다.

설치 CD로 부팅하면 환영 메시지가 나타나고 언어, 계정, 시간대 선택하면 10 ~ 20분 정도 복사 및 설치 작업을 진행되다가 완료되면 리부팅하는 한번 것으로 기본 설치는 끝입니다.

한글 불완전 설치 문제

문제는, 설치 과정에서 언어를 한글로 선택했을 때, 설치가 끝나고 부팅 후 로그인하면 “언어 지원이 완벽하지 않습니다”라면서, 다음의 다이얼로그를 표시해서 표시합니다.

이 상태에서 우분투 화면을 자세히 들여다 보면, 어떤 부분은 한글로, 다른 부분은 영어로 표시됩니다. 쩝. -_-; 우분투가 그걸 알려 주면서 어떻게 해야할 지를 알려 주는 건, 불행 중 다행이네요.

시키는 대로 여기서 이 동작을 실행 버튼을 누르면 거창하게 Authenticate 창이 나타나고 올바른 사용자인지를 확인합니다. 오, 스마트한데…. 감탄하며 비밀번호를 입력했습니다. 나름 뭔가를 열심히 하는 듯 싶더니만, “언어 지원 패키지를 완전하게 설치할 수 없습니다”라는 메시지를 뿌리고는 그냥 이전과 똑같은 상태로 남습니다. 응? 순간 허탈… 아마도 우분투의 기본 저장소에 한글 관련된 패키지들이 빠진 게 있는 듯 싶은데요, 일단 Close 버튼을 눌러서 화면을 닫습니다.

이런 문제라면 나 말고도 많은 사람들이 겪었겠죠? 구글에서 다음의 키워드로 검색해 봅니다.

우분투 12.04 언어 지원이 완전하지 않습니다

오예, 검색 결과 제일 처음, 우분투 커뮤니티에 이미 문제와 해결책이 나와 있네요. 우분투 소프트웨어 다운로드 저장소를 다음(Daum)으로 지정하면 된다네요. 해당 글에는 GUI로 하는 방법도 나오고요, 좀더 찾아보면 화면 캡쳐까지 친절하게 설명해 놓은 사이트도 있습니다.

전 우분투 12.04의 기본 쉘인 유니티가 워낙에 낯선데다 설정하는 단계도 많은 것 같아, 터미널에서 간단하게 바꿀 수 있는 방법을 다시 검색… GUI 프로그램이 결국 하는 건 /etc/apt/source.list 파일에서 kr.archive.ubuntu.com 를 ftp.daum.net 으로 변경하는 거더군요.

이런 거야 더 쉽게 하는 방법이 있죠. 터미널(명령창)을 열어서 다음 명령을 수행합니다.

$ cd /etc/apt
$ sudo cp sources.list sources.list.org
$ sudo sed -i 's/kr.archive.ubuntu.com/ftp.daum.net/g' sources.list
$ sudo apt-get update

[Tip] 터미널 실행하기

  • 우분투 설치하고 나면 화면의 제일 왼쪽에 아이콘들이 쭈욱 있는, 윈도7의 작업바에 해당하는 작업 관리 패널이 있습니다. 그 중 제일 위의 아이콘을 클릭하면 대시보드 화면이 나오는데, 검색 입력창에 terminal 이라고 입력하면 터미널 프로그램 아이콘들이 표시됩니다.
  • 터미널 아이콘을 클릭하면 터미널이 나타나면서, 작업 관리 패널에도 터미널 아이콘이 표시되는데, 윈도7과 마찬가지로 자주 쓰는 프로그램은 아이콘을 마우스 우클릭해서, 작업 관리 패널에 고정시켜서 쓰면 편리합니다.
  • 참고로 우분투 12.04의 기본 쉘인 유니티는,  전통적인 리눅스 쉘이었던 그놈(gnome)이나 KDE과 좀 많이 달라서(맥 OS와 많이 비슷해 졌습니다), 처음 봤을 때는 원하는 프로그램을 찾아 실행하는 것도 낯설더군요. 개인적으로는 조금 익숙해지면 사용성 면에서는 더 편리할 것 같긴 합니다. 아, 그러고보니 저는 유니티와 비슷한 맥OS를 사용하고 있으니까, 뭐 객관적인 의견이라고 보긴 좀 힘들 것 같고요, 어차피 일단 서버로 설정하고 나면 주로 터미널에서 작업할 거니 상관은 없겠네요.

[Tip] sed

  • 참고로 sed는 정규표현식을 지원하는 비대화식 텍스트 편집기인데요, 파일 또는 표준 입력에서 들어오는 문자열에서 특정 패턴과 일치하는 문자열을 찾거나 대치해서 파일 또는 표준 출력으로 내 보내는 기능을 제공하기 때문에 이런 용도로는 딱입니다.
  • 정규표현식은 특별한 의미를 가지는 문자들을 이용해서, 전체 문자열에서 하나의 문자 또는 문자열과 일치하는 부분을 찾거나 대치할 수 있는 문자 집합을 말합니다.
  • 리눅스/유닉스 환경에서 개발자나 관리자로 지내면서 문자열 처리와 관련된 각종 노가다 작업을 하다 보면, sed, awk, grep 등과 같이 정규 표현식을 지원하는 각종 프로그램들에 어느 정도 익숙해 져야할 필요가 생깁니다. 좋은 책도 있고 온라인으로도 좋은 자료들이 많으니 관심 있으신 분들은 검색해 보세요.

[Tip] apt-get과 sudo

  • apt-get은 우분투 사용에는 필수 불가결한 프로그램인데요, 설명과 사용법이 잘 정리된 사이트가 있어 그대로 인용합니다. 시간 나실 때 참고하면 좋겠네요.

apt-get(Advanced Packaging Tool)은 우분투(Ubuntu)를 포함안 데비안(Debian)계열의 리눅스에서 쓰이는 팩키지 관리 명령어 도구입니다. 우분투에는 GUI로 되어 있는시냅틱 꾸러미 관리자도 있기는 하지만 이런 저런 개발관련 패키지를 설치할 때는 커맨드기반인 apt-get이 더 편하기도 합니다. sudo는 superuser권한으로 실행하기 위함입니다. – Ubuntu의 apt-get 명령어 정리

  • sudo는 리눅스에서 다른 사용자의 보안권한과 관련된 프로그램을 구동할 수 있게 해주는 프로그램입니다. 주로 일반 사용자 계정에서 프로그램 설치나 기타 관리자 권한이 필요할 때 사용합니다. 그래서 우분투 소프트웨어 패키지 검색할 때 사용하는 apt-cache를 실행할 때는 그냥 실행해도 되지만, 패키지 설치나 삭제하려고 apt-get을 실행 할 때는 관리자 권한이 필요가기 때문에 sudo apt-get로 실행합니다. 더 자세한 내용은 한글 위키피디아의 sudo 내용을 참고하세요.

자, 다운로드 소스가 daum으로 바뀌고 패키지 정보 업데이트도 끝났으니, 이제 System Settings – Language Support  항목을 클릭합니다. 언어 지원 패키지를 완전하게 설치되지 않았는데 설치할래? 물어보는 창이 나오는데요, 안 할 이유가 없죠? 설치 버튼을 클릭합니다. 그리고나서 Authenticate 한번 해 주면, 네, 완전하게 설치되지 않았다던 한글 관련 패키지들을 알아서 쭈욱 설치해 줍니다. 이후 로그아웃 한 다음 다시 로그인하면, 이젠 한글이 정상적으로 표시됩니다. (삽질 끝에 보는 한글은, 좀 많이 반갑더군요. ^^)

samba 서버 설정

애초 서버의 주 용도중 하나가 각종 개인 자료들의 저장소였기 때문에, OS 설치 후, 집안 내에서 다른 컴퓨터들과의 자료 교환을 위해 samba(윈도우 파일 공유)서버를 설치했습니다. samba는 리눅스/유닉스에서 윈도우 PC들과의 네트워크 공유를 할 수 있는 해 주는 소프트웨어 패키지인데요, 우분투 서버에서 공유된 네트워크 디렉토리를 윈도우 PC에서 마치 윈도우 공유 폴더처럼 사용할 수 있게 해줍니다.

samba 설치

우분투를 기본 옵션으로 설치하면, 삼바 서버가 빠져 있을 수 있는데요, 터미널에서 apt-get으로 다음과 같이 설치합니다.

$ sudo apt-get install samba

samba 계정 등록 및 비밀번호 설정

삼바가 설치된 후에는, 자신의 계정으로 삼바를 사용할 수 있도록 smbpasswd를 다음과 같이 실행합니다.

$ sudo smbpasswd -a happyhuni

smbpasswd는 비밀번호를 두 번 확인하고, -a 옵션이 주어졌기 때문에 happyhuni 계정을 삼바 사용자 계정으로 등록하고 나서 비밀번호를 설정해 줍니다. 이후에 등록된 계정의 비밀번호를 바꾸는 경우에는 그냥 smbpasswd 만 실행하면 됩니다. 그러면 현재 비밀번호 한번 확인한 다음 새 비밀번호를 2번 확인해서 변경해 줍니다.

공유 디렉토리 설정

이제 마지막으로 네트워크에서 공유할 디렉토리를 설정하면 됩니다. 최고의 편집기(vi? gedit? 에이 무슨 말씀, 그건 바로 이맥스죠. ^^;)로 /etc/samba/smb.conf 파일을 열어서 다음과 같이 수정합니다.

...
[globlal]
   workgroup = MyHome
... 
[homes]
   comment = Home Directories
   browseable = yes
   read only = no
   create mask = 0700
   directory mask = 0700
   valid users = %S
...

위와 같이 설정하면, 네트워크 상에서 내 계정의 홈 디렉토리(/home/happyhuni)가 happyhuni 란 폴더로 표시되고, 해당 폴더는 오로지 나만 읽고 쓸 수 있습니다.

만약 특정 디렉토리를 네트워크로 공유하고 싶으면 smb.conf 파일의 제일 아래 쪽에 다음과 같이 추가합니다.

[MyData]
        path=/opt/mydata
        public = yes
        writable = yes 
        write list = +happyhuni +prettywife
        create mask = 0664
        directory mask = 0775

위와 같이 하면, 서버의 /opt/mydata 디렉토리를 네트워크 상에서 MyData 라는 폴더로 공유하는데, happyhuni와 prettywife (마눌님께서 요런 걸 좀 봐주면 좋을텐데요…)만 읽고 쓸 수 있게 합니다. 더 자세한 내용은 구글에서 우분투 삼바 설정 튜토리얼 뭐 이런 걸로 검색하면 와르르 나오니 참고하세요.

삼바 설정을 바꾸고 나서, 이를 재적용 해 주려면 터미널에서 다음을 실행합니다.

$ sudo restart smbd

방화벽 설정

마지막으로 보안을 위해 외부에서 들어오는 연결 요청을 차단하는 방화벽에, 삼바 서버가 사용하는 포트를 허용해 줘야 합니다. 우분투의 기본 방화벽 설정 프로그램은 ufw인데요, 이와 관련된 사용법은 다음 URL에 잘 정리되어 있습니다.

구글에서 삼바가 사용하는 포트는 tcp:139,445 와 udp:137,138이라고 나오네요. 터미널에서 아래와 같이 등록해 줍니다.

$ sudo ufw allow 139,445/tcp
$ sudo ufw allow 137,138/udp

방화벽 설정까지 끝났으면, 이제 윈도우 PC의 탐색기 주소창에 \\server_ip 를 입력하고 엔터 키를 누르면, 네 happyhuni 와 MyData가 나타나면 성공적으로 설정된 거고요, 한참 버벅 거린 후에 못 찾겠다고 나오면… 저런, 운이 없군요. 우분투 설치부터 다시 하세요… 농담이고요, smb.conf와 방화벽 설정이 잘 되었는지 부터 확인해 볼 필요가 있습니다. 만약 ID와 비밀번호를 입력했는데 틀렸다고 나오면, smbpasswd 설정 부분이 잘못 되었을 가능성이 높습니다.

ftp 서버

vsftp 설치

우분투에서 쓸 수 있는 ftp 서버들은 정말 많지만, 가장 많이 쓰이는 것 중 하나고 계속 사용해서 손에 익은 vsftpd를 선택했고요, 설치 및 설정 과정은 samba에서 한 거랑 많이 비슷합니다.

$ sudo apt-get install vsftpd

vsftp 설정

설치가 끝나고 나면 /etc/vsftpd.conf 파일을 다음과 같이 편집합니다.

...
# daemon started from an initscript.
listen=YES
...
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
file_open_mode=0664
...
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
...

이후 ftp 클라이언트로 로그인했을 때, 홈 디렉토리가 아닌 다른 곳으로 경로 이동 할 수 있게 하려면, /etc/vsftpd.chroot_list 파일에 경로 이동을 허용할 계정을 추가합니다. 예를 들어 happyhuni 계정을 입력하고 나면 요렇게 되야 합니다.

$ cat /etc/vsftpd.chroot_list 
happyhuni

vsftp 설정을 바꾸고 나서, 이를 재적용 해 주려면 터미널에서 다음을 실행합니다.

$ sudo restart vsftpd

방화벽 설정

samba와 마찬가지로, ftp 사용을 위해서는 방화벽에 ftp 서버 포트를 등록해 줍니다. ftp는 tcp:21 이네요. 다음 한줄이면 됩니다.

$ sudo ufw allow 21/tcp

잘 설정 되었는 지 확인은, ftp client로 접속해서 다음을 확인합니다.

  • 자신의 홈 디렉토리가 잘 보이고, 여기에 디렉토리 작성 및 파일 업로드가 잘 되는가
  • 상위 디렉토리 및 기타 권한이 있는 디렉토리로의 이동이 잘 되고, 주어진 권한대로 읽고 쓰기가 잘 되는가

파일 서버 성능

첫 글에서도 언급했지만, 몇 일간 파일 서버로서의 결과는 무척 만족스럽습니다.

  • 집 안에서 파일 서버와 기가비트로 연결했을 경우, 대략 70 ~ 80 MB/s (560 ~ 640 Mbps)가 나옵니다. USB2 외장 HDD에 복사하는 것보다 훨씬 빠를 뿐더러, 복사 시 부하도 덜 걸립니다.
  • 집 밖에서 ftp로 다운로드 받는 경우, 상태가 좋을 때는 유선으로 11 MB/s (88 Mbps)까지 나오기도 합니다. 무선으로 받으면 2 ~ 3 MB/s 정도 나오는데, 이건 서버 쪽 보다는 테스트한 무선 네트워크 환경상의 제약일 테지요.

이만하면 개인적으로 사용하는 파일 서버로서의 역할은 충분하다고 보여집니다. 더군다나 보통 250 ~ 500 W를 사용하는 일반 PC에 비해면 사용하는 전력도 약 10%에 불과하고요.

다음에는 워드프레스를 이용한 블로그 호스팅 서버로 설정하고, 원격 토렌트 다운로드 관리하는 기능 및 에어 비디오 서버 기능을 정리해 볼까 합니다.

자 다들 홈서버 한번 질러 보시죠… (^^;)