개인 웹서버를 이미 운영중이거나 운영할 계획이 있는분들 중에 리눅스로 운영하시는 분도 있고

윈도우로 운영하는 분들도 있습니다. 리눅스로 APM서버 구축하기는 이미 알고있는 사람 입장에서

보면 참 쉽습니다. 리눅스를 다룰줄 아시는 분들이라면 물론 더욱 쉽겠죠. 그리고 리눅스로 운영하는

것이 보안상에도 좋고 관리성에 있어서도 윈도우보다 낫습니다. 하지만 이는 어디까지나 아는사람

얘기일뿐이고 적게는 수년 많게는 십수년간 윈도우에만 적응해온 사용자들에게 리눅스로 웹서버

구축도 하고 여러가지 관련 웹프로그램들을 운용하기란 쉬운일은 아닙니다. 그런 사용자들의 고충을

헤아려서인지 인터넷상엔 많은 윈도우용 APM패키지가 돌아다닙니다. 그중 업데이트가 잘되고

사용하기 편한 패키지로는 RWAPM과 Autoset인것 같습니다. APM_Setup은 아파치 1.x버전대에는

상당히 널리쓰였지만 최근에는 업데이트가 타패키지에 비해 적어서 많이 쓰진 않는듯 싶습니다.

그래도 http://apmsetup.com 에는 서버관리시 유용한 정보가 상당하니 관심있으신 분들은

들러보셨으면 하네요.. 어쨋든 저의경우 테스트 용으로 Autoset을 사용하고 있는데 RWAPM과의

차이는 매니저 프로그램을 통해 서버관리가 이뤄질수 있다는 편리함이 있다는 것입니다.

두 패키지 모두 쓰기편하지만 각종 패키지들이 업그레이드됐을경우 패키지 업데이트 전까지

하염없이 기다리는 분들이 계실텐데 그분들을 위해 약간의 팁을 써봅니다.

Autoset을 중점으로 업데이트 방법을 쓰겠습니다.

(Autoset 초기설치에 대한 자세한 내용은 http://cafe.naver.com/autoset 을 참고바랍니다.)

오토셋이 모두 설치된후에 디렉토리 구조를 보시면 Server 디렉토리내의 구조가 다음과 같습니다.

사용자 삽입 이미지


이곳이 Apache, MySQL,PHP가 모두 들어가있는곳으로 이 세가지를 업데이트 해보겠습니다.

기타 ZendOptimizer나 phpmyadmin같은 프로그램들도 비슷하지만 이 세가지만 정확히 쓰겠습니다.

http://www.moyiza.com 으로 접속해서 모이자APM 최신 버전을 다운로드 합니다. RWAPM에서

파일을 가져올수도 있지만 모이자 APM의 패키지 구조가 오토셋과 가장비슷합니다.

제 기억상 최근버전인 오토셋 4.3.1에는 SVN을 포함 아파치 2.2.x대의 서버가 포함된것으로 아는데

저같은 경우 매니저 프로그램만을 원해서 4.2.9버전을 사용하고 있습니다. 이버전은 2.0.x대의 아파치

서버가 들어가 있습니다. 만약 1.x대의 아파치 서버를 쓰시는 분들이 계신다면 설정파일등 상당히

많은 부분이 아파치 2.0이나 2.2대의 버전과 다르므로 꼼꼼히 체크해보고 업데이트 하셔야합니다.

개인적으로 오토셋 4.2.9 버전을 바탕으로 업데이트 하는것을 권장합니다.

어쨋든 받으셨다면 압축을 풀어줍니다.
사용자 삽입 이미지

모이자 APM의 Program 디렉토리를 보시면 이와같이 오토셋과 비슷한 구조를 가지고 있습니다.

이제 모이자 APM의 Apache2 디렉토리로 들어갑니다.

사용자 삽입 이미지
모이자APM - Apache2 서버 디렉토리 내용

사용자 삽입 이미지

오토셋APM - Apache2 서버 디렉토리 내용

우리는 오토셋을 기반으로 서버 프로그램들을 업그레이드 하는것이므로 오토셋의 conf폴더내의

내용들은 따로 백업을 해둡니다. conf파일에는 Apache서버의 각종 설정 내용들이 들어있는데

패키지를 만든 제작자마다 conf파일내용이 다를수 있습니다. 이를 제외하고 모이자APM의 Apache2

폴더를 오토셋의 Apache2 폴더로 모두 덮어씌웁니다. 꼼꼼하신분들은 bin,modules폴더등을 세심히

살펴보시고 하나하나씩 업데이트 하셔도 됩니다.

사용자 삽입 이미지

bin폴더를 보시면 apache.exe 파일이 있는데 원래 파일명은 httpd.exe입니다. 이를 apache.exe로

바꿔줍니다. 오토셋프로그램에서 서버시작은 apache.exe여야 가능하기 때문입니다. 운영에는

아무런 지장이 없습니다. 이로써 아파치 서버의 업데이트는 끝입니다. 다음은 PHP입니다.

사용자 삽입 이미지

오토셋의 PHP5 폴더구조

사용자 삽입 이미지

모이자 APM의 PHP5 폴더구조

모이자 APM의 PHP5폴더를 Autoset의 PHP5 폴더로 덮어씌우는데 PHP.INI파일은 반드시 백업후

덮어씌우시기 바랍니다. 아파치에서와 마찬가지로 환경설정 파일이 다를수있습니다. 또한 이전에

구버전APM(예: 아파치 1.3.x, PHP 4.x 패키지)의 경우 PHP4와 PHP5의 구조가 다르므로 기존의

php.ini파일내용을 잘확인하시고 PHP5로 새로 설치해주셔야 합니다. 모든파일 덮어씌우기를 통해

PHP5의 업데이트가 끝납니다. 다음은 MySQL입니다.

사용자 삽입 이미지

오토셋의 MySQL폴더구조

사용자 삽입 이미지
모이자 APM의 MySQL폴더구조

둘다 별차이 없는대신 여러개의 ini파일이 있는데 my.ini가 실제로 쓰이는 설정파일이고 대규모의

DB서버를 쓸것이냐 작은구조의 DB를 사용할것이냐에 따라 다른 파일들의 이름을 my.ini로 바꿔서

사용하실수 있습니다. 여기서도 위와 마찬가지로 기존의 my.ini파일을 백업시켜두고 기존에 MySQL

를 통해 테이블 작성등이 이뤄진 데이터가 있다면 MySQL폴더를 모두 백업시키고 작업진행하시길

바랍니다. 그런것이 없다면 여기서도 마찬가지로 my.ini를 제외한 모든파일을 덮어씌웁니다.

사용자 삽입 이미지

bin 폴더를 보시면 mysqld-nt.exe 파일이 있습니다. 이는 오토셋에서는 기본적으로 mysqld.exe로

 윈도우 서비스에 등록해서 사용할수 있게되있는데 차후 업데이트 용이성을 위해 mysqld-nt.exe

로 파일명을 바꿔줍니다. 이렇게 한뒤 오토셋이 설치된 메인 디렉토리로 이동합니다.

사용자 삽입 이미지

네개의 배치파일이 있는데 mysql_install,stop 파일을 수정해 줍니다. mysql_install과 uninstall은

윈도우에 서비스 등록 해제를 위해 사용됩니다. 작업전 mysql_uninstall.bat을 통해 기존에 등록된

MySQL서비스를 제거합니다. 이경우 위에서 고쳤던 mysqld-nt.exe 이름을 mysqld.exe로 원래대로

바꿔준뒤 서비스제거후 다시 mysqld-nt.exe로 바꿔줍니다. 그 후 메모장 등으로 파일을 열어봅니다.

사용자 삽입 이미지

위와같이 나오는데 mysqld라고 되있는 부분을 위와같이 mysqld-nt로 바꿔줍니다. 뒷부분

큰따옴표 안의 내용은 윈도우의 관리도구☞서비스에서 표시되는 이름부분이므로 아무렇게나

수정해주셔도 괜찮습니다만 이경우 mysql_start와 stop 배치파일 내용또한 바꿔줘야합니다.

사용자 삽입 이미지

uninstall 배치파일의 내용입니다. 위와 마찬가지로 mysqld 부분을 mysqld-nt로 바꿔줍니다.

이제 mysqld-install.bat을 실행해줍니다. 다음으로 윈도우의 제어판→관리도구→서비스로

들어가서 Autoset_MySQL을 더블클릭합니다.
사용자 삽입 이미지

서비스 재등록후 시작유형이 자동으로 되어있는데 이경우 시스템을 켤때마다 mysql 서비스가

자동으로 시작됩니다. 여기서는 오토셋이 실행될경우 mysql서비스가 실행되게 할것이므로 서비스를

중지시킨뒤 시작유형을 수동으로 바꿔주고 확인을 눌러줍니다. 이로써 Apache,PHP,MySQL의

업데이트가 끝납니다. 이제 오토셋을 실행시켜서 이상유무를 확인해봅니다. 모든 작업전에는

항시 모든 폴더들을 백업하고 작업하시길 바랍니다.
만약에 기존에 설정된것이 많이 있다면

반드시 확인해보고 업데이트를 진행하시기 바랍니다. 이 업데이트의 단점은 어떤 한 제작자가

만든 순수(?) 패키지가 아니므로 오작동을 할수있다는 것인데 제가 이제까지 써보면서 어떤 오류도

생긴적이 없습니다. 하지만 보장은 할수없다는것을 알아두시고 마지막으로 가장 중요한것은

이렇게 만들어진 패키지를 개인용도로만 사용하시기 바랍니다. 원래의 패키지가 설령 프리 라이센스

라고 하더라도 수정/재배포는 개발자의 의욕을 꺾는것은 물론이고 해서는 안될일입니다.

이 팁이 잘 모르시는 분들께 많은 도움이 됐으면 좋겠습니다.

APM은 여러가지 패키지가 같이 있어서 한개의 패키지가 기존의 설치된 패키지에 반해 버전이 낮거

나 높으면 연동이 제대로 안되는 경우가 많은데 PHP나 ZendOptimizer는 앞자리 버전이 바뀌지 않는

이상은 디렉토리 구조도 많이 바뀌지 않고 손쉽게 업그레이드를 할수있다.

일단 PHP 최근버전을 아래의 링크에서 다운로드 받는다. 혹은 따로 http://php.net 에서 받을수도

있다. (아파치 서버 2.x 버전 필요)

PHP 5.2.3 ZIP package 다운로드

압축을 풀어서 전체 내용을 기존의 PHP가 설치된 디렉토리에 복사한다. 이때 주의할점은 서버를

잠시 꺼두어야 된다. 읽어들이고 있는 파일이 있다면 복사가 안되는 경우가 생긴다.

혹시모를 오류를 대비해서 기존에 설치된 PHP는 따로 백업해둔다.

이제 php5apache.dll, php5apache2.dll, php5apache_hooks.dll, php5ts.dll 이파일

들을 windows\system32 디렉토리에 복사한다. 이파일들은 PHP를 설치한 디렉토리에 있다.

이것으로 업그레이드가 끝난다. PHP를 5.1.x 버전에서 5.2.x 버전으로 업그레이드 했을경우 Zend

Optimizer가 작동을 하지 않을수 있다. Zend Optimizer의 업그레이드 방법은

http://xens.dnip.net/104
 이곳에서 확인하도록 한다. 설치가 모두 끝나고나면 PHPinfo 로

확인해본다.

사용자 삽입 이미지

잘 적용된것을 확인할수 있다.

메일서버 프로그램인 Nmail(http://passkorea.net)은 PHP의 확장모듈을 몇가지 사용하는데 이중

세가지가 없으면 설치도 되지 않고 만일 PHP버전을 업그레이드 한후에 이 확장모듈들도 버전이

맞지 않으면 사용이 불가능 하게 되는 경우가 있다. 다행히 PHP 확장모듈은 찾아보면 리눅스용은

말할것도 없고 Win32용도 간편하게 구할수 있는데 문제 해결방법을 간단히 소개하겠다.

일단 여기서 나는 PHP 5.1.x 버전을 최근버전(07.06.20기준)인 5.2.x 버전으로 업그레이드 했다.

PHP 업그레이드 후에 아파치 서버 에러로그를 보면 다음과 같은 메시지를 발견할수 있다.

Warning : PHP Startup: mailparse: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=1
PHP    compiled with module API=20060613, debug=0, thread-safety=1
These options need to match


이는 기존에 컴파일된 PHP 확장모듈이 업그레이드된 PHP버전에서 읽어들이지 못해서 생기는

오류이다.

이제 아래 링크에서 Nmail 오류해결을 할수있는 PHP확장모듈을 다운로드 받도록 한다.

PHP 5.2.x 버전 확장모듈 다운로드
(다른이름으로 대상저장)

압축을 풀면 다음과 같은 파일들이 있다.

ioncube_loader_win_5.2.dll(Nmail 설치시 필수PHP확장모듈 PHP 5.2.x 용)
php_mbstring.dll(PHP 5.2.x 버전 확장모듈)
php_mailparse.dll(PHP 5.2.x 버전 확장모듈)


일단 이 파일들을 PHP가 설치된 곳의 ext 디렉토리에 모두 복사한다. 그리고 이제 PHP.ini를 수정

한다. Nmail이 설치된 상태라면 가장 아랫부분에 다음과 같은 부분이 추가되어있는데 수정한다.

(PHP.ini는 설치상태에 따라 Windows 디렉토리나 Windows\system32 혹은 PHP를 설치한

디렉토리에 있다.)

;---------------------------------
;Nmail Auto Config - Begin
extension_dir="PHP가 설치된 디렉토리/ext"
extension=php_mailparse.dll
zend_extension_ts="PHP가 설치된 디렉토리/ext\ioncube_loader_win_5.2.dll"
....(중간생략)
;Nmail Auto Config - End
;---------------------------------


이렇게 수정해준뒤 아파치 서버를 재시작 하고 PHP확장모듈이 제대로 적용됐는지 PHPinfo로 일단

확인해본다.

사용자 삽입 이미지


Mailparse와 mbstring 확장모듈이 정상적으로 로딩됐다.

사용자 삽입 이미지

아랫부분에서 ioncube_loader 모듈이 정상적으로 로딩된것을 확인했다.

이제 Nmail 관리자 화면에 접속하면 에러가 뜨지 않고 잘 작동할 것이다. 그외에 Nmail관련 사항은

http://passkorea.net 에서 찾아볼수 있다.

서버에서 PHP파일 로딩을 가속화 시켜주는 일종의 PHP모듈인 Zend Optimizer를 업그레이드

하는 방법을 소개하겠다. 현재(07.06.19기준) 3.2.8 버전이 최신 버전이다. Zend Optimizer는

PHP의 버전과 대강 맞아야 오류없이 잘돌아간다. 이번에 PHP와 Zend Optimizer를 업그레이드

하고나니 이전에 자꾸 에러로그에 생기던 Failed to start up concurrent users module! 메시지가

며칠씩 서버가 돌아가도 생기지 않는다 동시접속자 관련 모듈을 못읽어 들이는듯 하는데 이때문에

Child Process가 죽고 새로 생성되는 서버에는 약간이라도 부담이 갈수있는 에러였는데 해결됐다.

어쨋든 일단 ZendOptimizer 3.2.8버전을 아래링크에서 다운로드 받는다. 한가지 주의할점은

PHP 4,x 버전대와 궁합이 잘맞는지는 모르겠다는 것이다. 참고로 나는 PHP 5.2.3과 함께 업그레이드
했다.

Zend Optimizer 3.2.8 for Win32 다운로드
(다른이름으로 대상저장)

설치방법은 매우 간단하다. 받은 파일의 압축을 풀면 ZendOptimizer3.2.8이라는 디렉토리가

생긴다. 이를 적당한 위치에 전부 복사해준다. 물론 저 디렉토리 이름은 맘에 들게 바꿀수있다.

가능하면 APM패키지가 설치되있는곳에 복사해주는것이 깔끔하다고 생각한다.

전부 복사 했으면 이제 PHP.ini 파일을 수정해줘야 한다. PHP.ini 파일은 WIndows 디렉토리에

있거나 PHP가 설치된 디렉토리에 있다. Windows 디렉토리에 있다면 PHP.ini를 읽어들이는곳이

그곳일수 있으므로 Windows디렉토리 내에 있는 PHP.ini파일을 아래와 같이 수정한다.

(만약 이전에 사용하던 ZendOptimizer가 있다면 PHP.ini파일의 가장 아랫부분을 보면 기존내용이

있을것이다. 이를 수정한다. 없으면 아랫 내용을 추가하면 된다.)

[Zend]
zend_extension_manager.optimizer_ts="zendoptimizer를 복사할 대상디렉토리\ZendOptimizer3.2.8\lib\Optimizer-3.2.8"
zend_extension_ts="zendoptimizer를 복사할 대상 디렉토리\ZendOptimizer3.2.8\lib\ZendExtensionManager.dll"

이렇게 적용후 아파치 서버를 다시 시작한후에 phpinfo 화면을 띄워서 확인해 본다. 아랫부분을

텍스트 편집기등으로 확장자를 php파일로 저장해서 브라우저에서 확인할수 있다.

<?
 phpinfo();
?>

아래와 같이 아랫부분에 Zend Optimizer 항목이 나오면 성공적으로 적용된 것이다. 맨위의 Zend

Engine은 Optimizer와 무관하다. Zend Optimizer항목이 뜨지 않는다면 제대로 설치되지 않은것이다

사용자 삽입 이미지

  • BlogIcon nemo 2007.06.20 22:04

    버전이 높은데요..

    • BlogIcon 박디 2007.06.20 22:35

      네 자꾸 다중접속관련 모듈을 제대로 못읽는듯 해서 혹시나 해서 이번에 PHP랑 ZendOptimizer를 전부 업그레이드 해버렸죠..ㅋ

윈도우에서 PHP를 사용하는 설치가 간편한 웹메일이 있어서 소개를 하려한다. 현재 나도 쓰고있

는중이고 사실 요새 큰업체의 왠만한 메일계정들을 보면 메일서버를 굳이 설치해서 이용할필요는

없지만 한번 사용해보고 싶었다. 작업을 하기전에 물론 아파치서버와 MySQL이 설치되있어야한다.

한마디로 APM이 설치되어있어야한다. 그리고 고정 도메인 주소가 있는것이 좋다.

도메인포워딩된 주소도 이용할수 있으니 IP주소로 메일서버를 구축할 생각 하시진 말고 무료로

도메인 포워딩을 이용할수 있는 http://dnip.net 등을 이용하도록하자.

사용자 삽입 이미지
http://passkorea.net 에 접속하여 Nmail PHP를 다운받도록 한다.

사용자 삽입 이미지
설치를 위해 위와같이 max_allowed_packet 의 사이즈를 16M으로 바꿔준다. 대개 1M로 기본설정

되어있을것이다.(Mysql 의 my.ini파일 수정)

사용자 삽입 이미지

이제 Windows폴더내의 PHP.ini 파일을 수정해야한다. 편집기로 열어서 위의 부분 Nmail을 설치
하므로 sendmail을 사용하지 않을것이기때문에 세미콜론을 sendmail 부분에 넣어준다..아래와
같이.. 물론 APM설치시에 sendmail을 설치하지 않았다면 이부분은 세미콜론만 붙혀주면 된다.

; For Win32 only.
;sendmail_from =webmaster@localhost 

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "자신이 센드메일을 설치한 경로"

여기까지 했으면 받은 Nmail PHP를 임의의 경로에 압축해제 한다. 뒤에서 가상호스트를 이용해

메일서버 관리자 페이지에 들어가게 설정하려고 하는데 그렇기때문에 왠만하면 루트디렉토리에

설치하기 보다는 htdocs등의 APM이 설치되어있는 폴더내부에 설치하는것을 권장한다.

(디렉토리 이름에 공백이 있으면 안됨.)

사용자 삽입 이미지

설치전에 시작->실행->cmd 로 명령창을 열고 php -v 명령어를 실행해서 php콘솔프로그램이

제대로 작동하는지 확인한다. 위와같은 메시지가 떠도 Mysql접속이 잘 이뤄지지 않는 경우가 있으니

@ECHO OFF
php 설치폴더\php-cgi.exe -q -c php설치폴더\php.ini %1 %2 %3 %4 %5 %6 %7 %8 %9

로 확장자 bat의 php.bat 파일을 만들어 windows폴더에 저장한다.

이렇게 한뒤 다시 php -v 를 입력해보면 위의 사진과 같이 php버전정보가 나타난다.

사용자 삽입 이미지

커맨드창에서 telnet 127.0.0.1 25 명령으로 25번포트(SMTP)포트가 쓰이고 있는지 검사한다.

위의 사진에선 포트에 연결할수 없다고 나오는데 이미 25번 포트와 POP3포트인 110번을 현재 실제

컴퓨터에서 메일서버를 이용하고 있기때문에 나오는 메시지이며 따로 사용하는 메일서버가 없다면

접속가능하다는 메시지를 볼수있을것이다.

사용자 삽입 이미지
다됐으면 nmail_dir_set.bat 파일을 실행해서 경로를 레지스트리에 등록시키고 nmail_install.bat 을

실행해서 설치를 시작한다.

사용자 삽입 이미지

위와 같이 User ID와 자신의 도메인주소를 입력한다.(예:parkdi@example.com)

위에서는 가상머신내에서 주소를 찾지 못해서 나오는 에러이며 원래대로라면 그밑에 나오는

관리자계정,DB계정에서 사용될 비밀번호와 엔메일 세팅시에 사용될 비밀번호를 입력한다.

사용자 삽입 이미지

이화면에서 엔터를 입력하고 phpmyadmin에서 쓰는 mysql root 암호를 입력하면 설치가 이뤄진다.

필자의 경우 PHP모듈때문에 설치가 중단되는데 안될경우 확장모듈 mailparse가 활성화 되있는지

살펴봐야한다. 그리고 필자는 APMsetup 환경에서 설치를 해보고 있는것인데 APMsetup에서는

한번에 설치가 안되는듯 싶으니 참고하길 바란다.

정상적으로 됐다면 저화면 이후엔 건드릴 필요없이 엔터만 간혹 눌러주면 설치가 완료된다.

이제는 가상호스트를 설정해줘야한다. 아파치서버가 설치된 폴더의 vhost.conf(아파치 2.x의경우)

(1.x는 virtual 폴더내에 host.conf 파일이 있을것이다.)

다음과 같이 수정한다. 기본 아파치서버 포트는 80번이다. 아래에서는 9993번 포트를 사용하였다.

<VirtualHost *:9993>
     ServerAdmin
postmaster@해당도메인주소
     DocumentRoot "Nmail이 설치된 경로"
     ServerName mail.xens.dnip.net
     ServerAlias mail.*
     #ServerAlias mail.MultiDomain1.com mail.MultiDomain2.com
     ErrorLog logs\nmail2.error_log
     TransferLog logs\nmail2.access_log
     <Directory "Nmail이 설치된경로">
         Options None
         AllowOverride None
         Order allow,deny
         Allow from all
     </Directory>
</VirtualHost>

저장후에 아파치 서버를 재시작 시킨다. 정상적으로 됐다면...

사용자 삽입 이미지

접속했을때 다음과 같은 화면을 볼수있고 자신의 Email주소는 postmaster@설치시입력된주소

가된다. 비밀번호는 설치시 입력했던 비밀번호를 입력하면 된다. 위의 주소는 필자의 메일서버를

예로 든것이고 필자의 메일주소는 postmaster@xens.dnip.net 이 된다.