NEW Nmail PHP 3 업그레이드 할인
자세히 보기

서버 이전 안내 - Linux Server

PASSKOREA 2007.04.02 10:39 조회 36362

작업전 주의사항)

서버이전은 서버마다 환경이 다를 경우 예외 상황이 발생할 수 있어, 가능한 동일한 OS에 동일한 APM 버전의 사용을 권장합니다.  또한 아래 내용대로 이전하더라도 작업자의 실수, 서버 환경 차이, 예기치 못한 상황 등으로 인해, 이전시 오류나 데이타 누락 가능성이 존재할 수 있으니 주의하시기 바랍니다.

  이전할 서버의 환경이 기존 서버와 다르거나, 메일서비스의 중단시간을 최저( 5~60분이내, 데이타 양에 따라 다름)로 줄이는 안정적인 '실시간 메일서버 이전 서비스'를 원하실 경우엔 이전 작업(유료)를 별도로 의뢰하시면 됩니다.

 

서버 이전/교체시 작업 요약)
이전할 신규서버에 엔메일을 '처음설치용'으로 설치해서 정상적으로 동작하는지 테스트를 끝냅니다.
이때 주의할 것은 기존서버와 신규서버의 엔메일 버전이 정확히 일치해야 합니다.
그리고 기존 서버의 엔메일 데이타, 디비를 백업받아 그대로 가져와서 복원하면 됩니다.


작업전 주의사항 - 서버 IP가 변경될 경우)

1.     이전 작업을 진행하기 최소 24시간전에 DNS 관리업체에 다음과 같이 요청해두셔야 합니다.

요청내용)

X X일 메일서버 이전이 예정되어 있으니, 사용중인 XXX 도메인의 TTL 값을 지금 바로 300초 이하로 줄여주시기 바랍니다.

             Tip) TTL 이란?

- 다른 네임서버에서 DNS 질의결과를 캐쉬로 보관해두는 시간을 제한합니다.  이로 인해 86400(24시간)으로 지정해둔 경우 네임서버설정을 바꾸더라도, 일부 다른 네임서버들은 캐쉬값으로 인해 24시간동안 변경이전의 값을 사용자에게 돌려주게 됩니다. 따라서 MX레코드나 IP가 변경될 경우에는 반드시 TTL 값을 짧게 잡아야 빠른 변경이 가능합니다.

- 일반적인 bind의 경우 zone 파일의 최상단에 "$TTL   1800"형태의 초단위로 설정되어 있습니다. (1800 = 30)

    2. 이전할 신규 서버 IP의 관리업체에 Rerverse DNS 등록을 미리 요청해두시기 바랍니다.

             요청내용)

X X일 메일서버 이전이 예정되어 있으니, 신규 메일 서버 IP x.x.x.x Reverse DNS (PTR record) 를 메일 서버 주소인 mail.YourDomain.com 으로 등록하여 주십시오.

* 위 내용중 IP와 메일 서버 주소는 귀사의 정보로 변경하셔야 합니다.

* Reverse DNS 관련 자세한 내용은 아래 게시물을 참고하시면 됩니다.

       http://passkorea.net/Board/ViewDoc.aspx?brdNo=8&docNo=29293

 


작업 순서)
1.
이전할 서버에 엔메일을 '처음설치용'으로 설치.
- '
처음설치용'파일은 저희 홈페이지의 [Download - Nmail PHP]에서 받으시면 됩니다.
-
설치시 기존 엔메일의 설치시 비밀번호(postmaster 비밀번호)와 동일하게 셋팅하시면 설정파일을 따로 건드릴 필요가 없습니다.

2.
설치한 엔메일이 정상동작하는지 테스트.
-
이전하기전 DNS가 변경되기전까지는 메일송신은 되지만 메일수신은 제대로 되지 않을 수 있는 점을 알고 계셔야 합니다.
-
DNS가 변경되기전까지 받는 메일들은 기존 메일서버로 가도록 되어 있을겁니다.

3.
기존 서버의 엔메일 데이타, 디비를 백업받음.
-
설치시 기본 셋팅되는 아래 스크립트를 root 권한으로 실행하시면 됩니다.
-
웹메일소스, 메일데이타, 디비, 로그 등의 데이타가 각각 날짜별로 백업됩니다.

cd /home/nmail2/_backup/
./backup.sh
ls -l nmail2_20070402*
-rw-r--r-- 1 root root 161 3
16 10:57 nmail2_20070402_105744.board.tar.gz

-rw-r--r-- 1 root root 161 3 16 10:57 nmail2_20070402_105744.upload.tar.gz
-rw-r--r-- 1 root root 8256 3
16 10:57 nmail2_20070402_105744.logs.tar.gz
-rw-r--r-- 1 root root 231681 3
16 10:57 nmail2_20070402_105744.mails.tar.gz
-rw-r--r-- 1 root root 1147547 3
16 10:57 nmail2_20070402_105744.sql.gz
-rw-r--r-- 1 root root 7557211 3
16 10:57 nmail2_20070402_105744.src.tar.gz
* 참고) 사용중인 버전에 따라 nmail2_날짜.upload.tar.gz, nmail2_날짜.board.tar.gz 2개 파일중 하나가 없을 수 있습니다.
*
주의) 2.4.0 이상 버전인데, 백업 후 nmail2_날짜.upload.tar.gz 가 없다면, 업로드 데이타를 수작업으로 백업해주셔야 합니다.

 

2.4.0 ~ 2.5.0 버전의 업로드 데이타 백업 안내
2.4.0 부터 대용량첨부/웹하드/자료실 등의 업로드파일의 저장 경로가 바뀌었습니다.
이로 인해 2.4.0 부터 2.5.0 버전까지는 업로드파일이 백업스크립트에 포함되어 있지 않습니다.

    따라서 2.4.0 이상 버전인데, 백업 후 nmail2_날짜.upload.tar.gz 가 없다면, 업로드 데이타를 수작업으로 백업해주셔야 합니다.

기존 업로드 데이타 저장 경로 - /home/nmail2/nmail/data
             =>

신규 업로드 데이타 저장 경로 - /home/nmail2/upload
* 디렉토리는 설치시 설정에 따라 다른 곳에 위치할 수 도 있으니 유의하셔야 합니다.


4.
백업된 데이타, 디비의 확인
- tar.gz
형태의 파일을 압축한 경우 다른 디렉토리에 파일을 풀어서 제대로 풀리는지만 테스트해보시면 됩니다.
- sql.gz
형태의 디비백업을 한 경우 서버설정에 따라 백업시 한글이 깨지는 경우가 있으므로 꼭 확인해보셔야 합니다.
a)
파일을 PC로 다운로드받아 editplus, ultraedit 등의 에디터에서 열어서 확인하는 방법.(권장)
b)
서버의 한글설정이 제대로 되어 있을때 쉘상에서 바로 확인하는 방법.
#
한글설정 확인. UTF-8 전용 엔메일이 아닌 경우 아래처럼 결과가 나와야 합니다.
locale
LANG=ko_KR.eucKR
# CentOS
등 일부 시스템은 기본 UTF-8로 된 경우가 있는데 아래처럼 한글로 변경하면 됩니다.
export LANG=ko_KR.eucKR
#
압축을 풀어 백업된 파일에서 한글이 들어간 라인을 찾아 제대로 보이는지 확인.
gunzip -c nmail2_20070402_105744.sql.gz|more

5.
백업된 디비의 한글이 깨진 경우의 문제해결방법
- MySQL 4.1
이상에서는 한글이 euckr로 별도 지정되지 않은 경우 백업시 한글이 깨지는 문제가 발생하게 됩니다.
-
디비백업시 한글이 깨진 경우 아래처럼 백업스크립트를 변경하신후 다시 백업해서 테스트해보시면 됩니다.
vi backup.sh
MYSQLDUMP=mysqldump
=>
MYSQLDUMP="mysqldump --default-character-set=euckr"
-
주의) 별도 요청하여 구매하신 UTF-8 용 엔메일의 경우 euckr 대신 utf8 을 입력하셔야 합니다.

6.
백업된 데이타, 디비를 이전할 서버로 가져와서 일반적인 경우처럼 복원합니다.
cd /home/nmail2
tar zxvfp nmail2_20070402_105744.mails.tar.gz
tar zxvfp nmail2_20070402_105744.src.tar.gz
tar zxvfp nmail2_20070402_105744.logs.tar.gz
tar zxvfp nmail2_20070402_105744.board.tar.gz

tar zxvfp nmail2_20070402_105744.upload.tar.gz
gunzip nmail2_20070402_105744.sql.gz
mysql --default-character-set=euckr -unmail2 -p nmail2 < nmail2_20070402_105744.sql
* 참고) 사용중인 버전에 따라 nmail2_날짜.upload.tar.gz, nmail2_날짜.board.tar.gz 2개 파일중 하나가 없을 수 있습니다.

7. 복원 완료후 퍼미션을 재조절하시면 됩니다. (중요!!!)
cd /home/nmail2/tools
#
아파치 소유자가 이전과정에서 변경된 경우 'Y'를 눌러 다시 설정후 메일엔진을 재시작해야 합니다.
./install_set_apache_user.php
/etc/init.d/xmail restart
./perm_change.sh

8.
작업이 완료되었으므로 웹메일에서 메일이 정상적으로 송수신 되는지 테스트해보시면 됩니다.
-
이전작업완료후 에러가 발생하지 않는지 에러로그를 모니터링해보시기 바랍니다.

/home/nmail2/weblogs/error-20070402.txt


서버 이전후 예상되는 문제)
1.
기존서버와 신규서버에서 엔메일을 설치할때 비밀번호가 서로 달랐던 경우.
-
설정파일에서 디비 비밀번호를 변경해야 합니다.
vi /home/nmail2/nmail/include/global_db.php
$G_SYS[DB_PASSWORD] = "XXXX";

2. [
메일서버관리 - 서버설정]에 접근할때 에러가 발생하는 경우.
- 에러 메세지
[Nmail Error - MAILSERVER]
cfgfileget server.tab : -00171 Resource lock entry not found

-
메일엔진 관리자 비밀번호가 저장된 설정파일들을 변경해야 합니다.
#
설정파일의 비밀번호 확인.
grep XM_CTRL_P /home/nmail2/nmail/include/global_db.php
$G_SYS[XM_CTRL_P] = 'pass';

#
암호화된 비밀번호 확인.
/var/MailRoot/bin/XMCrypt pass
15041616

#
메일엔진 설정의 암호화된 비밀번호 확인후 다를 경우 수정.
# tab
파일의 경우 큰따옴표(")사이는 탭(tab)기호로 구분됨.
vi /var/MailRoot/ctrlaccounts.tab
"admin" "15041616"


서버내에서 PHP만 교체한 경우)
1. PHP
를 새로 설치할 경우 엔메일에 필요한 확장모듈이 로딩되지 않아 문제가 발생할 수 있습니다.
mailparse.so
ioncube_loader_lin_?.?.so

2.
확장모듈 셋팅 방법
a.
엔메일 설치 프로그램을 한번 더 실행해서 자동 셋팅하는 방법(권장).
-
설치 프로그램을 실행하기전에 만약의 경우를 고려해서 '백업'후 진행하시기 바랍니다.
-
디비관련 부분은 재실행하더라도 회원테이블(nmail_member)의 존재여부를 체크해서 초기화되지 않습니다.
-
설치 프로그램 실행 방법
php nmail-php-2.2.1_install.php
-
만약 설치 프로그램이 없다면 저희 홈페이지의 [Download - Nmail PHP]에서 '처음 설치용'을 다운로드 받아 압축을 풀면 됩니다. (버젼이 일치해야함)
-
설치과정중 확장모듈 자동 셋팅시 문제가 발생할 경우 '안내문구'가 나오므로 설치메뉴얼과 함께 참고하셔서 수동 설치를 하시면 됩니다.

b.
해당 모듈들을 엔메일 설치메뉴얼을 참고해서 직접 설치하셔도 됩니다.

3.
참고자료
- PHP mailparse
모듈이 자동으로 설치되지 않는 경우
http://passkorea.net/nmailphp/nmail-php-2.2.1_manual.htm#_Toc163981828

- PHP ioncube
모듈관련 설정 및 파일 다운로드
php.ini sample)
zend_extension=/usr/local/php/lib/php/extensions/ioncube_loader_lin_4.4.so
zend_extension_ts=/usr/local/php/lib/php/extensions/ioncube_loader_lin_4.4_ts.so
모듈 다운로드)
http://www.ioncube.com/loaders.php

 

 

이전 글 리버스 도메인(PTR) 등록 안내 - gmail.com 등 필수 PASSKOREA 2007.04.04
다음 글 PHP의 mail() 함수를 통해 메일발송이 안될때의 해결방법 PASSKOREA 2007.02.28
Loading...