2005년 9월 1일 목요일

워드프레스 호스팅 이전 방법

워드프레스 호스팅업체 이전 (=서버 이전) 방법 워드프레스는 사용자 정보,글, 코멘트 등을 MySQL이라는 데이타베이스에 저장한다. 따라서 웹호스팅 업체를 변경할 경우에는 1. 워드프레스 프로그램 과 2. 데이타베이스, 그리고 3. 네임서버를 모두 옮겨줘야한다. 편의상 여태까지 사용했던 웹호스팅업체를 기존업체(기존서버), 새로 옮겨갈 웹호스팅업체를 신규업체(신규서버)라고 부른다. 이 문서는 또한, 독립도메인을 갖고 있고 워드프레스 URL이 변경되지 않은 경우를 기준으로 하였다. 우선 간단하게 요약을 한 다음 뒷페이지에서 자세하게 설명한다.
  1. 데이타베이스 백업 : 쉘에서 mysqldump -u사용자이름 -p비밀번호 -h 디비서버주소 디비이름 > filename.sql
  2. 프로그램 백업 : 워드프레스가 설치된 디렉토리(예:wp) 바로 윗 디렉토리에서 tar cvfz wp.tar.gz wp
  3. 데이타베이스 복원 : mysql -h디비서버주소 -u사용자이름 -p비밀번호 디비이름 < 백업파일이름
  4. 프로그램 복원 : tar xvfz wp.tar.gz
  5. 이전후 해야할 작업 : wp-config.php 파일안에 있는 데이타베이스 연결 정보 수정, 워드프레스 관리자 메뉴에서 이미지 업로드 디렉토리 지정 및 해당 디렉토리의 퍼미션을 777로 조정.
다음은 위의 내용에 대한 자세한 설명. 워드프레스 데이타베이스 백업
  1. phpMyAdmin을 이용한 백업
  2. 데이타베이스를 웹브라우저로 관리할수 있는 phpMyAdmin은 많은 웹호스팅업체에서 제공하고 있다. 만약 제공하지 않는 곳이 있다면 phpMyAdmin 홈페이지에서 직접 받아다 설치할 수 있다. 반드시 기억해야 할 것은, phpMyAdmin은 데이타베이스를 생성,수정,삭제,백업,복원 기능을 제공하는데 실수로 구조 자체를 지워버리거나 내용을 삭제하였을 경우에 웹호스팅업체에서 정기적인 백업을 받고 있지 않았다면 복원할 수 있는 방법이 전혀 없으므로 매우 주의를 기울여야 한다. phpMyAdmin에서 아래와 같은 순서로 데이타베이스를 백업받는다. 버젼에 따라 화면구성은 조금씩 다를 수 있다. "내보내기" 에서 wp_로 시작하는 테이블 (또는 필요할 경우 전체 테이블)을 선택하고 SQL을 선택한다. "구조" 항목에서는 "DROP TABLE문 추가"와 "테이블,필드명에 백쿼터 사용"을 선택한다. "데이터" 항목에서는 "완전한 INSERT문 작성"을 선택한다. "파일로 저장" 선택하고 "실행" 버튼을 누르면 데이타베이스 백업 파일을 PC로 전송받을 수 있다.
  3. 쉘에서 백업
  4. 웹서버에 telnet 또는 SSH로 접속하여 쉘 상에서 MySQL 백업 명령을 사용해서 백업받을 수도 있다. telnet,SSH접속은 PuTTY로 할 수 있다. 쉘계정에 접속해서 아래와 같은 명령어를 입력한다. mysqldump -u사용자이름 -p비밀번호 -h 디비서버주소 디비이름 > filename.sql 예를 들어 사용자이름이 user1 이고 비밀번호가 12345이고 디비서버주소가 localhost이고 디비이름이 user1db 일 경우에 아래와 같이 입력한다. mysqldump -uuser1 -p12345 -h localhost user1db > user1db.sql 그러면 user1db.sql 이라는 파일로 데이타베이스가 백업된다.
워드프레스 프로그램 백업
  1. tar로 묶어서 백업하기 tar는 파일과 디렉토리를 하나의 파일로 묶는 명령어이다. 묶음과 압축을 동시에 하는 명령은 아래와 같다. tar cvfz 백업파일이름.tar.gz 디렉토리1 디렉토리2 디렉토리3 ... 예를 들어 홈디렉토리 아래 wp 라는 디렉토리에 워드프레스가 설치되어 있고 또 images디렉토리에 몇개의 이미지 파일들이 있고 mp3라는 디렉토리에 또 몇개의 음악파일이 있는데 이 모두를 archive.tar.gz 이라는 파일로 묶어서 압축하고 싶다면 아래와 같이 입력한다. tar cvfz archive.tar.gz wp images mp3 그러면 묶이는 파일리스트가 화면에 연달아 출력되고나서 멈추면 archive.tar.gz 이라는 파일이 만들어진다.
  2. ftp로 사용자 PC로 내려받기 도스창 (명령프롬프트)에서도 다운받을 수 있지만 LeechFTPFileZilla등의 FTP 전용프로그램을 사용하는 쪽이 편리하다. PC쪽에 다운받을 폴더를 만들고 서버쪽에서 워드프레스 관련 전체 파일을 다운로드 받는다. [LeechFTP로 다운받는 모습]
데이타베이스 복원하기 데이타베이스 복원은 백업받기와 마찬가지로 phpMyAdmin을 이용해서 웹으로 하는 방법과 쉘계정으로 하는 방법 두가지가 있다.
  1. phpMyAdmin으로 복원하기 "SQL"이라는 메뉴에서 백업받아놓았던 *.sql 파일 위치를 지정해주고 "실행"버튼을 누르면 완료. 그러나 데이타베이스 용량이 클 경우 에러가 종종 생기는 경우가 있었다. 이럴 경우엔 쉘에서 복원하는 방법을 써야한다.
  2. 쉘에서 복원하기 쉘에서 복원하기 위해서는 백업받은 sql파일을 ftp를 이용하여 쉘에 올려두어야 한다. 기존업체의 쉘에서 백업받은 것이 있다면 바로 신규업체로 ftp를 이용하여 전송할 수 있다. ftp ftp서버주소 Connected to ftp서버주소 220 ftp서버주소 FTP server ready Name (ftp서버주소:사용자ID): 사용자ID 331 Password required for 사용자ID. Password:비밀번호 230 User 사용자ID logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> ascii 200 Type set to A ftp> put DB백업파일이름 local: DB백업파일이름 remote: DB백업파일이름 200 PORT command successful 150 Opening ASCII mode data connection for DB백업파일이름 226 Transfer complete. 1300277 bytes sent in 1.11 secs (1148.0 kB/s) ftp> exit 221 Goodbye. 굵은 글씨가 사용자가 입력하는 부분이다. 그러나 쉘계정 사용에 익숙하지 않다면 백업하기에서 설명한 방법대로 ftp프로그램을 이용해서 pc로 받았다가 다시 전송하는 방법을 권장한다. 위의 방법으로 신규업체의 쉘에 디비 백업파일을 성공적으로 전송시켰으면 이제 이 파일을 데이타베이스 서버에 입력시키는 과정이 남았다. telnet 또는 ssh로 쉘로 접속한 다음 아래의 명령으로 복원시킨다. mysql -h디비서버주소 -u사용자이름 -p비밀번호 디비이름 < 백업파일이름 별 에러없이 복원되었다면 "rm 백업파일이름" 명령으로 해당 파일을 삭제시킨다.
워드프레스 파일 복원하기 데이타베이스가 복원되었으면 이제 워드프레스 프로그램을 복원시킨다. 제대로 파일을 풀어놓기만 하면 별다른 문제없이 신규서버에서도 워드프레스가 잘 동작할 것이다. tar로 묶어서 압축했던 것을 아래 명령을 사용하여 다시 압축을 해제하고 묶인 파일들을 풀어놓는다. tar zxvf 백업파일이름.tar.gz tar로 묶을때 워드프레스 바로 윗단계 디렉토리에서 했다면 같은 위치에서 풀어놓자. 자동으로 묶였을 당시의 디렉토리 구조와 파일들을 복원시켜놓을 것이다. 워드프레스 셋팅 조정하기
  1. ftp 프로그램으로 내려받아 수정하고 다시 올리거나 ftp기능을 지원하는 에디터를 이용하여 워드프레스가 설치된 디렉토리에서 wp-config.php 파일에 적혀있는 데이타베이스 서버/로그인 정보를 고친다.
  2. 자신이 사용하는 네임서버를 신규웹호스팅회사의 네임서버로 변경하고 자신의 블로그에 접속한다. (이 부분은 아래 "네임서버 이전하기"항목에서 다시 설명한다.) 블로그가 잘 보이는지 확인하고 로그인 한다. 관리자메뉴에서 "설정"->"기타" 항목에서 이미지가 업로드 될 서버의 절대경로를 입력한다. 이 경로는 쉘에서 ls (현재 디렉토리에 포함된 파일,디렉토리 목록 출력), cd 디렉토리이름 (디렉토리 이름으로 이동), pwd (현재 위치 확인), cd .. (한단계 상위 디렉토리로 이동) 명령으로 확인할 수 있다. 그리고 해당 이미지 업로드 디렉토리에 쓰기 권한을 주어야하는데 쉘 계정에서 "chmod 777 이미지업로드_디렉토리이름"라고 치거나 ftp프로그램에서도 권한설정, 퍼미션설정 등의 이름으로 chmod 명령을 지원하니 이것을 이용한다. [LeechFTP를 이용한 파일/디렉토리 권한설정] 권한설정이 되지 않을 경우 워드프레스 관리자메뉴에서 파일업로드 할때 Permission denied 에러가 나게 된다.
네임서버 이전하기 신규업체에는 호스팅을 신청할때 사용할 도메인을 물어본다. 자신이 사용하는 도메인을 알려주면 호스팅회사에서는 자신들이 운영하는 네임서버에 고객의 도메인네임과 서버의 IP주소를 기록하게 되어 외부(인터넷)에서 들어오는 접속을 웹서버로 잘 연결시켜주기 위한 것이다. 그리고 자신의 도메인을 등록한 기관에 네임서버 변경신청을 해야 한다. 이때부터 방문자들은 자신이 사용하는 인터넷업체 또는 네임서버에 따라 기존서버와 새서버로 분산되어 접속되다가 하루나 이틀정도 시간이 흘러 새 네임서버를 사용한다는 정보가 인터넷에 완전히 퍼지게 되면 그때서야 서버 이전이 완료된 것이다. 기타
  1. 기존 업체가 MySQL버젼 4를 쓰는데 신규업체가 버젼3을 사용할 경우 버젼4에서만 사용하던 기능때문에 버젼3으로 옮길때 어려움이 있을 수 있다.
  2. 네임서버 정보가 완전히 퍼지기 전에 새 서버로 연결하기 위해서는 신규업체의 네임서버를 자신의 PC 네임서버로 지정하면되고 마찬가지로 기존서버로 연결하기 위해선 기존네임서버를 사용하면 된다. (XP의 경우 "네트워크환경 -> 로컬영역연결 속성 ->인터넷프로토콜( tcp/ip ) 속성 -> 다음 DNS서버 주소 사용" 칸에 적는다.)