리눅스서버백업및복구를위한관리자메뉴얼 권대건 부산대학교컴퓨터공학과 duskan@pusan.ac.kr Abstract 리눅스의대부분의작업은터미널에서콘솔입력을이용하기때문에리눅스의사용방법에익숙하지않다면서버를관리하기어렵다. 특히서버에문제가생긴경우백업된데이터를다시가져옴으로써대부분의문제를해결할수있으나앞의방법만으로는서버를복구할수없는경우디스크를포맷하거나새디스크에 OS 를다시설치하여 Galab-work 를복구해야하는어려움이따른다. 본보고서에서는이러한사용자들이쉽게 Galab-work 를백업하는방법에대해소개한다. 또한만약서버를다시설치해야만하는경우서버를설치하고이전데이터들을복구하기위한방법에대해설명한다. 이후이러한상황에대비해서평소서버관리시신경써야할부분에대해서언급하고자한다. Keywords: Linux, Server, Galab-work, CentOs, Backup 1 서론 Galab-work는강의자료, 연구실도서관리, 연구과제용웹페이지등을제공하는리눅스운영체제서버이다. 하지만컴퓨터를사용하는사용자들은대부분 GUI(Graphic User Interface) 가제공되는윈도우운영체제나맥운영체제를사용한다. 리눅스에서도 XWindow와같은 GUI를제공하고있으나 GUI를이용하여작업하는데에는한계가있으며대부분콘솔에서작업하게된다. 이러한리눅스의특성때문에주로 GUI를통해작업하던윈도우, 맥사용자가리눅스운영체제에서콘솔을통해서버의데이터를백업하고복구하는것은많은어려움이따른다. 본보고서에서는이러한사용자들이쉽게 Galab-work를관리하기위한방법을제시한다. 우선적으로 tar형식의압축과 phpmyadmin을이용하여 Galab-work의파일과데이터베이스를백업하는방법에대해소개하고이후 ftp와 yum 명령어를활용하여백업된데이터를이용하여서버를복구하는방법에대해설명한다. 결론에서는체계적인관리를위해관리자가유의해야할사항에대해언급할것이다. 본보고서는 2개의웹페이지 [1][2] 와 2012년 3월에작성한 TR[3] 을참고하여작성하였다. 1
2 Galab-work 서버의구조 2.1 서버운영체제및서버구조리눅스서버는 Cent OS 6.2버전이설치되어있다. Cent OS 는 RedHat 계열의리눅스로, 같은 RedHat 계열인 Fedoraome 보다안정적이어서서버용으로많이사용되는리눅스 OS 이다. Cent OS에서는 apt 방식으로패키지를관리하는 Ubntu와달리 RPM 방식으로패키지가관리된다. 본서버의 root를제외한대부분의계정은 Home 디렉토리에서관리된다. Root 또한 root 계정을위한 root 디렉토리가있으나, 보안상의문제로 root를이용하여개발하는경우는거의없기때문에잘사용하지않는다. 그러므로서버에서하는작업들의대부분은 Home디렉토리안의각계정디렉토리내에서작업이수행된다. 예외적으로도서관리용웹페이지와같은몇몇페이지들은 Root에의해관리되는데해당프로그램들은 root 디렉토리에서실행되지않고, 일반적으로웹페이지서비스를사용할때주로이용되는 /var/www/html/ 디렉토리에서관리한다. 또한리눅스에대한대부분의설정은 ETC 디렉토리내부의하위디렉토리와파일들에의해관리되기때문에 ETC 내부의파일들에대한관리도필요하다. 이후백업, 복구, 관리를위해서는앞에서언급한세디렉토리와파일들이어떠한것들이있는지, 어떻게설정되어있는지에대해서우선적으로관리되어야한다. 해당내용에대해서는아래에서다시언급하도록한다. 서버관리하기위해서는파일시스템이외에도데이터베이스의관리에도신경써야한다. 웹페이지를포함한서버에서제공되는대부분의프로그램들은데이터베이스를통해데이터가관리된다. 그러므로관리자는데이터베이스에는어떠한계정이있으며, 서버의어떤프로그램들과연관되어있는지, 권한이어떻게되어있는지에대해따로관리하여야한다. 보통리눅스서버의계정당하나의데이터베이스계정을가지고있으며, 각계정의데이터베이스권한만부여되어있다. 해당부분에대한설명역시아래에서다시자세히언급하도록한다. 2.2 설치된소프트웨어 Galab-work 에설치된프로그램은표 1 과같다. 표 1: 설치된프로그램목록 항목 버전 설명 Mysql Mysql 5.1.69 Mysql 데이터베이스 PHP PHP 5.3.3 php 웹페이지 Apache Apache/2.2.15 HTTP 서버 Vsftpd vsftpd 2.2.2 FTP 서버 2
Galab-work 에서는외부와연결된많은웹페이지가있으며이를제공하기위해 APM(Apache[4], MySql[5], PHP) 이설치되어있다. 또한필요한파일들을쉽게업로드, 다운로드하여사용하기 위해리눅스에서동작하는 ftp 중하나인 vsftpd 가설치되어있다. 3 Galab-work 백업 3.1 데이터베이스백업 phpmyadmin에서는데이터베이스내의테이블을외부로내보내기 (export) 위한기능을제공한다. 외부로내보내는방식은 SQL이외에도 CSV, LaTeX 방식등 10개의방식이있으나, 만약서버를복구할경우보다간단하게복구가능한 SQL 방식으로내보낸다. 데이터베이스를백업하는과정은다음과같다. 1. phpmyadmin 페이지를통해 Galab-work Mysql에접속한다. 2. 내보내기 탭선택후내보내기방식을 Sql 으로선택하고백업할테이블선택한다. 3. 왼쪽아래의 파일로저장 을선택하고압축형식은없음을선택한다. 4. 파일이름을백업할테이블명으로입력하고실행버튼을누른다. 전체를한번에백업할경우데이터베이스의용량이매우커웹사이트가중지되거나벡업이제대로되지않은체로파일이생성되는경우가발생하기때문에테이블별로나누어백업해야한다. 이때테이블별로나눠진파일들을관리하기위해파일명에백업날짜와테이블명을입력하도록한다. 또한파일저장시 Zip, gz, bz 압축방식으로저장할경우가끔씩파일이제대로압축되지않고손상되는경우가있으므로압축형식- 없음 을선택하여저장한다. 만약압축이필요한경우에는 sql파일로저장한뒤에압축프로그램을이용하여직접압축하도록한다. 3.2 파일시스템백업만약에서버전체를백업한다하더라도서버의하드웨어환경이바뀌게되면운영체제내부에서예상치못한시스템에러를발생할수있으므로특정몇몇파일 ( 디렉토리 ) 만백업하여관리한다. 백업할파일 ( 디렉토리 ) 는다음과같다. /home/ /var/www/html/ /etc/httpd/conf/httpd.conf 3
home 디렉토리에는리눅스서버를이용한대부분의작업들이저장되어있으며 html 폴더에는 연구실관련페이지들이저장되어있다. home 과 html 두개의디렉토리는 tar 형식의압축을통 해데이터를백업한다. 압축명령어는다음과같다. # tar cvf [Filename] [directory] 파일이름에는압축한폴더명과날짜를입력하여파일을관리한다. httpd에서는 Galab-work서버에서제공하는웹페이지의 Alias 정보가들어있다. 파일전체를따로보관할필요는없으며웹페이지가추가되는경우에서버관리자가가지고있는 서버사용정보 galab-work.hwp 파일에해당추가내역을저장한다. 4 Galab-work 복구 4.1 Cent OS 설치및환경설정우선서버에운영체제를설치하기위해 Cent OS를받아 DVD에저장한다. 본보고서에서는 Cent OS 6.2 버전을설치하였으며아래의사이트에서필요한버전을다운로드받으면된다. http://ftp.daum.net/centos/ 설치시설치목록선택화면에서 web-server를선택하여설치한다. 만약 web-server 대신에데스크탑환경으로설치할경우 X-Winodw 기반의 GUI를이용할수있으며데스크탑환경으로설치하여도서버복구과정에큰차이점은없으므로 GUI 환경이필요한경우데스크탑을선택하여설치한다. 기타항목을설정한후설치를시작하면 10분정도면설치가완료된다. 설치가모두완료되면먼저 vim 편집기로 ifcfg-eth0 파일을수정하여 ip를설정한다. ifcfg-eth0 파일은다음경로에있다. /etc/sysconfig/network-scripts/ ip 설정이끝나면 service 명령을통해 network를재시작한다. 설정이끝나면 ping명령어등을통해인터넷이정상적으로동작하는지확인해보도록한다. nework 재시작명령어와 ping 관련명령어는다음과같다. # service network restart 4
# ping [Domain or Ip Address] 4.2 FTP 설치및환경설정인터넷이정상적으로동작한다면복구할파일을업로드하기위해 ftp를설치한다. 리눅스에서사용하는 ftp는크게 proftpd와 vspftpd가있으며본보고서에서는 yum 명령어를이용하여간단하게설치할수있는 vsftpd를설치하였다. vsftpd 설치명령어는다음과같다. # yum install vsftpd 설치가완료되면 visftpd.conf 파일을열어다음과같이설정한뒤 vsftpd를 restart 한다. [root@galab-work ]# vi /etc/vsftpd/vsftpd.conf... # 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... [root@galab-work ]# service vsftpd start anonymous enable는익명사용자접근에관련된옵션으로 No로설정한다. local enable는로컬사용자접근, write enable는 write 권한에대한설정으로주석처리가되어있는데이를해제한다. 이후접속차단목록에 root를 # 으로주석처리하고 vsftpd를 restart한다. 접속차단목록은다음파일에저장되어있다. # /etc/vsftpd/ftpusers 모든설정이완료되면 vsftpd가제대로설치되었는지확인하기위해다른컴퓨터에서 FileZilla 와같은ftp 도구를이용하여접속해본다. 만약설치가완료되었음에도 ftp접속시접속이되지않는다면 port와 SELinux 방화벽에대한설정을확인해본다. 설정방법은다음과같다. SELinux설정 [root@galab-work ]setsebool -P bool -P ftp home dir on 5
iptable설정 /etc/sysconfig/iptables 파일을연후아래내용추가 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 설정이전부끝나고 iptable, vsftpd를 restart 하면정상적으로 ftp가접속이되는것을확인할수있다. ftp가정상적으로작동된다면다음 chkconfig 명령어를통해리눅스부팅시자동실행되도록설정한다. # chkconfig vsftpd on 4.3 Apache, PHP, Mysql 설치및환경설정 Apache, PHP, Mysql은웹서버와 DB서버와관련된기능을제공하며 3개를합쳐 APM이라고부른다. APM과관련된설치명령어는다음과같다. # yum install mysql mysql-server # yum install httpd # yum install php* 세개의프로그램을설정하고나면우선적으로 httpd.conf 파일을설정한다.... DirectoryIndex index.html index.htm index.php... <Directory "/home/"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> # 백업한 alias 경로추가 index.html 뿐만아니라 index.php, index.htm도기본페이지로사용가능하도록 DirectoryIndex 뒤에위와같이추가한다. 이후 Directory 부분을추가하여 home폴더에대한웹페이지사용권한을설정한다.alias 경로는앞에서 서버사용정보 galab-work.hwp 에백업하였으므로해당파일에서 alias 정보를가져와설정한다. 모든설정이완료되면 httpd를 restart 한다. 이후다음명령어를통해 mysql 계정을추가한다. 6
# mysqladmin -u root password [PASSWORD] -p 해당설정이끝나면 php를사용하기위해 php.ini과 php.conf파일을다음과같이수정한다. /etc/php.ini short open tag = On /etc/httpd/conf.d/php.conf AddHandler php5-script.php.htm.html AddType application/x-httpd-php-source.phps.php.php.html 마지막으로웹페이지를통해 mysql을관리하기위해 phpmyadmin을설치한다. phpmyadmin 는기본저장소에없기때문에아래사이트에서다운로드후설치하여야한다. http://pkgs.repoforge.org/rpmforge-release/ wget 명령어를사용하여서버에맞는파일을다운로드한다. 다른방법으로는다른 pc에서다운로드후 Filezila를통해업로드하면쉽게파일을서버에저장할수있다. 다운로드가완료되면다음과같은명령어를이용하여 phpmyadmin을등록하고설치한다. # rpm -Uvh [filename] # yum install phpmyadmin 위과정을모두완료한후 mysql, httpd를한번더 restart한다. 모든설정이끝나고 APM이정상적으로동작하면앞서설치한 ftp와마찬가지로 chkconfig 명령어를사용하여리눅스부팅시자동실행되도록설정한다. 4.4 Data 복구마지막으로 Galab-work의데이터베이스와 html, home 디렉토리에저장된기존 Data를복구하여야한다. 데이터베이스의의복구는다음과같이진행한다. 1. /home 폴더내에임시디렉토리인 butemp 생성 2. ftp를이용하여백업된 sql파일을 butemp에업로드 3. mysql에접속하여각각의 sql 파일을실행. sql 파일을실행할때에아래와같이임시로 onload.ssh 파일을생성하여 sql 파일들을한번에실행하면매번테이블복구마다기다리지않고한번에복구가가능하다. 작업이완료되면 phpmyadmin페이지를통해데이터베이스가복구되었는지확인한다. 7
데이터베이스를복구한후 home/ 과 html/ 이압축된두개의압축파일을 butemp에업로드하여압축을푼다. 만약윈도우에서압축을풀면가끔압축이제대로풀리지않는경우가발생하므로가능한서버에업로드후에 tar 명령어를이용하여압축을풀도록한다. 압축을전부풀고나서 home/ 과 html/ 안의내용을각각 /home/ 과 /var/www/html/ 디렉토리에 mv 명령어나 FileZilla를이용하여이동시킨다. mv명령어를사용할경우앞서데이터베이스와마찬가지로 ssh 명령어를사용하면간편하게데이터를옮길수있다. 모든작업이완료되면 butemp 디렉토리와내부파일을모두제거한다. 4.5 기타참고사항데이터복구가모두끝나면 Alias 를확인하고각페이지에접속하여페이지가정상적으로작동하는지확인한다. 제로보드게시판의경우 Mysql 계정문제로인해정상적으로동작하지않을수있다. 이러한경우 xe디렉토리내에 xe/files/config/db.config.php 파일에서각제로보드게시판별 mysql 계정과비밀번호를확인후해당계정을 phpmyadmin 페이지에서등록하면해결된다. 또한복구를진행하다보면권한문제로인해정상적으로페이지가동작하지않는경우가발생할수있는데이때에는 port와 SELinux 정책을한번더점검하면쉽게해결할수있다. 5 원활한서버백업및복구를위한관리 앞서간략하게언급한것처럼리눅스서버를보다간단히백업하고관리하기위해서는서버관리자가사전에서버관리를위해몇가지신경써야할부분이있다. 가장대표적으로신경써야하는부분은파일시스템이다. 리눅스서버에서는서버를통해많은프로그램들이사용자에게제공된다. 이러한프로그램들은서버에위치하게되는데, 서버의원활한관리를위해서는해당프로그램들이하나의디렉토리에일관성있게저장되어있어야한다. 이를사용하기가장좋은방법은각각의프로그램별로해당계정을생성하여하나의계정당하나의프로그램을관리하는방법이다. 또한이를위해서는서버에어떠한계정이있는지관리자가따로문서를이용하여관리해야하며, 각계정의작업공간은 home 디렉토리내에서계정별디렉토리를생성하여관리되어야한다. 또한특별한일이없는한 root에서작업은가급적이면자제하고계정을관리하기위한용도로사용되어야추후서버를백업및복구하기가쉽다. 또한데이터베이스리눅스계정에따라각각의데이터베이스계정을만들어관리하는것이추후복구및백업작업이용이하다. 그렇지않으면보안상의문제도문제지만, 서버백업시매번전체데이터베이스를백업해야하는번거로움이발생한다. 하지만계정을나누게되면, 자주업데이트되는데이터베이스와그렇지않은데이터베이스가분리되어따로백업할수있어불필요한백업을줄일수있으므로, 서버백업시간이훨씬단축된다. 마지막으로서버관리자는 ( 특히웹페이지의 8
경우 ) 각각의설정내용을따로저장하여관리하여야한다. 웹서버의경우 httpd.conf에서주소에대한설정을관리하여야하며, 그외에리눅스, 데이터베이스의계정관리, 기타프로그램의설정등을관리하여야한다. 만약그렇게하지않으면, 복구시데이터베이스가제대로연결이되지않거나, 복구후각계정디렉토리에저장된프로그램수정시 root계정을통해접근하여수정하는등서버의관리에불편한점이생기기때문에서버의계정에대한관리를정기적으로하여앞에서언급한사태들을미연에방지하여야한다. 6 결론 본보고서에서는 Galab-work의백업방법과복구방법에대해설명하였다. 앞서설명한방법을통해서버를복구하기위해서는정기적으로데이터베이스를백업하고, Home에작업을수행하여야한다. 또한 html, home 디렉토리와데이터베이스백업만으로는완전히서버를복구할수없으므로서버관리자가 Linux, mysql 계정과 Alias 정보, 추가로설치된소프트웨어정보를따로저장하여이를관리하여야한다. 본보고서에서언급된부분만잘지켜진다면서버에문제가생기거나서버의하드웨어환경이바뀐어서버를다시설치하더라도쉽게서버를복구할수있다. References [1] vsftpd 설치가이드, http://www.cyworld.com/freekante/6702924. [2] apm 설치가이드, http://blog.naver.com/shreds?redirect=log&logno=68078300. [3] 서종규, Diamond 리눅스서버설치및관리방법매뉴얼, Pusan National University, Tech Rep, 3 2012. [4] apache 공식홈페이지, http://www.apache.org/. [5] mysql 공식홈페이지, http://www.mysql.com/. 9