XE 통째로 서버 이전하기

2009.10.10 12:03

treasurej 조회 수:27911

이 포스팅은 리눅스에서 리눅스로 서버이전한 것을 전제로 쓰여집니다.

XE의 서버이전이라 함은, 별로 대수롭지 않게 생각하였다. 하지만, 그리 녹녹한 작업은 아님을 밝혀둔다.

우선 테스트 환경이 원본은 자체도메인이 있는 상황이고, 타겟은 자체도메인이 없는 IP/~사용자계정 환경이었다.

도메인이 없는 환경에서는 단순한 사용자계정만 가지고 서버이전을 한다면, CSS가 적용되지 않으며, 게시글간의 이동이 불가능하다. 꼭 도메인이 적용된 Document Root에서 작업하거나 그런 여건이 되지 않는다면, Apache의 httpd.conf를 열어 Document Root를 계정디렉토리로 인식시키기 바란다.

웹호스팅 시스템 하에서는 도메인구입이 같이 이루어지니, 별탈없이 진행할수 있겠다.

 

1. 원본으로부터의 백업.

우선 mysqldump명령어가 실행되는지 확인하여 보자.

[root@localhost htdocs]# whereis mysqldump
mysqldump: /usr/local/mysql/bin/mysqldump
[root@localhost htdocs]# /usr/local/mysql/bin/mysqldump -uDB계정 -pDB비번 > 데이타베이스명.sql

데이타베이스가 백업되면 그다음으로 자신이 xe폴더의 바로앞 상위폴더로 이동하자.

#tar –cvvf  xe_backup.tar public_html/

이런식으로 다운받아 sql과 tar두 화일을 클라이언트파일에 내려받는다.

그 다음 UTF-8이 지원되는 텍스트에티터로 sql화일을 열자. (기존 도메인을 계속 사용한다면 필요없으나, 새도메인이나 IP를 사용한다면, 기존의 도메인의 정보를 지우고 싶을것이다. 특히 layouts필드는 mysql에서 변환이 불가능하므로, 클라이언트에서 바꿔주고 올리는것이 좋다… 그러나 이방법이 필요한것인지 불필요한것인지 모르겠으나, 사이트가 어떤 방식으로 도메인을 참조하는지 알수없어 무식한 방법을 택했다)

에디터의 찾기명령으로 식별자_layouts(디폴트 xe_layouts)를 찾고 기존의 home_url부분을 찾아 새로 쓰일 도메인이나 IP대입하자.

이제 타겟 서버에서의 도메인의 root document의 상위 디렉토리에 두개의 파일을 업로드하여, tar화일의 압축을 풀어 도메인시작지점에 index.php가 오게한다.

두번째작업으로 타겟 서버의 db에서 원본서버와 같은 이름,같은 비번,같은 문자셋,같은 사용자로 DB를 만든다.

mysql>create database 디비이름 default character set utf8 collate utf8_unicode_ci;

mysql>grant all on 디비이름.* to 사용자이름@localhost by identified by ‘디비비번’;

Mysql을 재가동시켜준후, 백업받은 sql파일을 생성된 DB에 이식시킨다.

#mysql -u디비사용자 -p디비비번 디비명 < 데이타베이스명.sql

자 이제 DB의 백업은 끝났다.

도메인의 변경이 있는 시스템은 mysql에서 직접 도메인을 변경시켜주어야 한다.

mysql>select * from 식별자_sites;

mysql>update 식별자_sites set domain=”새로 쓰일 도메인이나 IP” where regdate=xxxxxxx;

식별자_sites는 전 서버의 설치시 다른이름으로 지정하지 않은 시스템은 보통 xe_sites가 되며, 지정을 aa로 하였다면 aa_sites가 된다.

select문으로 regdate를 확인하후 조건으로서 regdate문의 데이타를 이용하여 식별자_sites의 domain을 바꾼다.

/* 같은 도메인을 쓰는경우에는 이런 작업을 할필요가 없다.

 

xe디렉토리/files/config/로 이동하여

db.config.php을 vi나 gedit를 이용하여 편집한다.

[root@localhost config]# vi db.config.php
<?php if(!defined("__ZBXE__")) exit();
$db_info->db_type = 'mysql';
$db_info->db_port = '3306';
$db_info->db_hostname = 'localhost';
$db_info->db_userid = '디비계정';
$db_info->db_password = '디비비번';
$db_info->db_database = '디비이름';
$db_info->db_table_prefix = ‘테이블식별자';
$db_info->time_zone = '+0900';
$db_info->use_rewrite = 'N';
$db_info->default_url = 'http://해당domain이나 IP/';
$db_info->use_optimizer = 'Y';
$db_info->qmail_compatibility = 'N';
$db_info->use_ssl = 'none';
$db_info->use_db_session = 'Y';

위와같이 바꾸고 저장..

브라우져에서 http://해당domain이나 IP를 입력하여보자.

page에 CSS가 적용되지 않음을 알수있다!

브라우져에서 Admin모드로 입장한다. 메뉴와 레이아웃 페이지 세팅등을 체크한다.

아마도 레이아웃이 변형되어있을것이다.

상단메뉴,하단메뉴,로고,홈페이지url등을 고쳐주고 여러 설정중에 캐쉬화일 업그레이드를 실행한다.

다시 putty같은 터미널로 돌아와서 압축을 푼 해당디렉토리로 이동하여..

#chown –R nobody.nobody files

#chmod –R 777 files를 실행한다.

다시 클라이언트 브라우져로 돌아와서 F5 새로고침을 하면 자잘한 세팅외에 모두 제대로 이식했음을 알수있다.



XE Login