요즘엔 보통 Tomcat 5~6버전 혹은 Tomcat 7 버전을 WAS로 사용하는 경우가 있을 겁니다. 제가 일하는 곳의

환경은 꽤 구형 시스템을 사용하고 있고 프로그램에서 DB 커넥션 시 JDBC로 바로 연결하고 있어 부하가 상당히 걸리는

편이라 개선을 해보고자 DBCP를 사용하여 커넥션을 얻어오도록 테스트를 해봤습니다. 요즘엔 각종 프레임워크에서

손쉽게 설정 가능 하지만 이곳 상황이 그렇지 못하기 때문에 좀 삽질을 했습니다.

먼저 DBCP를 사용하기 위해서는 자카르타 DBCP API인 Commons-dbcp-1.2.1.jar, Commons-collections-3.1.jar,

Commons-pool-1.2,jar 가 반드시 필요합니다.(꼭 버전이 맞아야 하는것은 아닙니다.)

그리고 중요한 것은 이 세개의 라이브러리가 톰캣 설치 디렉토리의 commons/lib 디렉토리에 위치해야 하며 어플리케이션이

위치하는 컨텍스트에 이 라이브러리들이 중복해서 등록됐을경우 오류를 발생 시킵니다.

1. Tomcat - Server.xml 수정

  - 톰캣이 설치된 디렉토리의 conf/server.xml을 수정합니다. 여기서 Resource의 name속성에 지정된 명칭은

  나중에 JNDI를 통해 가져올 이름으로 이후에 수정할 컨텍스트 내의 web.xml의 명칭과 동일 해야 합니다.

  혹은 전역적으로 설정하기 위해 <GlobalNamingResources> 내부에서 <Context>를 제외하고 아래 내용을 사용해도 됩니다.

<Context path="" docBase="ROOT" debug="0">
   <Resource name="jdbc/erpdb" auth="Container" type="javax.sql.DataSource"/>
   <ResourceParams name="jdbc/erpdb">
     <parameter>
          <name>username</name>
          <value>test</value>
     </parameter>
     <parameter>
          <name>password</name>
          <value>test</value>
     </parameter>
     <parameter>
          <name>driverClassName</name>
          <value>com.sybase.jdbc2.jdbc.SybDriver</value>
     </parameter>
     <parameter>
          <name>url</name>
          <value>jdbc:sybase:Tds:111.222.222.111:4444/erpdb?charset=eucksc</value>
     </parameter>
     <parameter>
          <name>removeAbandoned</name>
          <value>true</value>
     </parameter>
     <parameter>
          <name>removeAbandonedTimeout</name>
          <value>60</value>
     </parameter>
  </ResourceParams> 
 </Context>

설정후 이 부분을 보면 jdbc:sybase:Tds:111.222.222.111:4444/erpdb?charset=eucksc 뒤에 파라미터로 캐릭터셋을

지정해 줬습니다. 여기서는 DB의 캐릭터셋을 지정해 주면 됩니다. Sybase에서 혹 안되면 eucksc 대신 euc-kr 로 해보면 될 것

같습니다. 여기서 좀 삽질을 했는데 DB의 캐릭터셋이 euc-kr이라 위에서 설정시 <parameter>에 넣고 설정해 봤는데 아래와

같으 오류가 발생했습니다. JNDI를 통해서 커넥션을 가져오면서 나오는 에러였는데 위와 같이 설정해 줌으로 해결됐습니다.

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (JZ004: DriverManager.getConnection(..., Properties)에 사용자 이름 속성이 없습니다.)

2. web.xml 수정(컨텍스트/WEB-INF/web.xml)

프로그램에서 JNDI를 통해 커넥션을 가져오기 위해 위에서 서버쪽의 server.xml에서 설정한 Resource name 과 동일하게

설정 해줍니다. 동일하지 않을경우 커넥션을 받을 수 없으므로 오류가 발생하게 됩니다.

 <resource-ref>
      <description>ERP DB</description>
      <res-ref-name>jdbc/erpdb</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
 </resource-ref>

2. 프로그램에서의 테스트

  Connection conn = null;
  InitialContext initContext = null;
  Context ctx = null;
  DataSource dataSource = null;

  try{
   initContext = new InitialContext();
   //ctx = (Context) initContext.lookup("java:comp/env");
   //dataSource = (DataSource) ctx.lookup("jdbc/erpdb");
   dataSource = (DataSource) initContext.lookup("java:comp/env/jdbc/erpdb");
  }catch(Exception e){
   System.out.println(e);
  }

  conn = dataSource.getConnection();

여기서 한가지 주의할 점은 경우에 따라 JDBC API도 톰캣 설치디렉토리의 common/lib 에만 위치 시키고 컨텍스트의

lib 디렉토리에서 중복될 경우 아래와 같은 오류가 발생할 수 있습니다.

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.sybase.jdbc2.jdbc.SybDriver'

여기까지 설정후에 확인해보시면 아마 제대로 되지 않을까 싶습니다. 그나저나 기존 소스에 JDBC 커넥션 맺는 부분을

어떻게 효과적으로 바꿀지가 더 고민이 되는군요. 파일이 수만개가 넘고 거의 모든곳에서 커넥션을 맺는 행위를 서블릿에서

init() 호출시 하도록 되어 있습니다. 노가다의 끝판왕을 보게 될 듯 싶네요 ㅎㅎ. 어쨋든 톰캣 구 버전을 사용할때 위 내용을

참고하면 될 듯 싶습니다.

 

 

신고

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

윈도우로 운영하는 분들도 있습니다. 리눅스로 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의

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

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

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

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

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

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

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

이 팁이 잘 모르시는 분들께 많은 도움이 됐으면 좋겠습니다.
신고
2월 4일 늦은 밤부터 5일 23시쯤 까지 서버에 장애가 있었습니다. 정확히는 서버의 장애라기

보다는 네트워크의 장애라고 봐야겠죠 이벤트는 4일 밤부터 시작됐습니다. 작업중 갑자기

누전차단기가 내려가버려서 다시 켠뒤 웹서버를 가동한뒤에 DNIP서비스로 새 IP를 등록해

주었습니다.(현재회선은 유동IP를 씁니다.ㅜ_ㅜ) 문제는 여기서 부터..

항상 하던대로 커맨드 콘솔을 열고 nslookup으로 새로운 IP적용후 5분뒤쯤 적용여부를

확인했습니다. 아직 등록이 안됐더군요. DNIP가 등록이 쫌 느린감이 원래 있기에 별 생각

하지 않고 기다렸습니다. 하지만 nslookup으로 몇번 적용검사를 해보니 IP가 오락가락

하는겁니다. 예를 들어 nslookup을 실행하고 xens.dnip.net 을 입력, 실행하면

사용자 삽입 이미지
이와같이 뜨고 그바로 밑에 IP가 뜨는데 이 IP가 동일하게 뜨질않고 재부팅전에 적용됐던

IP가 떴다가 현재 적용한 IP가 뜨질않나 제 멋대로더군요. 처음으로 의심해본것은 DNIP

자체서비스 였습니다. 요 몇일전에도 서비스가 하루정도 마비된적이 있었기에 의심을

했었습니다만 사이트에서는 이미 IP가 적용됐다고 표시되더군요. 혹시나해서 IP업데이터

를 받아서 갱신해봤지만 여전히 같은 문제가 발생했습니다. 두번째로 의심해본것은 하나로

통신 DNS였습니다. 한국통신 DNS서버로도 바꿔보고 하나로통신의 다른 DNS서버로도

바꿔서 적용하기를 수차례 해봤지만 여전히 동일한 문제가 발생했습니다. 세번째로 의심해

본것은 모뎀이었습니다. 갑작스런 전원차단으로 충격을 받지 않았나 싶었던것이죠. 이쯤

의심할때쯤엔 새벽늦은시간이라 안되겠다 싶어서 일단 모뎀을 리셋시키고 케이블을 모두

뽑은뒤 다음날 새로 적용해볼까 싶어서 일단 잤습니다. 그리고 다음날..

다시 연결하고 웹서버 가동후 IP갱신을 했지만 역시나 똑같은 결과가 나오더군요. 일단

답답해졌습니다. 최근에 별 짓한게 없는데 왜이럴까 싶었습니다. 네번째로 의심해본것은

항상 네트워크 쪽으로 문제생기면 의심하는 카스퍼스키 인터넷 시큐리티 였습니다. 하지만

이건 다시 설정을 고쳐보고 별짓 다해봐도 똑같은 결과가 나오더군요. 이건아니다 싶어서

내버려뒀습니다. 여기까지 해보니 더 답답해졌습니다. 순간 '에라..티스토리로 옮기자'라는

생각이 머리에 두둥실.. 그전날에 전체백업해둔게 있어서 더 그런생각이 들었습니다.

다섯번째로 의심한것은 tcpip.sys 파일입니다. 파일명대로 TCP/IP프로토콜에 관련된

윈도우 시스템파일인데 최근에 약간의 수정을 한게 있어서 문제가 있나 싶었습니다.

비스타에서는 보안정책으로 시스템 파일은 권한이 없으면 삭제를 할수가 없기때문에

takeown 명령으로 현재 계정으로 권한 획득후 백업해두었던 원본 tcpip.sys로 복구했습니다.

그러나.. 결과는 마찬가지 ㅜ_ㅜ 혹시나 싶어서 결국 최후의 수단인 갈아엎기를 선택했습니다.

다행히 최근에 시스템 전체를 재설치 하고 전체백업을 해둔터라 손쉽게 복원시켰습니다.

캭! 그래도 똑같은겁니다..;; 결국 일단 포기했습니다. 그냥 DNIP쪽에 문제가 있겠거니

생각을 하고 있었죠. 외국문서도 뒤져보고 국내에서도 찾아봤지만 별다른 해답이 없더군요.

사용자 삽입 이미지
물려진 네크워크 어댑터(랜카드등..)의 정보를 싹 갱신해주는
ipconfig /renew도 써봤지만 마찬가지..

사용자 삽입 이미지
DNS캐시정보를 없애주는 ipconfig /flushdns를 써도 마찬가지..
(참고로 DDNS서비스 업체에 문제가 없는데 저와같은 문제점이 있다면 위명령어가 상당히
도움됩니다. DNS정보가 로컬 캐시에 남아있어서 오류를 발생시키기 때문입니다.)

이외에 /registerdns 옵션도.. 그냥 써봤지만 아무 효과도 없었습니다. 그러던중 DNIP의

홈페이지를 들어가서 갱신을 하려하니 오류 메시지가 뜨더군요. index.MYD 어쩌고

저쩌고를 열수 없다..같았는데 이걸보고 DNIP쪽에서 문제가 있구나 라고 생각이 들었습니다.

그 바로 이전에 nslookup으로 확인해본 결과 이전에 적용된 IP로 두개의 IP정보가 오락가락

하지 않고 표시됐기 때문입니다. 결국 어제 새벽녘에는 모두 제대로 적용이 되서 지금 잘

되고 있군요. 덕분에 DynDNS(http://dyndns.org)를 다시 사용하기로 결정했습니다.

DNIP와 같은 서비스인데 기능이 조금 더 많습니다. 무엇보다 IP갱신이 매우 빨랐습니다.

어쨋든 앞으로도 DNIP를 몇년간 애용해오고 있지만 최근들어 더 불안해지는 모습을

보이고 있어서 앞으로도 계속 비슷한 일이 생긴다면 아무래도 dyndns로 모든것을 옮겨야

겠다라고 생각을 합니다. 그래서 내친김에 주소를 하나 더 맹글었습니다.

http://xens.blogdns.com

거의 모든 웹서버의 서비스 설정들이 xens.dnip.net 으로 맞춰서 있어서 윗주소로 옮기려면

약간 귀찮아 집니다. 앞으로 지켜봐야겠죠. 그나저나 DNIP.net은 홀리넷이란 회사에서 운영

하는데 이 회사가 어떻게 유지가 되는지 궁금하더군요. 회사가 아파트로 이사를 갔던데..;;

수익이 어디서 나오는지 모르겠습니다. 외적인것으로 모든것을 판단할순 없겠지만 회사

홈페이지나 관련 홈페이지인 CGI World(http://www.cgiworld.net) 이나 보면

거의 2000년도 초반의 웹디자인을 고수하고 있더군요. 질문에 대한 답변은 03년 이후로

거의 없구요. -0- 어쨋건 이제는 제대로 작동하고 있으니 다행이네요.

아..정말 삽질 싫다 ㅡㅡ;;
신고

2장에 이어서 이젠 딱 하나남은 설정파일만 만들면 됩니다. 바로 이 파일에서 실질적인

도메인과 서브도메인에 대한 정보를 설정하게 됩니다.

2장에서 named.conf 파일을 만들때 xenis.dnip.net.zone 으로 설정한 부분이 있습니다.

이것은 xenis.dnip.net.zone으로 네임서비스를 한다는 의미이므로 설정파일 이름또한 동일하게

만들어주는 것입니다. 이제 텍스트편집기를 사용해서 파일을 생성합니다.

사용자 삽입 이미지
111.111.111.111 부분은 실제 IP를 입력해주시면 됩니다. 참고로 유동IP를 사용하시는 경우 IP가
변경되면 이 파일의 내용도 변경해주셔야 합니다. 여러가지 불편함때문에 DNS서버는 고정IP에서 운영되는것이 바람직합니다. 어잿든..이 파일또한 그대로 입력시에 오류가 발생할수 있는관계로 아래 파일을 받아서 파일명과 내용을 적절히 수정/사용하시기 바랍니다. Virtual host 아래앞
부분인 www.mail.ftp등은 원하시는것으로 변경/추가하시면 됩니다.
예를들어 shop을 써준다면 shop.xenis.dnip.net 을 사용할수 있게되는것입니다.

xenis.dnip.net.zone

xenis.dnip.net.zone

이제 마지막 설정파일의 유효성 검사를 해보겠습니다.

사용자 삽입 이미지
위와같이 named-checkzone xenis.dnip.net xenis.dnip.net.zone 명령으로 OK가 뜬다면
이상없는것입니다. 여기까지 모든 설정파일의 생성이 마무리된것인데 이제까지 한번이라도
에러가 있었다면 그대로 지나치시면 안됩니다.


사용자 삽입 이미지
이과정까지 다 마치셨다면 위와같이 etc디렉토리에 7개의 파일이 있는지 확인해보시기 바랍니다
물론 named.root파일은 named.ca로 파일명이 바껴있는것이 정상입니다.

이제는 동작테스트를 해보겠습니다.

시작→실행→cmd를 실행하여 아래와 같이 입력합니다.
사용자 삽입 이미지

사용자 삽입 이미지
실행후 바로 윗 사진처럼 에러가 없는지 확인하시기 바랍니다. 에러가 있다면 해당메시지를
잘확인해보시기 바랍니다. 왠만한 에러는 메시지만 보고도 해결가능합니다. 이 창이 떠있으면
닫지 마시고 프로세스에 등록이 되는지부터 확인해보시기 바랍니다. ctrl+alt+del을 눌러서
작업관리자를 실행하시거나 실행메뉴에서 taskmgr을 실행하셔도 됩니다.

사용자 삽입 이미지
여기까지 이상없었다면 잘 가동된다는 것입니다. 이제는 nslookup 명령으로 네임서버가 제대로
돌아가는지를 확인해봐야합니다.cmd에서 nslookup을 실행한뒤 xenis.dip.net.zone파일 아랫
부분에서 설정했던
www.xenis.dnip.net 이나 mail.xenis.dnip.net 을 입력해보고 IP가 일치한다면 제대로 적용된것입니다.

사용자 삽입 이미지
위와같이 zone파일에서 시정했던 서브도메인들을 체크해보시고 ipconfig를 통해 자신의 ip와
일치한지 확인하셔야 합니다. 이제 named데몬을 서비스로 등록하여 자동으로 서비스되게
해보겠습니다.

시작→제어판→관리도구→서비스에 보시면 ISC BIND라는 서비스가 있습니다. BIND를 설치
하면서 account name을 기본값인 named로 지정했기때문에 named계정으로 서비스가
실행되는데 이를 로컬시스템 계정이 실행하도록 바꿔줘야합니다.


사용자 삽입 이미지
오른쪽 끝을 보시면 처음에는 이와같이 .\named계정이 서비스를 실행하도록 되어있습니다.

사용자 삽입 이미지
이를 로그인탭을 눌러서 로컬 시스템계정에 체크하고 적용뒤 사용버튼을 누르면 서비스가 실행되고 로컬사용자로 프로세스가 실행됩니다. 여기까지 DNS서버를 윈도우에 설치하고 설정파일
을 만들어보기까지 완료하였습니다. 고정IP인 경우는 여기까지만 참고하시면 더이상 신경쓰실
필요가 없이 DNS서버설치가 완료되지만 유동IP의 경우 다릅니다. 설치된것에 이상이 생기는
것은 아니지만 IP가 변경될경우 dnip.net 에 접속하여 수동으로 도메인IP를 업데이트 시키거나
http://download.holywar.net/DNIP.ZIP 이주소를 통해 자동업데이트 프로그램으로 적용시켜준뒤 xenis.dnip.net.zone 파일의 IP들을 현재사용하는 IP로 모두 변경해주어야
합니다. 이후에 해줘야 할것은 변경된 zone파일을 적용해주는것인데 이것은 cmd에서 rndc reload 명령을 써주면 됩니다.

사용자 삽입 이미지
위와같이 실행하면 적용됩니다. 혹은 named데몬자체를 다시시작하는(서비스재시작)방법이
있습니다. 편한방법으로는 제어판→관리도구→서비스를 통해 ISC BIND서비스를 재시작 시켜
주면 됩니다. cmd상에서 적용할때는 net stop "ISC BIND" 명령을 일단써서 중지 시킨후
net start "ISC BIND" 를 실행해주면 다시 시작됩니다.

여기까지 윈도우에서 DNS서버를 설치하는방법을 알아보았습니다. 앞서 말했지만 DNS서버는
소규모로 저처럼 운영하는 경우에는 그다지 필요가 없습니다. 다만 서브도메인을 가져야겠다
싶으신분이나 웹호스팅을 생각하고 계신다면 반드시 필요하겠지요.
참고하시고 구축해보시기 바랍니다.
신고

1장에 이어서 이제 BIND의 DNS서버 설정파일을 만들어보겠습니다. BIND설치자체는 너무 간단해서 허무할 정도이지만 설정파일 만들기가 상당히 귀찮습니다. 하지만 설정파일이 없으면 아무것도 할수가 없으니..한번 살펴보도록 하죠.

설정파일을 만들기에 앞서 BIND의 바이너리 파일들을 쉽게 아무곳에서나 경로입력없이
사용하기 위해 Path를 지정해줘야겠습니다.
(내컴퓨터→속성→고급→환경변수→시스템변수→Path)

편집버튼을 누른뒤 앞서 BIND를 설치한 디렉토리를 입력하여 줍니다. bin폴더는 설치된 BIND
의 각종 실행파일이 있는곳입니다. 입력후 확인해줍니다.

사용자 삽입 이미지
이제 Key파일로 쓰일 rndc.key와 이에따른 환경설정 파일인 rndc.conf파일을 만들겠습니다.

사용자 삽입 이미지
cmd에서 위와같이 rndc-confgen -a명령으로 키파일을 만든뒤 위와같이 type명령으로
key파일의 내용을 한번 확인해봅니다. 키값의 경우 모두 제각각 다릅니다.


사용자 삽입 이미지
rndc.key파일이 설치된곳의 etc디렉토리에 있는것을 확인할수있습니다. 이외의 여러
설정파일도 앞으로 이 etc디렉토리에 들어가게 됩니다.이제 앞에서 이어 conf파일을 만듭니다.

사용자 삽입 이미지
두번째와 같이 rndc-confgen>해당경로/rndc.conf 를 입력실행하면 rndc.conf파일이
생성됩니다. 이젠 rndc.key 파일의 키값을 rndc.conf와 똑같이 만들어주는 작업을 하게됩니다.

사용자 삽입 이미지
rndc.key , rndc.conf 파일을 메모장등의 텍스트편집기로 열고 secret부분을 살펴보면 키값이
다릅니다. rndc.key의 secret부분의 값을 모두 복사해서 rndc.conf의 secret부분을 이값으로
바꿔줍니다.

사용자 삽입 이미지
위와같이 똑같게 만들어줍니다.

이번엔 named.conf 파일을 만들어보겠습니다. 이 conf파일은 앞으로 dns서버를 서비스할 데몬
프로그램인 named.exe의 설정파일입니다. 이 파일은 위에서처럼 자동으로 생성되지 않고 따로
텍스트편집기등을 사용해서 만들어줘야합니다. 편의상 주석부분인(//) 부분은 입력하시지
않아도 됩니다. 그이외의 부분만 자신의 환경에 맞춰서 바꿔주시면 되겠습니다.

사용자 삽입 이미지
위사진과 똑같이 전부 입력합니다. 몇몇 부분만 자신의 환경에 맞춰 수정하면 됩니다. 보시면
금방 아실듯.. 문자 한개라도 틀리면 에러가 납니다. 일단은 꼼꼼히 작성합니다. 전부 작성/저장
하셨으면 이제 문법 오류검사를 해보겠습니다.

사용자 삽입 이미지
named-checkconf 명령으로 위와같이 named.conf파일의 문법오류를 살펴봅니다. conf파일의
19번째,28번째,37번째 줄에서 뭔가가 잘못됐군요. 확인결과 19번째줄의 }; 구문이 빠져서
오류가 발생했습니다.

사용자 삽입 이미지
다시 문법검사시 아무 이상 없음을 나타내고 있습니다.

이제는 named.ca파일을 만들겠습니다. 이파일은 만든다기 보다는..받아온다는 표현이 낫네요.

사용자 삽입 이미지

위의 주소로 접속하여 named.root 파일을 다운로드 받아서 etc폴더에 넣어주고 named.ca로
파일명을 변경해줍니다.
(ftp://ftp.rs.internic.net/domain)

이젠 localhost.zone 파일을 생성하겠습니다. 로컬호스트의 IP주소를 명시해주는 파일입니다.
 

$TTL 86400
@    IN   SOA     @       root (
       42          ; serial (d. adams)
       3H         ; refresh
       15M       ; retry
       1W         ; expiry
       1D )       ; minimum

       IN    NS     @
       IN    A       127.0.0.1


이렇게 똑같이 입력해주면 되는데 그냥 편집기에서 타이핑후 저장후에 유효성 검사를 해보면
오류가 나는 경우가 있습니다. 그래서 그냥 이파일을 다운로드 해서 쓰시기 바랍니다.

localhost.zone

localhost.zone

이제 localhost.zone파일의 유효성 검사를 해보겠습니다.

사용자 삽입 이미지
위에서 오류가 발생한다고 했던것이 바로 이부분입니다. 그대로 편집기에 쓸경우 띄어쓰기도
영향을 받는군요. 위파일을 다운로드 하셔서 위사진처럼 named-checkzone localhost localhost.zone 명령을 통해 아래사진과 같이 메시지가 뜬다면 정상입니다.

사용자 삽입 이미지
이제 named.local파일을 생성할 차례입니다. 이 파일은 localhost의 inverse domain에 대한
정보설정 파일로 위의 localhost.zone파일에서 localhost가 127.0.0.1을 가리키게 한것처럼
이파일에선 반대로 127.0.0.1이 localhost를 가리키게 설정해줍니다.

$TTL  86400
@    IN    SOA        localhost.    root.localhost. (
                            1997022700 ; Serial
                            28800         ; Refresh
                            14400         ; Retry
                            3600000      ; Expire
                            86400 )       ; Minimum
       IN      NS        localhost.

1     IN      PTR       localhost.

이 파일내용또한 위 내용 그대로 써주면 되지만 오류가 발생할 소지가 있어서 한번 해보시고 안된다면 아래 파일을 받아서 유효성 검사를 해보시면 됩니다.


named.local

named.local

앞서와 마찬가지로 유효성 검사를 해보겠습니다.

사용자 삽입 이미지
위 사진은 잘못된 검사 방법입니다.;;  named-checkzone named.local named.local
명령으로 검사하신뒤 흰색부분의 메시지가 표시된다면 제대로 된것입니다.

3장에서는 개별도메인설정 zone 파일생성에 대해 알아보겠습니다.
신고

오랜만에 상당히 긴 강좌를 올려볼까 합니다. 바로 DNS(Domain Name System) 서버를

윈도우에서 사용할수있는 방법에 대한 강좌인데 웹서버에 관련된 지식이 전무하다면 웹서버에

대한 지식이 어느정도 있는것이 설치후 운영시 도움이 되겠습니다. 본 강좌는

htttp://jobdahan.net/
 의 DNS 서버강좌를 대부분 참고하였으며 여기서는 저의 설치체험을

중심으로 진행하겠습니다.

1. DNS란 무엇인가?
 인터넷을 사용하는 모든 컴퓨터는 숫자로된 IP주소를 가지고 있습니다. 어떤곳도 예외는 없으며
 이곳 Mad Palace도 마찬가지입니다. 근데 만약 숫자주소로만 사이트를 방문하게 된다면 번거
 롭기도 하고 뭐하는 사이트였는지 방문후에 잊어버리겠죠?  예를들어 네이버는 222.122.84.200
 이란 IP주소를 갖고있는데 naver.com이란 도메인 네임이 없다면 금새 잊게되겠죠. 도메인네임
 은 하나의 규칙입니다. 그럼 접속시 이런 도메인네임을 IP와 연결해주고 관리해주는 서버가 필요하게되는데 바로 이기능을 하는것이 DNS서버입니다.

사용자 삽입 이미지
우리가 인터넷 서비스를 이용하면 위와같이 해당 ISP의 DNS서버의 서비스도 함께 받게됩니다.
그럴일은 없겠지만 만약 ISP의 DNS서버가 모조리 맛이 가버렸다면 도메인 주소를 입력했을때
접속을 못하게 되는것이죠. (DNS의 작동개념에 대한 자세한 내용은 http://jobdahan.net
자세히 설명되있습니다. 최대한 알아보기 쉽게 설명되어있으니 궁금하신분은 참고바랍니다.)

2. 그럼 DNS서버를 설치하면 뭐가 좋은가?
 서브도메인을 사용할수 있게 됩니다. 이곳을 예로들면 모체인 xens.dnip.net을 두고 parkdi.xens.dnip.net 이런주소나 blog.xens.dnip.net등을 쓸수있게 됩니다. 물론 저처럼 소규모
로 블로그나 기타 웹서비스만을 하는 서버의 경우엔 굳이 DNS서버까지 복잡하게 설치할필요는
없습니다만 '웹호스팅을 해보고 싶다' 혹은 공부를 목적인분들에게 도움이 되겠습니다.

3. 설치전 과정
 일단은 메인으로 쓸 도메인이 필요합니다. 물론 왠만한 도메인 구입시 네임서버까지 사용가능
하게되있기 때문에 그런경우엔 이 강좌가 전혀 필요없겠습니다. 무료도메인을 사용하기는 쉽습니다. 유료로는 codns등의 파킹페이지등을 지원하는곳도 있지만 역시 무료의 유혹을 피하긴 힘듭니다. 개인적으로는 dnip.net이 가장 무난한 서비스같습니다. 기타 서비스 업체를 사용하시는
분들도 ns.xxx.xxx 등의 주소가 사용가능한지 알아보시기 바랍니다.

사용자 삽입 이미지
그럼 이제 DNIP.net 에 접속해서 사용자 정보 수정을 하면 이렇게 Host Information란에 Address Only가 기본으로 체크 되있는데 바로 오른쪽의 Sub nameserver로 체크해주시고
확인해줍니다.

적용뒤 시작->실행에서 cmd를 입력실행 하여 커맨드 프롬프트 창을 통해 다음과 같이 입력하여 적용이 되는지 확인을 합니다. 대신 주소이름 (ns. 뒤의..)의 경우는 각자 만들었던 주소를 써야합니다. 아래와 같이 뜨면 정상인데 ipconfig명령을 cmd상에서 실행하여 현재 IP와 nslookup
으로 확인한 주소가 일치한지 확인을해봅니다.
사용자 삽입 이미지
4-1 BIND 설치하기
 DNS서버 프로그램인 BIND를 설치하기전 몇가지 체크해야할 사항이 있습니다. 공유기를 쓰고
있다면 자신이 쓰고있는 컴퓨터가 공유기를 거쳐 인터넷 공유서비스를 '받고'있는 입장인지
확인해보시기 바랍니다. '뿌리는' 입장의 컴퓨터에서 이용하는데에는 아무 상관없습니다.받는 입장의 컴퓨터 에서는 포트를 포워딩 해줘야만 웹서버사용이나 DNS서버 사용이가능합니다. 포트포워딩에 관한 내용은 따로 찾아보시기 바랍니다. 그럼 이제 BIND를 다운로드 받습니다.

(http://www.isc.org) ← BIND 다운로드 받기

윈도우용으로 zip패키지가 있고 리눅스용도 있습니다. zip패키지를 다운로드 받아서 적당히 아무
곳에나 압축해제 시킨뒤 해당 디렉토리의 Bindinstall.exe를 실행하면 아래와 같이 뜹니다.

사용자 삽입 이미지
Target Directory에는 원하는 설치경로를 입력해줍니다. 아무곳에나 설치해도 별 상관없지만
편의상 복잡한 이름의 폴더는 피하는것이 좋습니다. 그리고 아래 Service account name은
그대로 두고 password를 입력하고 confirm password란에도 입력한 패스워드를 입력해줍니다
옵션은 그대로 두면 됩니다. 이후 install버튼을 누르면 해당 디렉토리에 설치를 하게됩니다.

여기까지 DNS가 무엇인지에 대해 대충 알아보고 BIND설치까지 마쳤습니다. 2장부터는 가장
중요한 설정파일 만들기에 대해 알아보겠습니다.

신고
RWAPM이나 XAMPP 등의 APM패키지 툴이나 또는 따로 Apache+PHP+MySQL을 설치해서

사용하고 있는경우 SQL의 DB나 테이블 작업을 위해 가장 간단하게 많이 쓰이는 툴이 이

phpmyadmin인데 로컬디스크를 직접 액세스 하기 때문에 외부에서 접근을 할경우 보안상

위험하다. 호스팅을 하고 있다면 직접 다른 사용자의 DB를 수정해주지않는이상은 이 방법을

통해 외부접근을 막을수는 없겠지만 개인만 쓰고있다면 외부에서 브라우저를 통해 접근을

근절시킴으로써 보안상의 위협을 약간 덜어줄수 있다. 이는 아파치서버내의 httpd.conf

파일을 수정해서 해결할수 있고 매우매우 간단하다. 아래와 같이 설정을 추가 혹은 변경

해주면 끝이다.
 
#phpmyadmin 페이지 외부접근 거부
<Directory "phpmyadmin이 설치된 디렉토리">
 Options FollowSymLinks Multiviews
 AllowOverride None
 Order deny,allow
 Deny from all
 Allow from 127.0.0.1
</Directory>
신고

(이 글은 윈도우용 아파치 서버 2.2.x 버전을 기준으로 작성되었습니다. 1.x 버전의 아파치 서버나
 리눅스용 아파치 서버에는 적용되지 않는 부분이 상당수 있으므로 이 점 참고하시기 바랍니다.)

APM을 설치하고 나서 기본설정만으로 운영할수는 있으나 서버의 전체적인 성능과 보안을 위한
설정을 해주는것이 좋다. 아래의 내용은 아파치 재단 홈페이지(http://apache.org) 에서 배포하는
윈도우용 2.2.4 아파치를 기준으로 수정했고 RWAPM의 설정파일 내용중 대부분을 참고했다.

-참고사항(수정한 부분, 사용자환경에 맞춰서 바꾸도록 한다.)-
 ⊙ 아파치서버가 설치된 디렉토리 : C:\APM\Apache2
 ⊙ PHP가 설치된 디렉토리 : C:\APM\PHP
 ⊙ PHPmyadmin 이 설치된 디렉토리 : C:\APM\phpmyadmin
 ⊙ '#'은 주석을 의미하며 아래 설정파일 내용은 그대로 복사해서 사용가능하다.

-------------------------------------------------------------------

#서버가 설치된 경로
#가능하면 Apache나 APM은 루트디렉토리에 설치하는것이 좋다. 설정도 편해지고 긴경로가
#정확하지 않으면 기타 모듈들이 제대로 읽히지 않을수도 있다.

ServerRoot "C:\APM/Apache2"

#PID(Process ID) : 아파치 프로세스의 고유ID가 저장되는 파일을 저장하는 경로를 정해준다.

#Timeout : 클라이언트 접속시 받기, 보내기의 타임아웃 시간을 지정한다. 시간이 너무 짧을경우
#클라이언트가 서버의 내용을 제대로 읽지 못하고 튕겨질수 있다.

#KeepAlive : 서버의 전반적인 성능에 영향을 주는 지시문이다. 클라이언트가 한번의 접속으로
#지속적인 요청을 수행할수 있게할지 못하게할지 설정해주는 부분이다. 서버의 사양이 좋지 않다면
#부하가 심할수있으나 접속자가 적고 저사양의 서버라면 Off로 해두는것이 좋다.

#MaxKeepAliveRequests : KeepAlive와 연관된 부분으로 지속된 접속시간동안 처리할수 있는
#최대 요청갯수를 의미한다. 높은값을 주는것이 좋다.

#KeepAliveTimeout : 클라이언트가 접속상태에서 해당 클라이언트의 요청이 타임아웃되는 시간

PidFile logs/httpd.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 30

#Multiprocessing Module 섹션
#아파치 서버의 1.x 버전에서는 없던 기능이 2.x에서 부터 추가되었으며 1.x버전보다 적은 자원을
#사용해서 여러요청을 처리할수 있게 했다는 한마디로 성능이 향상된 부분이다.

#ThereadsPerChild : 하나의 프로세스당 몇개의 thread를 유지하고 있을지 설정해주는 부분이다.
#최대 1024까지 늘릴수 있는데 리눅스용은 재컴파일을 통해 이를 수정할수 있다. 서버의 사양이
#좋지 않다면 이값을 과도하게 늘리지 않는것이 좋다.

#MaxRequestsPerChild : 하나의 프로세스가 몇번의 요청을 수행하고 죽을지 설정해주는 부분이다.
#아래 내용과 같이 설정하면 10000번의 요청을 수행한뒤 ChildProcess하나가 죽고 새로 생성된다.
#값을 '0'으로 주면 무한대를 의미하며 서버의 사양이 좋지않다면 1000정도의 값을 권장한다. 무한대
#로 설정하는것이 좋을수도 있으나 일반PC를 서버로 쓰는경우 여러가지 오류로 메모리 누출이 생길
#수 있으므로 값을 적당히 설정해주는것이 좋다.

#Win32DisableAcceptEx : 가끔 네트워크를 사용할수 없다는 오류를 에러로그에서 발견할수있는데
#이구문을 활성화 하면 괜찮아진다.

<IfModule mpm_winnt.c>
ThreadsPerChild 200
MaxRequestsPerChild  10000
#Win32DisableAcceptEx
</IfModule>

#읽어들일 포트번호 설정
#기본적으로 80번포트가 웹서버 포트이나 ISP들이 자체적으로 막아놓은 경우가 있다. 이경우엔
#다른 포트를 사용해야 하는데 8080,9999등의 포트가 많이 쓰인다. 이경우 Listen 9999 등으로설정
#해주면 된다.

Listen 80

#Dynamic Shared Object (동적공유객체) 모듈 섹션
#아래내용은 아파치 2.x 버전에서 기본적으로 로딩되는 모듈에 몇가지가 추가 되어있는데
#필요없는 모듈은 주석처리를 해서 읽어들이지 않는것이 좋다. 기본적으로 제공되는 모듈외에
#서드파티 모듈또한 LoadModule 지시어를 사용해 쉽게 읽어들일수 있다. 적재순서에 따라
#성능에 영향을 줄수 있다고 한다.

more..

#PHP 모듈 로딩섹션
#PHP를 연동시키기 위해 반드시 필요한 설정부분이다. 아파치 2.0.x 버전의 경우 php5apache2.dll
#를 읽어들여야 한다.

LoadModule php5_module "../php5/php5apache2_2.dll"

#Third Party 모듈 설정섹션(mod_evasive, mod_bandwidth, mod_security2)
#아파치에서 기본적으로 제공하는 모듈이 아니므로 따로 구해야한다. 구하지 못했다면 이부분은
#그냥 넘어가도 된다.

#Dos(Denial of Service),DDos(Distributed Denial of Service) 공격 방어 모듈설정
#리눅스의 경우 iptable을 사용해 근본적으로 막을수 있으나 윈도우에서는 IPsec등을 사용해야
#한다. 이 모듈은 개인용도의 서버에는 쓸만한 모듈이지만 과도한 공격이 시도될경우 서버가
#뻗어버릴수 있다. 이 모듈은 윈도우용으로 기본제공 되지 않으며 http://apachelounge.com
#에서 구할수 있다.

LoadModule evasive_module modules/mod_evasive.so
<IfModule evasive_module>
    DOSHashTableSize    3097
    DOSPageCount        70
    DOSPageInterval     1
    DOSSiteCount        200
    DOSSiteInterval     1
    DOSBlockingPeriod   10
    DOSLogDir "C:/APM/Apache2/logs"
</IfModule>

#Apache 방화벽 ModSecurity2 설정
#1.x 버전의 경우 한개의 설정파일에서 모든것을 관리했으나 2.x 버전에서는 여러가지 설정으로
#많은 부분의 부적절한 접속 시도를 막아준다. 상용 방화벽에 버금가는 강력한 공개 방화벽 모듈
#로 알려져있다. 윈도우용이 제공되지 않으며 http://apachelounge.com 에서 구할수있다.
#2.0.x , 2.2.x 버전에서 사용가능하다.

LoadModule security2_module modules/mod_security2.so
<IfModule security2_module>
Include conf/security/modsecurity_crs_10_config.conf
Include conf/security/modsecurity_crs_21_protocol_anomalies.conf
Include conf/security/modsecurity_crs_35_bad_robots.conf
Include conf/security/modsecurity_crs_45_trojans.conf
Include conf/security/modsecurity_crs_55_marketing.conf
Include conf/security/modsecurity_crs_20_protocol_violations.conf
Include conf/security/modsecurity_crs_30_http_policy.conf
Include conf/security/modsecurity_crs_40_generic_attacks.conf
Include conf/security/modsecurity_crs_50_outbound.conf
</IfModule>

#Bandwidth(대역폭) 제한모듈 mod_bandwidth 설정
#전송되는 파일의 속도를 일정하게 유지시켜주는 모듈이다. 아래의 LargeFileLimit 부분의
#1024 250000 의 의미는 1024kb 가 넘는 파일은 250kb의 속도로 전송하라는 의미이다. 사용자의
#환경에 맞춰 수정해서 사용하면 된다. 이 모듈역시 http://apachelounge.com 에서 구할수 있고
#없어졌다면 이블로그에서 찾을수 있다.

LoadModule bw_module modules/mod_bw.so
<IfModule bw_module>
BandWidthModule On
ForceBandWidthModule On
LargeFileLimit * 1024  250000
</IfModule>

#압축전송모듈
#Mod_deflate가 활성화 되있어야 사용할수 있다. 설정에서 정해진 파일들을 읽어들이는
#속도의 향상이 있다.
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|bmp|zip|tar|rar|alz|a00|ace|txt|mp3|mpe?g|wav|asf|wma|wmv|swf|exe|pdf|doc|xsl|hwp|css|js|java|c|t?gz|bz2|7z)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</Location>

#서버관리자의 정보를 입력하는 부분이다.
#ServerName의 경우 정해진 도메인명의 이름을 써주는것이 좋지만 localhost나 127.0.0.1을 써줘도
#별 영향이 없으나 정확한 IP주소를 입력할경우 리다이렉션이 가능하게 해줄수 있다.
#UseCanonicalName : Off,DNS의 옵션을 써줄수 있는데 off는 이름기반의 호스트에서 쓰이며 DNS
#옵션은 IP기반 호스트에서 쓰인다. 일반적으로는 Off로 해두면 된다.

ServerAdmin test@example.com
ServerName localhost
UseCanonicalName Off

#Document 디렉토리 설정섹션

#저장될 문서디렉토리를 지정해주는 부분이다. 물론 따로 디렉토리를 설정해 줄 부분이 있다면
#<Directory> 구문으로 추가 및 수정을 할수 있다.

#FollowSymLinks : 윈도우의 단축아이콘은 보안상 사용하지 않는것을 권장하고 있다.

#AllOverride : 인증관련 파일인 .htaccess와 관련된 부분이다. 아파치가 접근할수 있는 디렉토리
#들에 대해 어떤 기능을 허용 또는 거부 할것인지 설정할수 있는 부분이다. none을 권장한다.
#Authconfig,Limit,All,Fileinfo 등의 지시자를 사용할수 있으나 특별한 상황이 없는경우 none을
#사용하도록 한다.

#Indexes : 설정해서 읽어들일 html,htm,php등의 파일이 없을때 파일리스트를 불러 들이는 지시
#자 이다. 타인에게 리스트를 보여주고 싶지 않다면 indexes를 삭제하면 된다.

#Order, Deny, Allow : Order로 allow나 deny를 지정해주고 어느부분에서 허용또는 거부할것
#인지 정한다.

DocumentRoot "C:\APM\htdocs"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "C:\APM\htdocs">
Options FollowSymLinks Multiviews
AllowOverride FileInfo
Order allow,deny
Allow from all
</Directory>

#User 디렉토리 설정섹션
#이 디렉토리를 통해 간단한 호스팅을 할 수 있다. 예를들어 parkdi 라는 디렉토리를 user
#디렉토리에 넣어두면 사용자의 주소는 http://example.com/~parkdi 가 된다.

UserDir "C:\APM\users"

<Directory "C:\APM\users">
AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

#인덱스로 사용할 파일명 설정 스페이스바로 구분한다. 동일 파일명이 있을시 앞쪽 파일이
#우선권을 가진다.

DirectoryIndex index.html index.htm index.php index.php3
AccessFileName .htaccess

#특정파일 형식을 지정해서 접근하지 못하게 한다. 여기서는 ht로 시작되는 모든파일에 대한
#접근금지와 bak,sav,orig,old 파일의 접근을 금지하고 있다.

<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
<LocationMatch /*(\~|\.bak|\.sav|\.orig|\.old)$>
deny from all
</LocationMatch>

#mime.types파일이 저장된 위치를 지정하는 부분
TypesConfig conf/mime.types

#파일확장자를 통해 MIME타입을 알수 있는 문서에대해 기본적으로 쓸 MIME타입을 지정해준다.
#텍스트가 위주라면 text/plain으로 이미지나 바이너리 파일이 있다면 파일을 텍스트 형식으로 불러
#들이지 않게 application/octet-stream 을 입력해준다.

DefaultType text/plain

#인터넷 문서의 형식이 지정되있지 않을경우 파일의 내용을 통해 자동결정 하게 된다. 이를 conf
#폴더내의 magic 파일을 통해서 문서형식을 결정하게 된다.

<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>

#EnableMMAP : 메모리매핑에 관련된 부분으로 성능향상을 가져올수 있다고 하는데 충돌이 생겨
#서버가 다운될수도 있으므로 기본값을 유지하는것을 권장하고 있다.

#EnableSendfile : 커널이 지원하는 형식을 통해 파일을 전송한다.

#HostnameLookups : 클라이언트의 IP,이름을 기록할지의 여부를 결정하는 부분이다. 기본값인
#off로 해둘경우 클라이언트의 IP를 저장하게 되며 on으로 해둘경우 이름으로 저장하게 된다.
#on으로 해두면 적어도 한번은 서버에 네임서버 요청이 발생하므로 꺼두는것이 서버의 부하를
#하나라도 줄여주는 길이다.

HostnameLookups Off
EnableMMAP off
EnableSendfile on

#로그파일이 저장될 형식을 지정하는 부분이다. error 로그의 경우 warn,debug,info,notice,crit
#alert 등의 값을 결합할수 있는데 로그파일의 크기가 상당히 커질수 있으므로 warn으로 지정해
#두는것이 좋다.
#LogFormat : CustomLog지시자에서 사용할 형식에 대한 지정부분이다.

ErrorLog logs/error.log
LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# You need to enable mod_logio.c to use %I and %O
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combined

#로그파일의 위치,형식지정
#형식을 지정하지 않으면 모든 메시지를 로그파일에 저장하게 되고 지나치게 큰 로그파일은 서버
#의 속도를 저하시킨다.

CustomLog logs/access.log common
#CustomLog logs/referer.log referer
#CustomLog logs/agent.log agent
#CustomLog logs/access.log combined

#서버의 정보를 어느정도 까지 보여줄지 지정해주는 부분이다.
#ServerTokens Prod : Apache의 모든정보만 보여줌
#ServerTokens Min : Apache의 버전정보만 보여줌
#ServerTokens OS : Apache의 버전과 운영체제를 보여줌
#ServerTokens Full : 모든정보를 표시함
#ServerSignature : Off로 해두면 브라우저에서 보일수 있는 에러페이지의 아파치 서버 정보를
#숨길수 있다.

ServerTokens Full
ServerSignature Off

#별칭(가짜이름)을 지정해주는 부분이다. 적용예는 'Alias 별칭 실제이름' 으로 지정할수 있다.
#이는 서버의 메인디렉토리에 없는 부분을 마치 있는것처럼 속여주는 부분인데 아래의 예와같이
#메인디렉토리에 phpmyadmin 디렉토리에 phpmyadmin이 설치되있다면 alias를 지정시 따로
#별칭을 만들게 되어 운영이 비효율적이게 된다. 참고해서 수정,사용하도록한다. alias를 사용해서
#다른 디스크드라이브에 있는 내용을 마치 메인디렉토리에 있는것 처럼 사용할수 있다.

Alias /phpmyadmin "C:\APM/phpMyAdmin"
Alias /icons/ "C:\APM/Apache2/icons/"

<Directory "C:\APM/Apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

#디렉토리 목록 표시여부를 결정하는(어떻게 보일지) 부분이다.
IndexOptions FancyIndexing VersionSort

#서버에게 파일,확장자에 대해 어떤 아이콘을 보여줄지 설정해주는 부분이다. 이 설정은
#바로 위에서 FancyIndexing 을 사용했을때 적용가능하다.

more..

#ReadmeName : 디렉토리 목록뒤에 내용을 덧붙힐 Readme파일의 이름을 설정한다.
#HeaderName : 디렉토리 인덱스 앞에 내용을 덧붙힐 파일명을 설정한다.
#클라이언트의 요청시 서버는 readme.html파일을 찾게되고 없으면 txt파일을 찾아서 텍스트
#내용으로 표시하게 된다.

ReadmeName README.html
HeaderName HEADER.html

#디렉토리 인덱싱의 목록에서 제외할 파일명을 설정한다.
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

#문서의 언어를 명시하는 부분이다. 웹브라우저가 이해할수 있는 언어의 문서를 제공할 수 있다.

more..


#언어셋 섹션
AddCharset ISO-8859-1  .iso8859-1 .latin1
AddCharset ISO-8859-2  .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3  .iso8859-3 .latin3
AddCharset ISO-8859-4  .iso8859-4 .latin4
AddCharset ISO-8859-5  .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6  .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7  .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8  .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9  .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5        .Big5       .big5

# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251   .win-1251
AddCharset CP866       .cp866
AddCharset KOI8-r      .koi8-r .koi8-ru
AddCharset KOI8-ru     .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8       .utf8
AddCharset GB2312      .gb2312 .gb
AddCharset utf-7       .utf7
AddCharset utf-8       .utf8
AddCharset big5        .big5 .b5
AddCharset EUC-TW      .euc-tw
AddCharset EUC-JP      .euc-jp
AddCharset EUC-KR      .euc-kr
AddCharset shift_jis   .sjis

#mime.types파일의 수정없이 MIME설정을 할수 있게 해주는 부분이다. 또한 아래와 같이 특정 파일
#들에 대해 특정타입으로 처리할수 있게 해준다.

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

#AddHandler를 사용함으로 파일들의 확장자나 처리기(예 : CGI라면 Perl등..)을 연결하거나 파일
#타입에 대한 동작을 연결할 수 있다.

AddHandler cgi-script .cgi .pl .pm
AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

#PHP를 위한 설정 AddType 사용으로 php확장자의 파일들에 대한 처리 타입을 지정해주고 php.ini
#파일이 있는 위치를 설정해준다.

AddType application/x-httpd-php .php .php3 .htm .html .inc .phtml
PHPIniDir "C:\APM\php5"

#에러 메시지 다국어 표시 섹션


#이부분을 없애버리거나 주석처리 하면 오류페이지 자체가 뜨지 않는다.

more..

#CodeRed/Nimda 로그를 남기지 않게 하고 차단시켜 MS 홈페이지로 리다이렉트로 이동하는 섹션

more..

#버추얼 호스트 설정파일 인클루드. conf 디렉토리에 두는것이 관리가 편하다.
Include conf/vhost.conf

#아파치 2.x 나 2.2.x 버전중 SSL페이지를 사용할수 있는 버전을 다운로드 해서 설치했고 필요
#하다면 인클루드 시킨다.

#LoadFile bin/libeay32.dll
#LoadFile bin/ssleay32.dll
#LoadModule ssl_module modules/mod_ssl.so

# SSL 버추얼 호스트설정파일 인클루드.

#<IfModule mod_ssl.c>
#Include conf/ssl.conf
#</IfModule>

신고

Webalizer는 아파치 서버의 로그를 자세한 통계로 보여주는 서버관리자에게는 상당히 유용한

툴이다. 물론 Webalizer 말고 다른 로그분석툴이 많지만 일단 Webalizer가 가장많이 쓰이고

윈도우용으로 Cygwin으로 컴파일되어서 제공되기 때문에 설치도 비교적 간단한 편이다.

(설치방법은 http://xens.dnip.net/54 참고) 설치만 해놓고 그냥 보기만 해서는 잘이해가 되지

않을것이다. 그래서 내 블로그의 6월분 로그내용을 가지고 분석하는 방법을 알아보겠다.

사용자 삽입 이미지

웹얼라이저를 실행하면 다음과 같이 접속 통계를 일단 간단히 볼수 있다. 항목별로 자세히 보자.

사용자 삽입 이미지
Hits : 서버로부터 요구된 파일들의 합계이다. 클라이언트들이 만약 그림 3개를 요구했다면 해당
          웹페이지까지 합해 4개의 Hits가 올라간다. 07년 06월 Daily Avg의 Hits를 보면 6077인데 이는
          하루에 일평균 6076개의 이미지가 (한페이지라고만 가정했을때) 요구되었다고 보면 되겠다.
          한페이지에 있던 이미지라고 가정했을때 이미지 3개가 하루동안 대략 2000명의 사용자에게
          요구되었다고 해석하면 편하겠다.(블로그 특성상 여러페이지에서 클라이언트들의 요청이
          있기때문에 쉽게 이렇게 가정한것이다.)

KBytes : 클라이언트들에게 전송된 웹페이지 정보량의 합계이다. 6월 25일까지 1,977,062Kbytes가
              요청되었다.

Visits : 방문객들의 총합이다. 하루평균 331명이 들어온다고 나와있지만 검색엔진 로봇들도 포함
             되었기 때문에 실제 방문객 수는 이것보다 적을것이다.

Pages : 방문객이 실제로 서버에 접속한 웹페이지의 합계이다. 만약 어떤 방문객이 내 블로그를
              방문해서 각각 3개의 이미지가 있는 5개의 페이지를 봤다면 Hits는 (방문객1+이미지수3)*
              웹페이지수5 로 계산이 되어 20이올라가게 된다. 그리고 방문객 1명이 와서 열람했으므로
              당연히 visits는 1이 올라가고 Page를 5개를 봤으므로 Pages는 5개가 올라간다.

여기까지는 대략적으로 알아본것이고 이제 6월분의 자세한 웹로그 통계를 살펴보겠다.

사용자 삽입 이미지

월별 통계와 응답 코드에 대한 히트수를 전체적으로 볼수 있다. 앞서 Hits나 Pages,visits 등이

어떻게 증가되는지 알아봤기 때문에 전체적인 내용을 판단하기에 쉬울것이다. 응답코드에 대한

히트수를 보면 대략 클라이언트들이 어느종류의 요청을 했는지 알수있다. 예를들어 이그림에서

404에러같은 경우 265 Hits가 발생했는데 총 265번의 없는페이지를 사용자가 접속하려 했다고

해석할수 있겠다. 이그림에서 보이는 히트수들은 내가 저질러 놓은것들이 상당히 많아서 별로

신뢰성이 없다.

사용자 삽입 이미지

일별통계를 그래프와 함께 볼수 있다. 아래는 짤려있지만 6월 25일까지 집계되있고 그래프를 보면

일별로 어느날이 접속자수가 많은지 쉽게 알수있고 어느날에 Hits나 다운로드량이 많았는지도 알수

있다. 여기서는 6월 9일에 접속자가 가장 많았고 페이지 검색은 6일에 가장 많은것을 볼수있다. 다운

로드량은 24일에 가장 많은것을 볼 수 있다. 그래프 아래에서는 일별로 자세한 데이터가 집계되어

있는것을 볼수있다.

사용자 삽입 이미지

시간별로 어느시간대에 접속이 가장많은지 적은지 쉽게 알아볼수 있는 통계도 있다. 여기서 보면

23~24시에 Hits수가 가장 많고 아침 7시에 가장 적은것을 볼 수 있다. Kbytes 통계로 어느시간대에

다운로드량이 가장 많은지도 알수있다.

사용자 삽입 이미지
Hits수를 기준으로 방문객이 본 내 서버의 페이지중에 가장 방문이 많은 상위 30개의 파일을 보여

주고 있다. 이는 어떤 페이지를 가장 많이 보았는지를 의미하는데 어느블로그던 개인홈페이지던

비슷하겠지만 root 디렉토리가 0순위이다. 이를 통해 블로그에서나 어떤 홈페이지에서 어떤 페이

지가 방문자들이 읽는 횟수가 많은지 판단해서 그와 관련된 내용을 더 많이 올려 방문자수를 높히는

전략(?)을 세울수도 있겠다.

사용자 삽입 이미지

Top 10 of ?? Total URLs by Kbytes : 데이터 전송량을 기준, 방문객들이 본 웹페이지중 가장
방문이 많은 상위 10개의 파일들을 보여준다. 여기서 보면 물론 root가 가장 많다. 그외 root를 읽어
들일때 따라서 읽히는 파일들 또한 전송량이 많다. 그외에는 그다지 전송량이 크지 않은것을 볼 수
있다.

Top 10 of ?? Total Entry Pages : 방문자가 처음으로 접속한 페이지의 랭킹을 상위 10위권으로 표시해준다. 여기서 보면 물론 root가 가장 많을것이고 다음은 rss피드 페이지가 많다. 물론 이것
으로도 어떤 페이지를 방문객들이 와서 많이 읽는지 대략 알 수 있다.

Top 10 of ?? Total Exit Pages : 방문자가 마지막으로 보고 나간 페이지의 상위 10위권 통계이다. 이것으로 어느 페이지가 방문객들에게 가장 인기가 없었는지 대략 알 수 있다. 하지만 이것만으로 섣불리 판단하기엔 부족하다. 필요한 정보만 다른 검색엔진에서 찾아서 보고 나갈수도 있기때문이다. 여기서 보면 root의 경우 Entry pages와 Exit pages가 동일한데 블로그 표시설정시 내가 한
페이지씩만 보여주도록 설정해놨기 때문인지 직접 내블로그 주소로 들어왔을때 방문객들이 다른 글을 읽는일이 아주 많지는 않다는것을 알수있다.

사용자 삽입 이미지

Hits수를 기준으로 어느곳에서 접속이 많이 이뤄졌는지 상위 30위권으로 표시된다. IP로 표시가

되는데 저두개의 IP는 구글 로봇이다. 첫번째는 내가 접속한 것인데 아무래도 글올리고 하다보면

내가 가장 접속이 많은건 당연하지 않을까 싶다. 구글 로봇이 얼마나 많이 접속하는지는 위에서

보면 알수있다. 내가 258번 접속하는데 구글 로봇이 두개만 합쳐도 198번이나 된다. 이것이 내가

호스팅 업체를 쓰지 않고 직접 서버를 돌려 블로그를 운영하는 이유중에 하나이다. 물론 검색엔진

에 자신의 블로그가 노출되는것은 좋은일이지만 다른파일도 봇들이 무차별로 순식간에 긁어가면서

트래픽을 크게 유발시키는 경우가 많다. robots.txt 파일에서 검색엔진 봇들이 한시간에 한번만

접속하게 해뒀는데도 많은 접속률을 보이고 있다.

사용자 삽입 이미지

전송량에 따른 상위 10위권의 순위를 보여준다. 이것도 IP로 표시되며 위에서 몇개의 IP들은 삭제해

놨지만 위의 두개의 봇들은 구글로봇들이다. 나머지 몇개의 IP들도 봇들이고 전송량이 꽤 된다.

그 아래는 Usernames에 따른 전송량,Hit수,방문수등을 보여준다. 그아래는 국가별 접속한 통계를

보여주는데 설정해놓은것이 없어서 한가지만 100%로 나온다. 윈도우용 Webalizer를 기본적으로

별다른 설정없이 설치했을때는 여기까지의 내용을 기본적으로 알아볼수가 있다. 물론 조작을

거쳐 레퍼러순위통계를 볼수도 있고 검색어 통계를 볼수도 있고 에이전트별(브라우저나 OS종류)

통계를 볼수도 있고 국가별 접속 통계를 볼수도 있다.
신고

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항목이 뜨지 않는다면 제대로 설치되지 않은것이다

사용자 삽입 이미지

신고
(이글은 아파치 2.0.x버전대의 서버를 기준으로 설명하는 글입니다. 포함된 링크의 자료는 아파치

2.2.x 버전에서는 정상작동 하지 않고 또한 리눅스 아파치서버에서 작동하지 않습니다.)

Win32용 아파치 서버 2.0.x 버전에서 mod_security 2.1.1 버전을 추가하는 방법을 소개한다. 참고로

mod_security는 아파치 서버 외부공격 방어모듈이다.(아파치서버 방화벽) 네트워크 공격에 대한

방어 모듈로는 mod_evasive등의 모듈이있으나 과도한 Dos,DDos 공격에는 견디기 힘든것으로

알려져 있다. 어쨋든 mod_security 설치방법에 대해 알아보겠다.

1.x 대의 버전과 2.x버전은 적용방법에 약간 차이가 있다. 1.x 버전에서는 mod_security.so 파일과

설정 파일 한개만 인클루드 시키는 방법을 썼는데 2.x 버전에서는 여러가지 단계별 설정파일을 적용

해야된다. 일단 아래링크에서 mod_security 2.1.1 버전을 받는다.


다운로드

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

apache.exe.mainfest
/modsecurity/rules
/modsecurity/doc
libxml2.dll
mod_security.so


1. 설치방법
 - apache.exe.mainfest 파일을 아파치가 설치된 곳의 bin 폴더에 넣어준다.
 - libxml2.dll , mod_security.so 파일을 modules 디렉토리에 mod_security2라는 폴더를
   만들고 rules,doc 폴더들과 함께 넣어준다.
 - conf 폴더에서 httpd.conf 파일을 열어 다음과 같이 추가해준다.
   (만약 mod_unique_id 앞에 주석처리 되있다면 #만 없애준다.)

LoadModule unique_id_module modules/mod_unique_id.so

# 보안설정 security_module 2
LoadModule security2_module modules/mod_security2/mod_security2.so
<IfModule security2_module>
Include modules/mod_security2/rules/modsecurity_crs_10_config.conf
Include modules/mod_security2/rules/modsecurity_crs_21_protocol_anomalies.conf
Include modules/mod_security2/rules/modsecurity_crs_35_bad_robots.conf
Include modules/mod_security2/rules/modsecurity_crs_45_trojans.conf
Include modules/mod_security2/rules/modsecurity_crs_55_marketing.conf
Include modules/mod_security2/rules/modsecurity_crs_20_protocol_violations.conf
Include modules/mod_security2/rules/modsecurity_crs_30_http_policy.conf
Include modules/mod_security2/rules/modsecurity_crs_40_generic_attacks.conf
Include modules/mod_security2/rules/modsecurity_crs_50_outbound.conf
</IfModule>


include 된 conf 파일들은 순서에 따라 우선순위권이 생긴다고 알고있는데 자세히는 모르겠다.

설정 방법은 꽤 광범위 하기 때문에 여기서는 설치방법만 알리겠다. 그리고 기본설정도 별다른

문제 없이 잘 적용된다.
신고

APM설치에 대한 강좌나 팁은 수없이 많이 올라와 있지만 제대로 적용되지 않는 부분도 많고 원본

강좌를 그대로 복사한 글들이 많아 일관성 없이 설치가 더 혼란해 지는 경우가 많다. 예전 아파치

1.x 버전대에서 APM을 레드햇 리눅스에서 설치해본뒤로 한번도 손을 대질 않아서 다 잊어버렸었

는데 이번에 Win32용 아파치 서버에 대한 회의감이 들어 여름에 리눅스로 서버운영체제를 바꿀

계획을 가지고 로컬테스트용으로 APM을 페도라 코어 4와 6에서 설치해봤다. 성공했고 기왕에

설치까지 했으니 최근버전(07.0614기준)의 APM패키지들을 가지고 설치하는 글을 올린다.

이글에서는 APM의 환경설정에 대해서 말하진 않겠다. 글이 너무 길어지기때문에..설치에만 중점을 둔다.

일단 내가 설치한 환경을 간략히 표시한다.

O/S : Fedora core 4,6
System : VMware workstation 6 (120mb ram,8Gb HDD)

(로컬테스트용으로 설치한것이라 설치시에 버벅이는 감이 크다. VMware상에서 설치하고 싶다면

 램할당을 더 크게 해주는것이 좋다.)

준비물 :
Mysql 5.0.41(Source), Apache 2.2.4(Source), PHP 5.2.3(Source), Zend Optimizer(3.2.8)

(위의 링크에서 다운로드 가능 Zend Optimizer는 사이트내에서 회원가입필요. 아무렇게나
 입력해주고 다운로드 받으면 된다. 소스컴파일 설치시 모두 tar.gz로 끝나는 확장자의 파일을
 받으면 된다.)

설치전 확인해야 할것이 있다. RPM패키지로 Mysql이나 Apache서버가 기존에 설치되어있는지

확인해야 되는데 터미널에서 다음과 같이 입력해준다.

rpm -qa mysql (mysql RPM 설치여부 확인)
rpm -qa apache (apache RPM 설치여부 확인)

두가지 모두 없으면 다음과정으로 넘어가고 하나라도 있다면 설치전에 지워준다.

rpm -e mysql (mysql 삭제)
rpm -e apache (apache 삭제)


만약 mysql에 의존성 있는 프로그램이 설치되어 있다면 에러메시지가 뜨면서 삭제가 안될것이다.

이럴경우엔 아래와 같이 yum을 실행해서 지워준다.

yum remove mysql

이렇게 실행하면 의존성 있는 프로그램까지 같이 지워준다. 나의 경우엔 메일서버 프로그램인

Dovecot 이 설치되어있었고 mysql에 의존성이 있어서 yum 으로 remove실행시 둘다 지워졌다.

만일 따로 쓰고있는 의존성 있는 프로그램이 있다면 확인하고 지우길 바란다.

그리고 설치하기전 주의사항은 Mysql->Apache->PHP의 순서로 설치해야한다는것이다.

(1) Mysql 설치

여기서 나는 /usr/local/src 폴더에 받았던 패키지들의 압축을 풀었다.

1.
[root@localhost]# tar xvfz mysql-5.0.41.tar.gz
[root@localhost]# cd mysql-5.0.41
압축이 해제된 mysql-5.0.41로 이동한뒤..
[root@localhost]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr
[root@localhost]# make; make install

이렇게 입력해주면 설치가 끝난다. 참고로 나는 charset=utf8을 썼다. 제로보드4를 쓸것이라면


euc_kr을 써줘야하겠지만 이는 DB생성시에 지정해 줄수있으니 상관없고 전반적으로 요새나오는

게시판 프로그램들이 utf8을 기준으로 만들어져 나오기때문에 charset을 바꿔서 설치했다. 어느것

을 택하던지 설치자체엔 상관없다. 만약 make와 make install이 모두 끝난뒤에 configure 실행시

설정이 잘못됐다 생각되면 make distclean 명령으로 초기화 시킬수 있다.

2.
[root@localhost]# cd /usr/local/mysql/bin
[root@localhost]# ./mysql_install_db
mysql의 기본 데이터와 test 데이터 생성 명령.

3.
[root@localhost]# groupadd mysql
[root@localhost]# useradd -g mysql -s /bin/false mysql
[root@localhost]# passwd mysql
My SQL을 관리하기 위한 계정을 생성하는 과정이다. 계정명은 mysql이고 비밀번호는 mysql로

생성하라는 명령인데 비밀번호는 추후에 바꿔줄수 있다.


4.
[root@localhost]# cd /usr/local/mysql
[root@localhost]# chown -R mysql.mysql var
Mysql의 DB가 저장되는 var폴더에 권한설정을 해주는 명령이다. DB저장경로는 처음에 configure

실행시 -localstatedir=/설치경로 를 추가하여 변경할수 있으나 기본 경로는 아래와 같이

/usr/local/mysql/var 가 된다.


5.
[root@localhost]# cp
/usr/local/src/mysql-5.0.41/support-files/my-huge.cnf /etc/my.cnf

config 파일 설정부분 support-files 디렉토리에서 my-huge.cnf파일을 복사해서 My SQL 기본

config파일로 쓰게 해뒀다. 몰론 my-medium.cnf 나 my-small.cnf파일을 쓸수도 있으나 나는 항상

큰것만 좋아한다.

[root@localhost]# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld
[root@localhost]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld
[root@localhost]# ntsysv

서버 시작시에 자동으로 시작이 되도록 설정해 주는 부분 level 3,5 일경우에 자동으로 시작이된다.

재시작 시키고 싶다면 위의 경로에 있는 mysqld restart 명령을 써주면 된다.

사용자 삽입 이미지
ntsysv명령을 내렸을때 위와같이 mysqld에 체크되어있는지 확인후 안되있다면 체크해주고 tab키를

눌러 확인해준다.

6.
[root@localhost]# /etc/rc.d/init.d/mysqld start (MySQL시작)
[root@localhost]# ps -ef | grep mysql (MySQL데몬 확인)
[root@localhost]# /etc/rc.d/init.d/mysqld stop (MySQL 종료)

Mysql 시작과 종료가 제대로 이뤄지는지 확인해본다. 둘다 정상적으로 이뤄져야 설치가 제대로

된것이다.

[root@localhost]# vi /etc/profile
제일 밑부분에 추가.
#mysql config
PATH="$PATH:/usr/local/mysql/bin"

mysql의 경로를 지정해 준다. vi대신에 Fedora설치시에 텍스트 편집기가 있다면 텍스트편집기로

편집후 저장해도 무방하다. 개인적으로는 vi보단 기본내장 텍스트편집기를 많이 쓴다. 적용후

mysqld start 로 mysql을 시작시켜본다. 오류 메시지가 없다면 성공적으로 설치한것이다.

(2) Apache 설치
[root@localhost]# tar xvfz apache_2.2.4.tar.Z
[root@localhost]# cd apache_2.2.4
[root@localhost]# ./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-module=so --enable-shared=max
[root@localhost]# make; make install

아파치 설치는 매우쉽다 모든부분이 마찬가지지만 명령줄이 길때는 한줄로 쓰는 방법이 있고 혼란

스러워서 아랫줄에 계속 입력하고 싶다면 한줄이 끝날때 '\' 를 입력해서 다음줄에 이어서 입력

할 수 있다. 아파치 설치는 이렇게 하면 끝이난다. 설정부분은 나중에 다른 강좌에서 설명하겠다.

[root@localhost]# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/apachectl
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc3.d/S85httpd
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc5.d/S85httpd

My SQL때와 마찬가지로 Level3,5일경우에 서버가 자동실행되게 하는 명령을 줬다.

[root@localhost]# /etc/rc.d/init.d/apachectl start
아파치를 실행하는 명령 재시작은 restart 중지는 stop을 apachectl 뒤에 붙혀주고 실행하면된다.

모두 실행후 웹브라우저로 http://localhost를 쳤을때 It Works! 라는 문구가 보인다면 성공한것이다.

(3) PHP설치
1.
[root@localhost]# tar xvfz php-5.2.3.tar.gz
[root@localhost]# cd php-5.2.3

[root@localhost]#./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/apache/conf \
--with-mysql=/usr/local/mysql \
--with-track-debug \
--enable-track-vars \
--enable-magic-quotes \
--enable-track-vars=yes \
[root@localhost]# make; make install
[root@localhost]#
cp /usr/local/src/php-4.3.2/php.ini-dist /usr/local/apache/conf/php.ini

위와같이 입력하여 PHP를 설치한다. 만약 아파치 1.x대의 버전을 가지고 설치한다면 물론 다른

패키지들과 연동이 제대로 될진 모르겠지만 어쨋든 --with-apxs2를 --with-apxs로 고쳐서 설치

하면된다.

2.
[root@localhost]# cd /usr/local/apache/modules
[root@localhost]# ls -al

PHP가 잘 설치되었다면 libphp5.so 모듈파일이 보일것이다. 없다면 설치상에 뭔가 문제가 있다는

것이니까 참고한다. 참고로 아파치 1.x 버전에는 libexec에 저장이된다.

3.
[root@localhost]# vi /usr/local/apache/conf/httpd.conf
LoadModule php5_module  modules/libphp5.so
AddType application/x-httpd-php .php .inc
아파치 환경설정파일인 httpd.conf 파일을 열어 Loadmodule 부분밑에 Addtype을 추가해준다.

Type지정이 안되어 PHP파일 로딩 테스트시에 소스그대로 출력되버리는 경우가 생긴다.

4.
[root@localhost]# vi /usr/local/apache/htdocs/index.php
<? phpinfo(); ?>
phpinfo출력 테스트를 해볼것이다. 이렇게 입력 저장한뒤(물론 텍스트편집기 사용가능!) 브라우저로

불러들였을때 아래와 같이 뜨면 APM연동이 모두 잘된상태로 설치가 된것이다. 한가지 덧붙혀서

httpd.conf 파일에서 DirectoryIndex index.html index.htm index.php index.php3 이부분

이 index.html만 추가 되있을텐데 index.php를 위와같이 추가해준다. 그래야 브라우저에서 php파일

의 출력결과를 볼수있다.

사용자 삽입 이미지

(4) Zend Optimizer 설치
APM만 설치해도 별상관없지만 Zend optimizer 나 eAcellator 같은 프로그램을 설치하면 웹서버

로딩속도가 향상된다. Zend Optimizer는 PHP버전에 맞게 설치/업그레이드 해야되며 여기서는

PHP 5.2.3을 지원하는 최신버전인 3.2.8 버전을 설치하였다. 컴파일등을 따로 해줄필요도 없고

아래와 같이 입력해주면 설치화면이 뜬다.

[root@localhost]# tar xvfz
ZendOptimizer-3.2.8.tar.gz
[root@localhost]# cd ZendOptimizer-3.2.8
[root@localhost]# install.sh

처음 실행시 라이센스 동의 화면이 뜨고 어짜피 읽지도 않을꺼니까 'Exit' 눌러서 다음

단계로 넘어간다. 이후에 Zend Optimizer를 설치할 절대경로를 묻는데 나는 아래와

같이 지정하였다.

/usr/local/zend

이다음 단계에서는 php.ini 파일이 있는 경로를 지정해줘야 하는데 이글대로 했을때

php.ini는 /usr/local/apache/conf 에 있다. 여기서 확인을 눌러주면 progress 상태가

나오면서 설치가 완료되면 제대로 완료됐다고 메시지가 뜨고 경로설정이나 APM이 제대로

연동되지 않았다면 오류 메시지가 뜰것이다. Zend Optimizer가 성공적으로 설치됐다면

phpinfo 화면에서 아래와 같은 부분이 추가된 것을 볼수 있다.
사용자 삽입 이미지

위와같이 큰 어려움없이 APM과 ZendOptimizer의 설치를 마쳤다. 위에서 쓴 패키지들과 똑같은

버전을 꼭 사용할 필요는 없지만 APM 각각의 패키지의 버전차이가 많이 나면 연동이 제대로

안되는듯 싶다. 위와 똑같은 방법으로 나는 설치를 제대로 마쳤고 다음에는 설정에 대해서 알아

보도록 하겠다.
신고

(이글은 아파치 2.0.x버전대의 서버를 기준으로 설명하는 글입니다. 포함된 링크의 자료는 아파치

2.2.x 버전에서는 정상작동 하지 않고 또한 리눅스 아파치서버에서 작동하지 않습니다.)


아파치 서버를 한동안 운영하다보면 온갖 공격에 시달릴수 있는데 여기서 소개하는 mod_security

모듈은 buffer overflow공격,각종 SQL injection공격,HTTP posting의 악용을 방지해주는 아파치서버

방화벽 모듈이다. 얼마나 효용성있는지는 잘 모르겠지만 많이쓰이는 모듈이기 때문에 올려본다.

그리고 mod_bandwidth는 자신의 서버에서 클라이언트들이 자료를 받아갈때 전송 속도를 제한해

주는 모듈이다. 자신의 회선속도에 맞춰서 예를들어 1Mb의 크기가 넘는 자료에 대해서 속도를

200kb로 설정했다하면 클라이언트들은 서버내의 자료를 받을때 크기가 1Mb가 넘으면 최대 200kb

속도로만 자료를 받을수가 있다. 여기에 올린 모듈들은 RWapm에 있는 모듈을 빼온것이다.

(http://kldp.net/projects/rwapm/) 에서 RWapm을 받아서 APM패키지를 쓸수있고 최근

버전에서는 Dos,DDos 공격방어 모듈인 mod_evasive모듈이 추가되었다.

------------------------------------------------------------------------

1. mod_security 모듈 설치방법

 윈도우용 아파치서버에서 제대로된 모듈파일만 가지고 있다면 추가하는 방법은 매우 쉽다.

 일단 mod_security의 경우 아래의 링크에서 모듈을 다운받도록 한다.

 mod_security 1.8.7(win32) 다운로드

압축을 풀면 mod_security.so, security.conf 파일이 나오는데 각각 아파치가 설치된곳의 modules

폴더, conf 폴더에 복사해준다. 그뒤 security.conf 파일을 열어

SecFilter "/아파치가 설치된 경로"
SecFilter "/아파치가 설치된 경로/bin"

이부분을 각자의 환경에 맞춰 변경한다. 다음은 httpd.conf 파일을 열어 아래부분을 추가해준다.

# 보안설정 security_module
LoadModule security_module modules/mod_security.so
<IfModule mod_security.c>
Include conf/security.conf
</IfModule>


2. mod_bandwidth 모듈 설치방법

 위와 동일하게 아래의 링크에서 다운로드를 받아 modules 폴더에 압축을 풀어준다.

 mod_bandwidth 0.6(win32) 다운로드

그리고 httpd.conf파일을 열어 아래의 구문을 추가해준다.

# 대역폭 제한
LoadModule bw_module modules/mod_trs.dll
BandWidthModule On
LargeFileLimit * 1024  280000

LargeFileLimit 부분의 1024 280000가 의미하는것은 1Mb가 넘어가는 크기의 파일 전송시 280kb

의 속도로 전송속도를 제한하라는 뜻이다. 사용자의 환경에 맞춰 이부분을 수정해주면 되겠다.

모두 끝낸뒤 아파치를 재시작하고 만약 작동이 제대로 되지 않는다면 커맨드콘솔에서 apache -S

명령으로 httpd.conf 파일이 제대로 설정되어있는지 확인해본다. Syntax OK가 뜨면 이상없는것이다.

신고

윈도우에서 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 이 된다.

신고

아파치 서버를 사용하다 보면 자료실 폴더등을 만들어 쓸수도 있는데 무단링크 방지도 해봐도

이리저리 편법을 사용해 자료만 외부에서 쏙 빼가는 경우가 많기 때문에 짜증나는 경우가 많다.

그리고 특정 폴더만 다른사람이 접근 불가능 하게 만들고 싶을 때가 있는데 그 방법에 대해 알아

보도록 하겠다.

1. 특정폴더에 나 자신만 접근하게 암호걸기

 일단 httpd.conf 파일을 수정해야한다. 특정폴더에만 인증 암호를 넣을것이므로 따로 아래와 같이

 구문을 추가하는것이 좋겠다.

<Directory "C:\암호파일을저장할 폴더">
 AllowOverride AuthConfig
 Order allow,deny
 Allow from all
</Directory>

그리고 혹시 # AccessFileName .htaccess 이부분에 '#'(주석)이 달려있다면 지워주면 된다.

수정,저장후에 메모장 같은 텍스트 편집기를 하나 실행해서 '.htaccess' 라는 파일을 하나 만든다.

여기서 '.' 은 숨김이라는 의미인데 어쨋든 만들고 나서 아래와 같이 붙혀넣고 사용자취향에 맞게

편집하도록 한다.

AuthName "인증창에 표시될 내용"
AuthType Basic
AuthUserFile C:/암호파일이 저장될폴더/.htpasswd
require user example

여기까지 마쳤다면 이제는 아파치 서버의 프로그램인 htpasswd 프로그램으로 암호파일을 만들어

줘야한다. 암호화 되서 저장되고 .htpasswd 파일을 따로 만드는 것이 아니다.

시작->실행-> cmd 입력-> 아래와 같이 입력한다.(물론 사용자의 아파치가 설치되있는폴더를 참고

로 입력한다..)

C:\apache\bin\htpasswd.exe -c c:\apache\htdocs\.htpasswd example


htpasswd.rar

Download binary


여기서 htpasswd 다음의 폴더명들은 '.htpasswd' 파일이 저장될곳을 지정해준곳이고 example은

위의 '.htaccess' 파일에서 지정해준 user 의 이름이다. 이렇게 입력,실행하면 지정할 암호를

물어오고 적당히 알아서 써주면 되겠다. 확인은 자신이 지정해놓은 폴더를 웹브라우저에서

입력해 보면 되겠다.

(인증 창 실행 성공의 예)

사용자 삽입 이미지



2. 그룹단위로 특정폴더 접속권한 설정

위에선 개인만 접속할수 있게 인증하는 암호설정에 대해서만 알아봤고 이번엔 맨위에서 언급한대로

특정 폴더에 여러 사용자가 제각각의 이름을 가지고 접속할수 있는 방법에 대해 알아보겠다.

위에서 '.htaccess' 파일 내부에 require user example 이 구문이 있었는데 사용자를 추가

하고 싶다면 require user example example2 example3 이런식으로 한칸씩 띄우고 저장

하면 된다. 그리고 그룹을 지정해서 접속하게 하고싶다면 아래와같이 파일을 변경하면 된다.

AuthName "인증창에 표시될 내용"
AuthType Basic
AuthUserFile C:/암호파일이 저장될폴더/.htpasswd
AuthGroupfile C:/암호파일이 저장될폴더/.group
require group admin


이제는 그룹을 설정해 줘야 하는데 '.group' 파일을 하나 만들고 아래의 예를 참고한다.

admin:parkdi webhdd

이구문의 뜻은 admin그룹속에 parkdi라는 유저와 webhdd 라는 유저를 묶는다는 것이다.

이렇게 하면 webhdd 라는 유저는 접속시에 맞는 암호를 입력하게되면 해당폴더에 접근이

가능하다. 물론 사용자가 많으면 이런식으로 관리하는것은 곤란하며 개인적으로는 큰용량 파일의

무단링크 방지를 위해 이런기능을 사용하는것은 괜찮은 방법일듯 싶다.

암호가 많이 알려지게 되면 그시기쯤에 암호를 바꿔버리면 되니까 그렇게 힘든일도 아닐것이라

생각된다.

신고

서버를 돌리다보면 아파치에서는 logs 디렉토리에 자동으로 access.log 와 error.log 파일을

저장하게 된다. 말그대로 access.log는 서버접속에 대한 외내부의 기록이고 error.log파일은

아파치 서버의 상태가 기록된 파일이다. error.log파일은 외부에서 만약 내 서버로 접속시에

파일을 찾을수 없었다면 IP와 그 상태도 기록하게 된다. error.log는 크기가 많이 커질일이 별로

없지만 요새는 검색사이트들의 로봇들이 웹페이지를 긁어가면서 못찾는 파일에 대한 에러가

꽤나 쌓인다. 어쨋든.. access.log 파일은 접속자 수가 많다면 순식간에 Mbyte 단위로 늘어나는데

이를 쌓아두면 로그분석도 쉽지 않을뿐더러 웹서버 성능도 떨어지게 된다. 때문에 일정 파일단위로

나눠서 로그파일을 저장할수 있는 방법(Rotatelogs.exe사용)과 로그를 분석할수 있는 webalizer

라는 프로그램 설치법에 대해 알아보겠다. 필자는 가상호스트를 사용중이기 때문에 이를 토대로

설명 하도록할것이다. 일단 webalizer 윈도우용 프로그램을 다운로드 받도록 하자.

Webalizer Homepage : http://www.webalizer.com/download.html

여기서 윈도우용(Win32)를 다운받도록 하자.

다됐으면 아파치가 설치되어있는 디렉토리 내의 conf 디렉토리로 가본다.

여기서 vhost.conf 파일을 볼수있다. (아파치 1.x 버전을 쓰고있다면 virtual/host.conf)

파일을 열고 수정을 한다.

(아래의 주소들은 예제입니다. 자신의 홈페이지 주소에 맞게 수정해주세요.)

<VirtualHost _default_:80>
 ErrorLog logs/park.example.com-error_log
 CustomLog "|C:/아파치가설치된경로/bin/rotatelogs.exe
 C:/아파치가설치된경로/logs/park.access_log_%Y 5M" common
 ServerName park.example.com
 DocumentRoot "C:/아파치가설치된경로/htdocs"
</VirtualHost>


이부분을 추가 및 수정을 한다. 위에서 5M은 용량을 말하는 것으로 access 로그파일이 5Mb가

넘으면 치환해준다. (rotatelogs.exe 뒷부분에 한칸띄고 servername 전부분까지 붙혀쓴다.)

%Y 부분은 해당년도를 자동으로 로그파일 이름 맨뒷부분에 더해서 저장해준다. 필요없다면

%Y부분은 빼버려도 무방하다. 저장후 문법에러가 있는지 확인하자.

확인방법 : 시작->실행->cmd 입력->커맨드 창에서 c:\아파치가설치된경로\bin\apache -S
               라고 치면 이상이 없다면 Syntax OK 라는 구문이 뜬다. 에러가 생겼다면 다시한번
               살펴본다.

Webalizer 설치전 아파치 서버를 재시동 하자.

두번째로..Webalizer(로그분석기)를 설치하도록 하자.

예를들어 C:\아파치가설치된경로\webalizer 에 설치한다고 가정하자.
그럼 이곳에 그냥 압축을 풀어놓으면 된다.

그다음 이폴더내의 sample.conf 파일의 이름을 park.example.com.conf 로 고친다.
수정,저장후 파일을 편집기로 열어서 아랫부분을 수정한다.

(원본)
#LogFile  /var/lib/httpd/logs/access_log
#OutputDir  /var/lib/httpd/htdocs/usage
#HistoryName  webalizer.hist
#Incremental  no
#IncrementalName webalizer.current
#HostName  localhost

(수정본)
LogFile   C:/아파치가설치된경로/logs/park.access_log_2007
OutputDir  C:/아파치가설치된경로/htdocs/weblog
HistoryName park.example.com
Incremental  yes
IncrementalName  park.current
HostName  park.example.com


위와 같이 수정하는데 Outputdir은 아파치가 설치된경로의 다큐멘트 디렉토리에 임의의 디렉토리

를 하나 만들어주고 저장하는것이 좋다. Incremental 옵션은 기본값이 No 인데  Yes로 해주면

vhost.conf 에서 5M가 넘으면 치환되서 없어져 버리는 로그파일을 따로 저장을 해준다.

sample.conf에서 수정한 Logfile명은 vhost.conf에서 수정한 Customlog의 파일명과 일치해야만

한다. 자..여기까지 다됐다면 거의 성공한 것인데.. Webalizer를 실행하기 전에 vhost.conf 파일이

제대로 설정되었는지 확인하자.

시작->실행 에서 cmd 를 입력하여 커맨드창을 실행시키고 아래와 같이 입력한다.

C:\Webalizer가 설치된경로\webalizer.exe -c
C:\Webalizer가 설치된경로\park.example.com.conf


(-c 에서 한칸띄우고 나머지 부분을 쭉 이어서 입력하면 된다.)

분석기는 아파치서버와 같이 실행되는것이 아니라 따로 실행해줘야 하기때문에 위와같이 일일히
항상 입력하기 싫다면 배치파일을 하나 만드는 것이 좋다.

사용자 삽입 이미지
다음과 같이 만들어놓으면 편하다. 실행이 됐다면 확인이 남았다.

위처럼 실행하고 나면 아까 webalizer에서 sample.conf 파일에서 설정한 outputDir에 지정된

디렉토리에 index.html 파일과 나머지 파일들이 생성되는데

여기예제에 따라 웹브라우저에서 실행한다면 http://park.example.com/weblog 를 입력하면

사용자 삽입 이미지

이와같은 화면을 볼수있다. 그전 기록에 대해서 이 분석기에서 어떻게 읽어들일수 있는지는 방법을

모르겠고 웹서버를 설치하려 한다면 이 강좌대로 web alizer도 함께 설치하면서 rotatelogs를 이용

한 로그파일 관리도 함께 한다면 좋겠다.

한가지 덧붙이자면 Webalizer 실행커맨드를 배치파일로 저장했던지 했다면 한번씩 실행을 해줘야

로그갱신이 된다. 이는 윈도우 내부의 스케쥴 예약 프로그램등으로 일정 시간대를 지정해놓고

실행해주는것도 좋은 방법이 될수 있겠다.



신고
윈도우 폴더(기본 c:\windows)를 보면 my.ini라는 mysql 설정 파일이 있다. max connection은

기본으로 250이 주어지지만 접속자가 많아 이를 늘리고 싶다면 mysqld 항목에 아래와 같이

추가하면 된다.

[mysqld]
port  =
socket  =
key_buffer =
max_connections=1000

1000이나 되는걸.. 일반 데스크탑 서버에서 감당할수 있을지는 모르겠지만 이런식으로

원하는 만큼 늘려주면 된다.
신고

로그파일은 apache2/logs 폴더에 저장되어있는데 아파치 서버를 실행하면 파일이 보이고

서버를 종료하면 파일이 없어진것 처럼 보여 지울수가 없다.

로그파일은 access.log , error.log 두개의 파일로 이뤄지는데 일평균 1000명쯤 되는 방문객들이

있다면 로그파일이 순식간에 100메가 단위로 늘어나는것을 볼수 있고 서버에 큰 부담을 주게된다.

로그파일은 어떤 접속이 있었는지 부정한 접속등은 없었는지를 확인할수 있는 중요자료이지만

파일이 커지는건 일별 이나 시간별 로그 관리 모듈을 설치하거나 하는 방법 밖에 해결방법이 없다.

그래서 제일 편한 방법으론 지워버리는 방법이 있는데 그다지 추천하고 싶지만 팁을 남겨본다

httpd.conf 파일을 열어 CustomLog logs/access.log common 구문을 추가해준다.

그리고 아파치 서버를 재시작 하면 이제 로그파일을 지울수 있게된다.

완전히 없어져버리는 것은 아니고 다시 처음부터 기록을 하게 된다.

신고

최근에 나는 아파치 서버의 에러로그를 보던중 다음과 같은 메시지를 발견했다..

'winnt_accept: Asynchronous AcceptEx failed '

지정된 네트워크 이름을 더이상 사용할수 없다는 메시지가 함께 뜨면서 말이다.

외부에서 접속여부를 확인해 보지 않았지만 아파치 서버에 클라이언트들이 접근시 반응속도가 매우

느려진다 한다. 인트라넷에서 블로그를 쓰는 것도 아니고 개인서버라 24시간 구동이 안될때도

많은데 반응속도 마저 느리면 방문자 수가 더 줄어들것이다.

찾아보니 'Win32DisableAcceptEx' 구문을 httpd.conf 에 추가하면 된다..

ex)
<IfModule mpm_winnt.c>
ThreadsPerChild
MaxRequestsPerChild 
Win32DisableAcceptEx
</IfModule>

여기에 추가하면 되는데 이기능을 적용하면 서버의 안정성에 문제가 있을수 있다고 하는데

어떤 문제점이 있는지는 잘 모르겠다. 자세한 내용을 찾아볼수가 없었다. 윈도우 기반 아파치 2.x

버전의 서버에서 이러한 에러가 생긴다고 하는데.. 여하튼 적용하고 나면 더이상 서버에러가

뜨진 않고 혹시나 해서 에러로그를 다섯시간 정도 간격으로 훑어봐도 에러가 없었다.

참고하길 바란다.

신고

(이강좌는 운영자의 미니홈피 http://cyworld.com/hy313 에서도 보실수 있습니다.)

앞의 모든강좌에서 APMsetup의 사용용도와 설치방법 APMsetup의 phpmyadmin을 이용한 mysql의
DB설치와 이에 연동되는 제로보드의 설치방법에 대해서 알아보았다. 세부설정에 대해서는 이강좌에

서 다루기 보다는 더 자세히 다른곳에서 찾아보기를 권장한다. 아파치 서버에 대해서만 해도 분량이

엄청나며 SQL도 마찬가지이다. 전강좌에서 제로보드를 설치할때 필자는 8080번 포트를 사용해서

로컬호스트로 접속하였다. htdocs폴더내에 있는 bbs(제로보드 데이터폴더) 는 다시 설치하면 물론

안되기 때문에 가상호스트를 이용한 것이다. 개념은 생략하고 가상호스트를 왜쓰는지만 설명

하도록 하겠다. 필자의 홈페이지 같은경우 'xens'라는 계정이름을 쓰고 있다. 필자처럼 욕심이

많은 경우 계정을 두개이상 가지고 싶을것이다. 혹은 꼭 필요하거나...

 가상호스트를 쓰게 되면 이것이 해결된다. 이경우엔 약간의 수동적인 환경설정 수정이 필요하다.

 (그림이 추잡한것에 대해서 양해를 구합니다.)

 먼저 기본 아파치 설정파일이 있는 이 폴더로 이동을 한다.

 C:\APM_Setup\Server\Apache\conf\virtual
 (덧붙혀서 Apache 2.x 버전에서는 파일명이 host.conf 이다. virtual 디렉토리는 없고 httpd.conf
  파일과 함께 있다.)

사용자 삽입 이미지

이 Virtual 폴더 안에 httpd.conf라는 설정파일이 있다.
사용자 삽입 이미지
텍스트 파일이므로 메모장을 쓰던 다른 에디트 프로그램을 사용하던해서 이렇게 파일을 연다.

앞의 '#'표시는 주석으로 우리는 필요한 부분만 삭제하고 사용하도록 하겠다. 사실 주석문내용을

읽으면 쉽게 수정할수 있다. 위의 그림을 토대로 설명하자면 원래 본 계정은 htdocs폴더를 쓰지만
 
두번째 계정을 따로 쓸경우 htdocs2 나 사용자의 마음에 맞는폴더명을 써주면 되는 것이다.

대신 같은 포트를 사용할수는 없다. 같은 포트를 사용시 환경설정에서 에러가 발생된다.
 
어쨋든 위와같이 설정할수있으며 물론 더 여러개도 사용가능하다

사용자 삽입 이미지

필자의 경우 두번째 계정은 xenis.apmsetup.net으로 8080번 포트를 쓰게 설정되어있다. 위와같이

apache -t 옵션으로 환경설정 파일의 문법오류를 검사할수 있으며 apache -S옵션으로 가상호스트

환경설정파일의 오류여부를 검사할수있다. wildcard name... 어쩌고 뜨면 성공적으로 설정된것이다.

이렇게 해서 두개의 계정을 쓸수있게 됐다. 설정후 다른 호스트를 사용시엔 꼭 APMSetup의

기본포트 번호를 바꿔줘야한다. 두번째 호스트설정에서 8080번 포트를 부여했다면 Apache환경설정

에서 8080포트를 지정해주고 물론 내부IP로 확인시에 http://127.0.0.1:8080으로 접속해서 확인해야

한다. htdocs와 두번째 호스트는 완전히 별개이므로 혼동하지 않도록 주의해야할것이다.

------------------------------------------

여기까지 APMsetup의 간략한 활용법을 알아보았습니다.가상호스트 외에도 APM으로 htdoc안에서

폴더를 따로 만들어 다른 사용자 에게 웹호스팅도 할수있습니다.(User폴더내에 폴더를 하나 만들면

예를들어 test란 폴더를 만들면
http://127.0.0.1/~test 가 계정이 된다. 주의할점은 별다른 보안설정

없이 계정을 줬다가 해킹을 당할수도 있으므로 가능한 믿을수 있는 사람들에게만 분양 해주는것이

좋겠다.) 마치 큰회사에서 무료홈페이지 계정 5메가 10메가 주는 식으로 말이죠.

 예를 들어 제가 아무개에게 shit이란 계정을 준다고 치면 htdocs폴더내에 shit이란 폴더를 만들고 우

 리가 게시판권한도 주려면 phpmyadmin에서 DB를 만들어서 제공하면 되는거죠

 http://xens.apmsetup.net/shit/ 이게 사용자의 계정이 되겠습니다.

 물론 매우 번거롭고 귀찮겠죠.. 어쨋든 이런식의 또다른 활용법이 있습니다.

 웹서버를 이용하려면 이것외에도 퍼미션이란 개념도 필요합니다. 매우 중요하죠.

 이런것에 대해서는 다른곳에서 찾아 보시면 훨씬 정확히 기술되있습니다.

 마지막으로 몇가지 주의점에 대해서 간략히 쓰겠습니다. 강좌 초반에 잠시 언급했던

 IIS에 대해서 입니다.윈도우 서버군에는 IIS(Internet Information Server) 가 기본적으로

 설치되어있습니다. 근데 사실 IIS는 공개 소프트웨어가 아니죠. 우리가 쓰는 과자판 윈도우서버군

 들은 IIS를 물론 포함하고 있지만 합법은 아니라는 겁니다. 여기선 불법으로 쓰는게 위험하다는것이

 아니고 IIS도 웹서버 포트 80포트를 씁니다. 때문에 윈도우서버군에서 APM을 사용하려면 APM이

 다른 포트를 쓰던지 IIS를 없애 버리던지 해야합니다. 이점 주의하세요. 다른주의점 또 한가지

 환경설정후에는 Mysql과 Apache를 재시작 시켜주세요. 대부분 재시작을 하지 않아서 문제가 없는

 데 문제가 있는것처럼 보일때가 많습니다.

 (마지막으로 덧붙히자면 이 블로그의 윈도우2003에서 IIS로 웹서버 구축하기를 참고하면 IIS와
 Apache서버 두개다 사용할수가 있다. IIS나 Apache의 포트번호를 바꿔주면 된다. 상세내용은
 다른 강좌들을 참고하면 알수있다.)

신고

(이 강좌는 운영자 미니홈피 http://cyworld.com/hy313 에서도 보실 수 있습니다.)

앞에서는 Zboard 설치를 위한 mysql의 DB만들기에 대해서 알아보았다. 이번에는 zboard설치에

대해서 알아볼것이다.현재 4.1pl8버전이 최신버전이므로.. 받아서 설치를 해보겠다.

기본폴더는 C:\APM_Setup\htdocs\ 에 그대로 압축을 풀어주면 된다. bbs폴더를 htdocs에

해제해주면 된다. 해제한뒤..(덧붙혀 제로보드5 베타의 경우는 UTF-8을 기본규격으로 만들어져서

아마도 지금 최신버전의 APM_Setup에서는 글꼴이 모두 깨져보일수가 있다. 확인한 바가 없어서

잘은 모르겠다.)

사용자 삽입 이미지

현재 필자는 테스트를 위해 가상호스트를 이용해서 기본폴더가아닌 다른곳에 설치를 하고있다.

기본적으로는
http://127.0.0.1/bbs/install.php 로 접속하면 위와같이 뜬다.

약관에 동의 하고 설치를 하겠다고 하면 아래와 같은 화면이 뜬다

사용자 삽입 이미지

아까 만들었던 mysql의 db가 이제 제대로 쓰일것이다. hostname에는 우리가 DB를 만들때

localhost를 사용했기 때문에 그대로 두면 된다. SQL user ID엔 DB를 만들때 썼던 board2를

쓰면된다. password또한 DB를 만들때 썼던 암호를 써주면 되고 맨밑의 이름또한 board2로 쓰면

된다. 이상없이 마치면..
 

사용자 삽입 이미지

관리자 정보를 입력받게 된다. 자신이 실제 제로보드를 관리할때 쓸 ID와 암호 그리고 사용자명등을

맘에 드는대로 사용하면 된다. 이는 mysql DB와 상관없고 제로보드관리에만 상응하는 부분이다.

따라서 가능하면 mysql DB암호와 제로보드 관리자 암호는 관계없이 설정하는것을 권장한다.

사용자 삽입 이미지


모두끝나면 이렇게 관리자 ID와 암호를 입력받는 항목이 뜨고 앞서 설정했던 제로보드 관리자 ID와

암호를 입력하면 마침내 제로보드의 메인화면을 볼수있게 된다.

(3장에서 계속됩니다.)
신고

(이강좌는 운영자 싸이월드 미니홈피 http://cyworld.com/hy313 에서도 보실수있습니다.)

여기까지 이상없이 통과하신 분들은 이제 APMSETUP을 이용한 게시판의 활용에 대해서 알아볼것

이다. 근사모에 동영상강의로 매우 쉽게 설명하고 있으나 동영상이 지루하니까 여기서 그냥 설명하

도록 하겠다. 일단  설치하기에 앞서 http://nzeo.com 을 접속해서 제로보드 4.1pl8(06.4.5까지 최신

버전)을 다운로드 한다. tar.gz로 끝나는 리눅스용이 아니라 윈도우용인 zip압축 파일을 받도록 한다.

일단 제로보드를 이용하기 위해서 http://127.0.0.1/myadmin 으로 접속하여 mysql의 DB를

만들어줘야한다

사용자 삽입 이미지

여기서 root로 물론 초기암호는 apmsetup이고 앞서 강좌에 따라 암호를 바꿨다면 그암호를
 
사용하여 접속하면 된다.

사용자 삽입 이미지

접속하면 이렇게 초기화면이 뜨고 여기서 새데이터베이스 만들기에 자신이 사용할 보드의

DB명 쉽게 말해 그냥 맘에 드는 이름을 입력해준다. 필자는 여기서 board2로 입력을 했다.

후에 위의 데이터베이스 항목위의 집버튼을 눌러 초기화면으로 돌아온다

(덧붙혀서 만약 APMsetup내부에서 Mysql만 버전업그레이드를 했을경우 제로보드4를 설치할때

 만들 테이블의 Collation을 UTF-8에서 EUCKR로 바꿔줘야한다. 이점에 대해선 나중에 올리도록
 
 하겠다.)

사용자 삽입 이미지

이 초기화면에서 새사용자 추가를 누른다.
사용자 삽입 이미지

머리아프게 여러가지 설정 란이 있다. 사용자란을 board2
로 하고 암호를 써주었다. 밑에 generate

password는 말그대로 랜덤하게 암호를 만들어주는 별로 쓸데 없는 기능이다. 어쨋든 이렇게 해준뒤
맨 밑의 실행 버튼을 누르면..
사용자 삽입 이미지

이와 같은 화면이 뜬다. 윗화면이며..밑의 화면은..
사용자 삽입 이미지

화면에서 짤렸는데 암호변경 위의 항목을 보면 데이터베이스에 대한 권한이란 항목이 있다. 여기서

다음데이터베이스에 권한추가하기에서 board2 를 선택해주면 다음화면으로 넘어간다.
사용자 삽입 이미지
여기서 데이터베이스에 대한 권한에 모두 체크해주고 바로밑의 실행을 눌러주면 권한설정 업데이트

가 완료되었다고 뜨게된다. 자 여기서 다시 맨위의 사용권한탭을 눌러주면 맨밑에

주의:php어쩌고 나오는곳에 reload the privileges 라는 항목이 있는데 이를 실행시켜준다.

실행시킨뒤엔 사용권한이 다시 로드되었다고 뜨게 된다. 이렇게 해서 제로보드 설치를 위한 My sql 

DB만들기가 끝난 것이다. 확인을 위해서 왼쪽 집메뉴 옆에 로그아웃을 하여 board2를 id로 로그인을
 
해본다.

(2장에서 계속됩니다.)

신고

(이글은 운영자의 싸이월드 미니홈피 http://cyworld.com/hy313 에서도 보실 수 있습니다.)

앞서 포트포워딩에 대해 알아보았고 이젠 APMsetup설정에 대해알아보겠다.

사용자 삽입 이미지

APM setup을 실행했을때의 화면이다. 한가지 덧붙히자면 win98
기반으로 이프로그램을 사용시

근사모에서 확인하신분들은
아시겠지만 업데이트를 하면 안된다. 필자의 경우 지금 My sql이 정지된

상태인데 이는 APM을 일부러 에러내서 나온화면이다.
이렇게 APM에 에러가 나서 프로그램이 종료

된경우 윈도우의
작업관리자에서 Apache.exe 와 mysql-nt.exe의 프로세스 종료를 해준뒤 다시 구

동해야 정상 작동한다. 많은 분들이 이점을 모르고
바로 다시 구동시켜서 접속을 못하는 사례를 봤다

사용자 삽입 이미지

리눅스던 윈도우를 기반으로 하던 간에 가장 중요한 것은 보안이다. 보안의 기초로 패스워드 설정이

다. 패스워드는 자신이 쉽게 외울수있게 하기보다는 길고 어려운 숫자,문자,특수기호가 조합된 것으

로 쓰는것이 좋겠다. 물론 서버를 운영함에 있어서 많은 보안대비가 필요하지만 필자도 아직 모르는

것이 많고 이강좌의 주는 보안이 아니므로 넘어가도록 하겠다. 어쨋든 이그림에서 자신의 홈페이지

의 메인주소를 설정해줄수 있다. 이전에 DNIP나 APMsetup의 기본 주소포워딩 서비스를 사용해야된

다. 사용하지 않아도 물론 IP주소입력을 통해 홈페이지 접속이 가능하지만 매우 불편하다. 거의 모든

ISP들은 사용자들에게 유동IP를 제공한다. IP에 대한 자세한 개념은 알아서 검색하시고 유동 IP를 쓰

는 이유는 사용자가 많아서 모두 고정IP를 쓴다면 IP주소가 부족해지기 때문이다. 듣기로는 실제로

어느 지역은 할당된IP가 부족해서 인터넷 접속이 일시적으로 안될때도 있다고 한다. 어쨋든 위그림

처럼 자신이 쓸 홈페이지 이름을 지정해준다. 근사모 홈페이지에선 친절하게도 이런서비스 까지 제

공을 해줘서 기본주소로 XXX.apmsetup.net 의 주소를 사용할수있다.

8080포트를 쓸경우에 XXX.apmsetup.org를 사용할수도 있는 편의를 제공한다.

사용자 삽입 이미지

근사모 홈페이지에서 이렇게 신청을 하면 메일인증을 받고 해당 계정을 사용할수 있게 된다. 계정은

한개만 되는것이 아니라여러개를 신청할수있지만 쓸데없이 많이 신청할필요는 없을것이다.

(후에 설명할 가상호스트에서 왜 여러개의 계정신청이 필요한지설명하겠다.)

사용자 삽입 이미지

PHP환경설정 란이다. 일단 모든 부분에 있어서 기본적으로는 손댈곳이 없고 가장 주가 되는곳은

File upload size가 될수있겠다.20Mb가 기본설정 되있고 늘릴수 있다. 이 설정은 PHP를 기반으로

한 제로보드의 자료실 기능에서 매우 중요한 설정이라 할수있겠다.제로보드에 대해서는 후에 설명하

도록 하겠다.(게시판을 대용량 자료실로 쓰실분들에게는..)

사용자 삽입 이미지

My SQL root 패스워드 지정 란이다. 이곳에서 별달리 수정할것은 없다.
(PHPmyadmin에 로그인 할때 패스워드를 지정해주는 곳인데 수정방법은 이 메뉴에서 하는 방법과
 커맨드창을 띄워서 하는 방법이 있다.)

앞의 강좌에서는 설치가 끝난 APMsetup의 내부설정과 실제 계정이름을 쓸수 있게 하는 방법에

대해 알아봤다. 앞서말한것과 같이 IP로도 접속가능하며 근사모에서 제공하는  DNIP기능만 사용할

필요는 없다는 것이다. 주소가 마음에 들지 않으면 다른 업체의 이런 유동IP를 고정도메인으로 맵핑

해주는 무료서비스 하는곳이 많으니 찾아보면 도움이 될것이다. 이제 프로그램 설정도 끝났고

홈페이지를 확인해 봐야하는데 몇가지 APMSETUP의 폴더에 대해서 알아보도록 하겠다.

 설치시 기본 폴더는 C:\APM_SETUP 이다 물론 다른곳에도 설치 할수있지만 여러가지 설정의

 편의로 C드라이브의 루트에 설치하는것을 권장한다.

 일단 자신의 홈페이지를 확인하는 방법으로 http://127.0.0.1 을 쳐보면 APMsetup.com 이 뜨고

 관리자 패스워드 설정을 해주라고 할것이다. 일단 설정해준다. 초기 패스워드는 아마 apmsetup 일

 것이다. 다른 포트번호, 예를 들어 9999를 용한다고 하면 http://127.0.0.1:9999 를 사용해서 들어가

 야한다. 초기화면에 페이지를 찾을수 없다고 뜨면 뭔가 잘못된것이다.

 아니면 http://localhost 를 쳐도 같은 결과를 볼수있다.

  그럼 홈페이지 파일은 어디에 저장되는가 하면 C:\APM_SETUP안의 htdocs에 저장이 된다.

  폴더가 바로 기본적으로 홈페이지 일 저장이나 게시판 설치등을 할수 있는 폴더이다. 물론

  폴더명을 바꿀수 있으나 설정파일도 모두 바꿔야 하므로 그대로 쓰길 장한다. 그외에 server

  폴더내엔 apache와 mysql의 어플리케이션과 설정 파일들이 있다. 자신의 홈페이지를 확인하는

  법으로 index.html 파일을 만들어 htdoc에 집어넣어본다.

사용자 삽입 이미지

이와 같이 자신의 홈페이지를 볼수있다. 기본적으로 index.html을 index.php등을 로드하며 이또한

APMsetup의 아파치 환경설정에서 Directory index탭을 보면 쉽게 설정할수있다.

참고로 127.0.0.1 이란 IP는 자신의 컴퓨터의 루프백 IP이다.

쉽게 말하자면 자기 컴퓨터 만의 IP라는 것이다.

신고
(이 강좌는 운영자의 싸이월드 미니홈피 http://cyworld.com/hy313 에서 보실수 있습니다.)

90년도 후반부터 현재까지 인터넷사용자가 기하급수적으로
 늘어나고 있다. 80년대부터 90년대 까지

VT기반의 텔넷 서비스를
 이용하던 인터넷사용자들은 90년대에 출시된 윈도우3.1과  Novell Netware

에서 개발된 Winsock과 Mosaic을 통한 편리한
 정보검색도구에 매료되어 많은 사용자들이 모뎀을

사용했다.
 시간이 지나 윈도우95에 인터넷익스플로러와 양대산맥을 이루던  넷스케이프 네비게이터

와 함께 한국 인터넷은 발전해갔지만
이때까지만 해도 PPP연결을 위해 약간의 설정을 해줬어야했고

모뎀의 느린속도 덕분에 텔넷서비스는 살아남을수 있었으나
 ISDN이 상용화되고  후로 ADSL의 상용

화로 인터넷속도와
 편의성이 향상됨에 따라  모뎀을 사용하던 텔넷서비스들은 모습을  감췄다. 90년

도 후반에
 정부차원의 인터넷PC붐으로 많은 가정들 이 싼값에 컴퓨터를 보유하고 인터넷을 할수있

게 됐으며 갈수록
 PC부품값이 하락해  요새는 왠만한 가정집들은 PC를 두대이상  보유하고 있다.

다.
 필자의 경우도 PC 세대와 노트북 1대를 보유하고 있다. 일부러 사서 그렇게 된것이 아니라 업그

레이드를 하고 남는
 부품들을 버리지 않고 시스템구축을 해서 놔둔것이라 그렇게 된것이다. 사실 개

인적으로 웹서버를 운영하는데 있어서 PC
 속도는 아주 많이 중요하지 않다. 셀러론 급의 컴퓨터와

높은
 대역폭의 인터넷서비스를 쓰면 개인용으로 충분하다. 기업단위의 웹서버 운영에  있어서는 상

당히 높은 수준의
보안시스템과 수십만의 이용자를  대비해야겠지만 개인웹서버는 이럴필요가 없다.

어떻게 보면 텔넷서비스 시절의 소모임등의
 동호회 운영이 인터넷 카페등으로 발전.. 이제는 점차적

으로
 개인 홈페이지 운영(개인웹서버를통한)으로 발전할것 같다는 개인적인 생각이다. 어쨋든 이렇

게 남는 컴퓨터나 고성능의
최신컴퓨터로 개인 웹서버를 운영하고 싶은 사용자들을 위해 필자의 경

험을 통한 강의(?)를 할것이다. 강좌내용은 기초적인
 것이고 이론을 배제한 오로지 결과만을 위한 강

의가 될것이다.

APM(Apache,PHP,My sql)을 합한 약어이다.. 이론을 모두빼도


이정도까진 알고있어야 할듯싶다. APM을 쓰는 이유는 간단하다.


설치가 쉽고 웹서버 하면 리눅스를 많이 떠올리는데 이것은 윈도우


기반의 웹서버 이다. 웹서버 구축에 접근하기가 쉽다는 것이다.


아직까지 리눅스는 개인사용자에게 어려운감이 없지 않다.


X윈도우가 있긴해도 아직까지 리눅스는 설정을 위해 커맨드를


직접 쳐줘야되는 불편한 시스템이다. 내맘대로 OS를 수정할수


있다라는 것은 많이 아는 사람들 얘기일뿐 리눅스를 제대로 쓰려면


공부를 해야가능하다는 것이다. 5~6년전쯤에 모컴퓨터 판매업체


에서 윈도우 라이센스 비용을 줄이려고 시스템에 리눅스를 설치


해서 판매한적이 있는데 결과는 물론 대실패였다.


윈도우하면 윈도우 95,98,2000,xp,vista 정도로 생각들 많이


할것이다.


그러나 이속에 꽤 많은 제품군이 숨어있다는 것은 모르는 사람


들이 많으며 필요도 없는데 용량만 차지하는 서버군 제품을


사용하는 사람도 많다. 일단 본론으로 돌아가 APMsetup을


사용가능한 윈도우 제품군을 나열해보겠다.


Windows 95 - 아직도 쓰는사람이 있는지 모르겠지만 불가능하다


Windows 95 OSR,OSR2 - 마찬가지로 불가능하다.


Windows 98,98 Second Edition

 - 가능하지만 보안상의 문제와
 
제어가 번거롭다.


Windows 2000 - 물론 가능하다.


Windows 2000,2003 server

 - 가능하지만 윈도우의 서버제품군에는 IIS가 설치되어있다.

    나중에 설명하겠지만 IIS가 있는상태로는 APM을 이용하기가

    약간 번거롭다.


Windows XP(Home Edition,Professional Edition,64bit edition

                   ,Media Center 2005)

 - 모두 가능하다.


Windows Vista(Beta2)


- 아직 정식 출시는 되지 않았지만 시험해본결과 가능하다.
  (덧붙혀서 Windows Vista 정식버전에서도 사용이 가능하다.
   필자의 경우 현재 Vista ultimate(32bit)에디션을 사용중이다.)


앞서의 강좌에서 APM이 사용가능한 윈도우 제품군과 리눅스에 대한 잡소리를 해봤다. 필자는 x윈도

우가 없던 때에 주로 리눅스를
사용하고 군대가기 조금 전부터 갔다온 이후로  리눅스를 전혀 사용해

보지 않아서 그저 도스의 cd명령어 대신 ls를 사용한다는
것밖에 기억나지 않는다.. 램같은 내머리가

원망스러울 뿐이다.
그래서 웹서버 구축을 하기 위해서 알아봤던게 APM이고 이걸 쉽게 설치해주는

패키지 형태인 APMsetup을 쓰게 된것이다.
컴퓨에 대한 전반적인 기본적 이해가 갖춰진 상태면

APMsetup
을 사용하기 무난하다. 하지만 아무리 쉽다고 해도 ADSL모뎀에 접속하는것 처럼 원클릭

으로 끝나는 것은 아니고 이것도 아주약간
의 설정은 거쳐야 된다. 그러나 리눅스에 아파치서버를 사

용하는
것 보다는 정말 굉장히 쉽다. 필자가 쓸 강좌는 APMsetup을 간단히 이용해보는 정도이며

PHP나 JSP,ASP등을 깊이있게
공부하려는 사람들은 별 필요없는 강좌이다. 이강좌의 중점은 실제로

자기
컴퓨터를 이용한 서버구축일 뿐이다. 그외의 옵션은 알아서 해결하길 바란다.


일단 준비물로는 APMSETUP을 다운로드 해야된다.


http://www.apmsetup.com/download/?mirror=1&filename=APM_Setup5_2006_01_23.exe(출처 : 근사모(http://apmsetup.com)


바로 이툴이 APM서버를 편리하게 구축할수있는 APMSETUP이다. 설치방법은 근사모에서

확인하길 바란다.(덧붙혀 설치방법이라고 해봐야 별것 없다. 그냥 다음버튼만 눌러주면 된다

몇가지 주의할점은 처음 인스톨 한다면 반드시 Full install을 할것! 그리고 경로는 기본경로인

C:\APM_Setup을 사용하는것이 좋다.)

근사모에서 설치방법을 확인하면서 설치를 마쳤다면 이제


약간의 설정을 해줄때이다. 이전에 알아둬야 할것은 인터넷


대역폭이다 앞서 강좌에서 잠시 말했듯이 동시 접속자 10명이상을


수용하려면 속도보다는 대역폭이 넓어야 한다는것이다. 대역폭이


좁으면 동시접속자가 많을때 데이터 전송에 어려움이 많다.


대역폭에 대해서는 찾아보길 바란다. 그저 블로그 형태의 게시판


운영이나 작은 크기의 파일을 다루는 웹서버에서는 그다지 필요


없는 개념이지만 많은 웹서버 구축자들이 이렇게만 이용하려고


하진 않을것이라 생각한다. 웹서버에 게시판을 구축하는것은


나중에 알아보기로 하고 일단 몇가지 설정에 대해 설명하겠다.


기본적으로 웹서버는 윈도우에서 80번 포트를 이용한다.


이는 웹서버 포트이다. 흔히들 쓰는 프루나는 4662포트를 기본으로


이용하며 1~1000번 까지의 포트는 윈도우에서 예약사용할 포트


들이 많다. 포트번호는 총 1~65535번 까지의 포트가 있다.


포트번호가 중요한 이유는 APM은 당연히 80번 포트를 사용하기


때문이다. 한마디로 아파치 서버는 80번 웹서버 포트를 사용한다고


하면 되겠다. 여기서 문제는 국내의 ISP들 즉 하나로통신이나


메가패스등은 보안을 목적으로 웹서버 포트를 막아놓은서비스가


대부분이라는 것이다. 이경우에 이 포트가 막힌 서비스를 사용하는


사용자는 아무리 설정을 해줘도 근본적으로 막힌 80번 포트를


사용할수 없다는것이다. 그렇다고 전화해서 80번 포트 뚫어주세요


한다고 될리는 만무할것이고.. 필자의경우는 80번 포트가 뚫려


있다. 80번 포트를 사용하지 않을경우 어떤 문제가 있냐면 제일


먼저 홈페이지 주소가 길어진다는 것이다. 예를 들어 필자의


홈페이지를 보자면 http://xens.apmsetup.net 이다.


80번 포트는 기본포트이므로 http://xens.apmsetup.net:80


에서 80을 쳐주지 않아도 접속 가능 하다는 것이다. 그러나 다른


포트를 사용하게 되면 예를들어 80번 포트대신 9999포트를


사용한다면 http://xens.apmsetup.net:8080 으로 접속을 해야되는


불편이 있다.


앞서 포트번호에 대해 설명하였다. 이제는 80번 포트가 막혔을때 포트 포워딩을 사용한 포트 열기에

대해 알아보도록 하겠다.
포트포워딩을 사용하는 이유는 앞서에서처럼 80포트가 막힌사용자들을 위

한것이다. 이것보다 APM에 대한 설정을 먼저
설명해야 옳지만 일단 포트를 제대로 사용하지 못하면

자신의
웹서버의 홈페이지를 다른 사람들에게 게시하지 못하는 중요한문제가 있어서 먼저 설명하도

록 하겠다. 포트포워딩이란 간단히
쓰지 못하게 막혀있는 포트를 다른포트에 명령을 내려서 쓰게


하는 것이다. 윈도우XP SP2를 사용하는 사용자들은 별쓸데없는
윈도우 기본방화벽때문에 p2p서비

스나 이런 웹서버 사용에 곤란을
겪게되는데 방화벽 해제와 포트포워딩에 대해 설명하겠다.


사용자 삽입 이미지

 

(클릭해서보세요) 제어판의 네트워크 연결을 보면 이렇게 자신의컴퓨터에 연결된 이더넷카드(랜카

드)등의 연결 상태를 보여준다.필자의 경우 필자의 컴퓨터는 현재 인터넷을 다른컴퓨터로 공유받아

쓰는 중이다. 사용자마다 연결되있는 형태가 다양하다.가장 주가 되는것은 직접들어오는 회선에 대

한 설정이다.외장형 ADSL모뎀을 쓰는 사람들은 컴퓨터 안의 랜카드를 통해 접속을 하게 되고 내장

형을 쓰는 사람들은 컴퓨터로 바로 연결이 된다. 여기서는 인터넷 공유에 대한 강좌가 아니므로 넘어

가고다른 인터넷 공유강좌에서 다시 설명하도록 하겠다. 위의 그림과 같이 연결속성에서 설정을

눌러주면..

사용자 삽입 이미지

이렇게 예외라는 항목이 뜨게된다. 매우 간단하다 여기서 보면 현재 APM이 설치된 상태라서 방화벽

을 적용할 예외프로그램에 아파치 서버가 등록되있는것을 볼수있다.. 이걸 보기전에 옆의 탭에서 방

화벽 사용안함 설정을 먼저 해줘야 한다.


사용자 삽입 이미지

이렇게 해줬는데 안될때가 있다 이때는 고급탭에서 연결에 대한 방화벽 사용체크를 해제해주고

서비스 설정에서 80번 포트를 사용
할 IP나 컴퓨터 이름을 써주면 된다. 컴퓨터 이름은 바로

사용자 삽입 이미지

제어판의 이곳에서 확인할수가 있다. 위의 설정에서 물론 사용할 포트추가/편집을 할수가 있다.

80번포트가 근본적으로 막힌경우 81,82 혹은 8080 또는 9999등의 포트를 추가해서 사용하면 된다.


여기까지가 윈도우에서의 포트포워딩에 대한 설명이고 공유기를사용하는 경우엔 공유기의

포트포워딩을 사용하면 된다.

(2장에서 계속됩니다.)



신고

이번에는 윈도우 서버제품을 사용한 IIS(Internet Information Service)를 사용한 웹서버 구축에

대하여 알아보겠다. 굳이 서버 제품군을 구하기 힘들다면 윈도우 2000 이나 윈도우 XP를 통해서도

사용해 볼수있다. 강좌의 중점은 활용보다는 웹서버 자체를 구축하는 방법에 대해서 훓어보는 형식

이 될듯 하다. 개인적으로 IIS가 왠지 Apache보다 못하다는 생각이 들어서 사용하지 않는데다가

현재 Apache서버를 쓰고있는 상황에서 IIS를 사용하여 PHP,Mysql연동을 시키는 것이 귀찮기도

하고 많은 부분을 까먹어서 검색해보고 하지 않으면 할수도 없기 때문에 여기서는 IIS로 웹서버

서비스 구동부분까지만 설명 하도록 하겠다.

사용자 삽입 이미지

윈도우 2003 Server Enterprise Edition이 설치중인 화면. 별달리 설정할 곳은 없다.. 필자의 경우

영문판밖에 가지고 있질 않아서 영문판으로 설치 중이다. IIS를 다 해보고 나선 2003은 안녕이

될것이다..

사용자 삽입 이미지

IIS를 설치중인 화면이다. 제어판->프로그램 추가/제거-> 윈도우 구성요소 추가설치/삭제에서

인터넷 정보 서비스(IIS)를 설치 혹은 삭제 할수가 있다. 현재는 설치 중이다.

사용자 삽입 이미지

설치가 끝나면 제어판에서 '관리도구' 내의 인터넷 정보 서비스(IIS)를 선택 하기로 한다.

여기서 화면에 나온대로 기본 웹사이트를 클릭 한뒤 속성을 눌러준다.

사용자 삽입 이미지

TCP포트는 만약 VMware환경(호스트 컴퓨터에 웹서버가 설치안된)에서 윈도우서버 2003이나 다른

OS를 설치해서 IIS를 쓰고자 한다면 80번 포트(웹서버 기본)를 그대로 놔두어도 되지만 웹서버를

따로 쓰고있다면 메인으로 쓰고자 하는 웹서버포트를 80으로 하고 IIS를 9999등의 포트번호로 지정해

주는 것이 좋다. 이때 VMware의 Network settings에서 포트포워딩을 해줘야 하는데 이 블로그의

리눅스에서 아파치 서버 설치하기 강좌 에서 찾아보면 포트포워딩 방법을 알수있다.

필자는 80번포트를 이미 사용중이므로 9995번포트를 IIS에 부여하기로 했다. 설명 부분엔 웹사이트

를 읽어들였을때에 뜨는 타이틀, IP주소는 설정하지 않으면 기본적으로 윈도우에서 부여된 IP주소를

할당하여준다.

사용자 삽입 이미지

다음은 홈디렉토리 설정이다. 아파치서버의 기본 홈페이지를 읽어들일 디렉토리가 htdocs나

public_html인것 처럼 IIS에서는 c:\inetpub\wwwroot 를 기본으로 한다 이곳에 index.html

파일을 넣고 http://localhost 하면 apache서버를 실행시켰던 그것처럼 같은 결과를 볼수잇다.

디렉터리 검색은 IIS서비스 실행시 디렉터리 경로들을 보여준다. index.html을 화면에 읽어들이는

것이 아니라 탐색기에서 보듯이 파일로만 보여주게 된다. 여기서는 기본값인 미설정으로 설정한다.

나머지 옵션들에 대해서는 기본값대로 사용해도 무방하다.

사용자 삽입 이미지

이번엔 문서 항목이다. 윗쪽은 기본으로 읽어들일 문서에 대해서 나와있는데 마음에 드는대로

수정하면 되겠다. 필자는 좀 있다 index.htm을 불러들일것이라 그대로 놔두기로 하겠다.

아래 메뉴는 문서 바닥글 사용 메뉴인데 이를 html파일로 지정해놓으면 웹페이지를 읽을때

IIS가 이 내용을 페이지 바닥 부분에 보여주게 된다. 별 필요없는 기능이라 생각되어 생략하기로

했다.

모든 내용을 적용 혹은 확인버튼을 누른뒤..아무 내용이나 htm문서로 코딩하여..

사용자 삽입 이미지

아래와 같이 c:\inetpub\wwwroot 디렉토리에 저장한뒤.. 웹브라우저에서 IIS에서 할당했던

IP를 입력하면 내부에서 이렇게 화면이 뜨고.. 외부에서 localhost:9995 로 내부접속은 이상없이

되는것이 확인되었다.
사용자 삽입 이미지

그렇다면 이번엔 외부접속 확인을 해보겠다..
사용자 삽입 이미지

이렇게.. 외부접속까지 되는것을 확인했다.

-----------------------------------------------------------------------------------------

여기까지 IIS를 사용한 윈도우 에서의 웹서버 구동법에 대해 알아보았다. 구동만 한다고 다되는것도

아니고. 요새 홈페이지들은 예전과 달리 php,mysql등이 연동되어 따로 Apache 서버나 IIS를

PHP,Mysql과 연동시키는 방법보다는 편하게 웹서버를 구동해볼수 있는 Autoset이나 APMsetup

같은 웹서버 매니지먼트 프로그램을 권장한다. 여기서 IIS에 대해서 알아 본이유는 윈도우에서

꼭 Apache뿐이 아니라 IIS로도 서버환경을 구축할수 있다는것을 보여주기 위한 예를 들어본것

뿐이다. IIS는 Apache의 가상디렉토리(Alias)에 해당하는 부분도 IIS에서 해줄수 있다. 어쨋거나

여기까지 간단히 구축방법을 알아보았다.
신고
앞서강좌에선 VMware의 가상머신 세부설정에 대해서 캡쳐화면과 함께 훑어봤다 이번엔 Vmware

 tools설치방법과 몇가지 헛소리들로 강좌를 메꾸고 Vmware활용법에 대한 강좌를 마치도록 하겠다.

사용자 삽입 이미지

기본적으로 vmware에서 가상머신을 설치하고 나면 os에 따라 틀리지만 화면해상도가 640*480혹은

800*600으로 제한되어있는데 요새 모니터들은 화면크기부터가 참 틀린것 같다 현재 필자는 꽤

오래된 CRT 17인치 모니터(현대 이미지퀘스트 q770)를 사용중인데 요새 블로그들만 봐도 그렇고

홈페이지도 1024*768해상도를 기준으로 제작돼왔던 것들이 점차 더넓은 바뀌어가고 있다. 어쨋든

Vmware tools를 설치하면 화면 해상도를 1024*768이상으로 설정할수도 있고 USB에대해서도

제대로 지원할수 있게 해준다. 윈도우던 리눅스던 간에 위화면과 같이 Install Vmware tools를

선택하면 경고화면이 하나 뜨는데 OS가 실행되지 않은상태에서 실행했다면 취소하고 켜고 실행

하라는 잔소리고 OS가 실행된상태에서 이를 수행하도록 하자.

사용자 삽입 이미지

이처럼 설치화면이 뜨게되고 next만 몇번 누르면 vmware를 처음 설치할때처럼 간단하게 끝난다.

리눅스에서는 이처럼 자동으로 설치화면이 뜨진 않고 가상CDROM에 vmware tool을 설치할수있는

파일이 들어있는 이미지 파일만 뜨게 된다 리눅스에서 설치하는 방법은 따로 리눅스 강좌쪽에서

설명하도록 하겠다. 위와같이 설치를 끝내고 나면 아래와같이 높은 해상도를 선택할수있게된다.
사용자 삽입 이미지

여기까진 vmware tool설치에 대하여 알아봤고 vmware내에선 웹서버도 운영할수있다. 이강좌에선

웹서버설치에 대한 강좌를 진행하는 것이 아니지만 참고를 위해 몇가지 쓰겠다. 기본적으로 웹서버

는80번 포트를 사용하게 된다. 우리가 인터넷 주소 http://xens.apmsetup.net을 쳤다면 이는

http://xens.apmsetup.net:80/ 을 의미하는 것인데 생략되있을뿐이다. vmware내에서 웹서버를

운영할때 문제점이 뭐냐면 바로 이 포트이다. 만약 호스트 컴퓨터에서 웹서버를 운영하고 있지

않다면 상관없는 부분이지만 호스트에서 웹서버를 운영하는 상태라면 80번포트는 이미 사용되고

있고 최근 추세에따라 APM(Apache+PHP+Mysql)까지 쓴다면 Mysql의 기본포트인 3306번 포트

까지 사용하고 있게되는 것이다. 어쨋든간에 VMware에선 이러한경우를 위한 포트포워딩 설정

까지도 있다. 캡쳐화면은 포트포워딩을 통해 호스트컴퓨터의 9997번 포트를 가상pc에 부여해서

APM서버를 실행하고 홈페이지를 띄운 모습이다. 물론 이를 제대로 실행하려면 아파치 서버의

httpd.conf파일(웹서버설정파일)을 적절히 수정해줘야 한다.

사용자 삽입 이미지

이화면은 9997포트를 포워딩 해준 웹서버가 잘 작동되는지 호스트OS에서 확인해본 결과이다.

보는대로 접속이 잘이뤄진다. 이처럼 단순한 개인홈페이지 웹서버는 vmware를 이용해서 운영

해보는것도 나쁘지 않으나 호스트 컴퓨터의 사양이 vmware가 구동할때 전혀버벅거림 없는 사양이

아니라면 서버에서 파일을 읽어들일때 딜레이가 생기므로 추천하는 방법은 아니다.
사용자 삽입 이미지
여기까지 Vmware의 가상머신 설치법과 웹서버 설치 활용법에 대해 알아보았다. vmware는

정말 극찬을 아낄수없는 프로그램이다. 개인적으로는 메인 OS를 윈도우에서 바꿔본적이없고

처음 쓰는 프로그램을 쓸때 메인OS에 설치후 잘못되면 레지스트리가 지저분해지고 쓰기에

불편한데 vmware를 쓰면 이러한 설치테스트도 부담없이 할수있다. virtual pc도 써봤지만 개인적으

로는 vmware가 더 편리하고 세부설정 기능도 더 많다고 생각된다. 나머지 더 상세한 부분들은

쓰다보면 금방 알수있는 부분이기때문에 모두 생략했으며 아는 한도 내에선 질문에 답변하도록

하겠다. 이곳의 강좌들은 모두 정말 초보자들을 위한 강좌이고 본인도 고수는 아니니 큰태클은

거부하도록 하겠다. (긴글들 읽어주셔서 감사합니다.^^)

- 포트포워딩 사용법 -
(점선 밑부분은 포트포워딩에 관해 리눅스웹서버를 vmware에서 구축시에 방법에대한 셋팅방법
 을 설명한 것이다.)
-------------------------------------------------------------------------------------

아래 사진은 Vmware의 포트포워드 기능을 설정하려는 사진이다. 사진에서 보는것과 같이

edit->virtual network settings 에 들어간다.
사용자 삽입 이미지

위의 과정을 거치면 여기 띄워진 창의 순서대로 NAT을 누르고 edit란 메뉴가 보이는데 그것을

누르면 NAT settings창이 뜬다. 여기서 port forwarding을 클릭하면 Port Forwarding 창이 뜨는데

 처음엔 아무것도 없다. 여기서 Add를 클릭해주면 Map Incoming port 창이 뜨게 된다.

 Host port가 의미하는것은 가상컴퓨터(vmware)가 아닌 현재 쓰고있는 컴퓨터의 포트를 지정해

 주는 것이고 우리는 웹서버(80)번 포트를 사용할것이기 때문에 80번 포트를 써주었다.

 만약 실제컴퓨터의 OS가 윈도우고 윈도우 서버를 운영한다고 하면 80번 포트 대신에 위에서

 언급했던 8080이나 9999포트를 써줘도 무방하다.

 그밑의 Virtual Machine IP Address는 쉽게 VMware의 가상 랜카드 IP주소를 말한다.(리눅스에서)

 이는 리눅스 터미널에서 'ifconfig' 라는 명령어로 확인할수 있다.(ipconfig는 윈도우용..)

 port는 동일하게 설정해주면 된다. 이런 설정을 거친뒤에 리눅스에서 아파치 서버데몬을 실행

 해보고 호스트 컴퓨터에서(실제컴퓨터) 브라우저로 실제컴퓨터에 부여된 IP를 입력해서

 테스트 해본다 (예:만약 실제 컴퓨터 IP가 123.45.25.2 라면 http://123.45.25.2를 입력해본다.)

 여기서 홈페이지 내용이 뜬다면 성공한것이다.
사용자 삽입 이미지
-----------------------------------------------------------------------------------------
신고
저번 강좌에서 까진 vmware로 가상머신을 만들어봤고 디스크 설정과 기타사항을 간단히 해줘봤다.

이번엔 약간더 세부적인 내용을 캡쳐화면과 함께 간단히 설명하려한다.

필자의 vmware를 실행한 모습이다. 여기서 power on 버튼을 누르면 가상컴퓨터가 작동한다는것도

설명했다 suspend의 경우는 하이버네이션 같은 기능이다. 가상머신을 suspend상태로 두면 디스크

에 그상태를 저장하고 vmware에서 꺼지게되며 다음번 실행시엔 저장된 시점부터 가상컴퓨터를

쓸수있게된다. stop은 실제컴퓨터로 보면 파워를 끄는것이나 마찬가지다.
사용자 삽입 이미지

Power on 하면 아래처럼 vmware 초기화면이 뜬다 가상머신을 설치한 상태에서 아무운영체제도

설치되있지 않다면 cdrom부팅을 사용하던 디스켓으로 부팅하던 해야될텐데 이를 설정하는건

바이오스셋업을 할줄 아는분들도 있겠지만 모른다를 기준으로 쓰도록 하겠다.이런 초기화면에서

F2를 눌러주면 바이오스내부로 진입하게 된다.
사용자 삽입 이미지

아래그림처럼 boot메뉴로 이동해서 '+'버튼을 눌러 부팅 우선순위를 지정해 준뒤 exit 메뉴로 가서

save후에 exit를 선택하면 재부팅 될것이다.
사용자 삽입 이미지

이다음에는 윈도우던 리눅스던 간에 CD를 넣고 설치해야할텐데 CD설정부분은 앞서 강좌를 했었다.

그래서 생략하기로 하고 이제는 VMware workstation에서 여러가지 설정법을 알아보도록하자.

아래화면의 화살표가 가르키는 데로 Edit virtual machine settings 를 눌러보자.
사용자 삽입 이미지

누르면..아래처럼 많은 부분들을 상세히 설정해 줄수 있는데 일단 메모리는 가상머신을 설정할때

설명했듯이 실제컴퓨터의 물리적 메모리설치분이 부족하다 싶으면 알아서 작게 잡도록 하는게

좋다.
사용자 삽입 이미지

다음은 하드디스크 설정 부분이다. Defragment 는 가상하드디스크를 최적화 시켜준다. 실행해도

이상없으니 Defragment를 한번쯤 해주면 좋겠다. Advance메뉴는 크게 신경쓸 부분은 없으니 넘어

가겠다.
사용자 삽입 이미지

CD롬부분은 앞서 설명했기 때문에 넘어가고 플로피디스크 드라이브 설정에 대해 살짝 알아보자.

 Physical disk를 쓴다는 것은 실제컴퓨터의 디스켓드라이브를 쓰겠다는 것이고.. 디스켓 부팅이

 필요한데 디스켓이 없다면 ISO 이미지를 만들던지 다른곳에서 부팅이미지를 다운로드받던지 해서

 사용할수가 있다.
사용자 삽입 이미지

네트워크 설정 부분이다. 이것보다 더 Advance한 설정법은 manage virtual networks 에서 이뤄지며

여기서는 가상랜카드(vmnet8등등...)을 골라쓸수가 있다. bridge네트워크방식은 설정해줘야할것이

몇가지 있기때문에 불편하다. 따라서 NAT설정을 추천한다.
사용자 삽입 이미지

USB부분이다 체크부분을 체크하면 USB기기를 꽂았을때 VMware에서 자동으로 인식하게 된다.

자동인식이 안될경우 이사진 아래의 사진을 참고하도록 하자.
사용자 삽입 이미지

아래사진처럼 메뉴로 이동하여 (USB디장치가 컴퓨터에 연결된 상태에서..) 눌러주면 인식을

할것이다. 윈도우는 대부분 자동인식하지만 리눅스는 안될것이다. VMware의 문제가 아니고

그건 리눅스에서 설정해줘야 할부분이다.
사용자 삽입 이미지

오디오 설정 실제시스템에 설치된 사운드카드를 선택해주면 된다. Use default host sound adapter

를 선택했다면 호스트컴퓨터의 기본 사운드카드를 설정하게 될것이다. 드라이버가 실제컴퓨터에

어떻게 설치되있느냐에 따라 틀려지는데 어느쪽을 골라도 별 지장은 없다.
사용자 삽입 이미지

자 Hardware부분을 살펴봤고 이젠 Option부분을 보도록 하겠다. 캡쳐에서는 현재 OS가 실행되고

있는 상태여서 제어가 안되게 되있는데 general 부분에서는 vmware설정 파일등을 어디다 저장할

껀지 혹은 처음에 OS종류 선택할때처럼 종류를 다시 선택할수도 있다. OS가설치되있는 상태에서

예를들어 윈도우를 설치했는데 설정만 리눅스로 바꾼다는건 좋은 일이 되진 않을것이다.
사용자 삽입 이미지

Power관련 부분이다 특이한건 없고 전원 설정을 해주는 부분인데 특별히 수정할 부분은 없다
사용자 삽입 이미지

공유폴더를 설정할수있는 부분인데 실행하면 설정마법사가 뜬다. 하지만 굳이 이곳을 통해 지정해

줄필요는 없고 어짜피 가상머신내의 OS는 윈도우를 쓴다면 호스트OS에서 공유폴더를 설정해주고

네트워크에서 검색하면 사용할수있다.
사용자 삽입 이미지

다음은 스냅샷 설정 부분인데 스냅샷을 설정하면 suspend모드일때 vmware의 메인페이지에서

어느부분에서 suspend가 이뤄졌는지 조그마한 사진으로 오른쪽 밑부분에 보여주게된다. suspend

모드는 호스트 컴퓨터의 사양이 많이 좋지 않으면 이역시 디스크스왑을 많이 하므로 개인적으로

쓰지않는 기능이라 disable시켜뒀다. 쓰고싶다면 체크표시를 안하면 되고 스냅샷을 쓰는것이

기본설정이다.
사용자 삽입 이미지

Guest isolation부분을 보면 드래그앤드롭을 사용해서 Vmware내에서 실행되고 있는 OS에서

간편하게 파일 복사 및 이동을 실행할수 있게 해준다. 기본설정대로 놔두는 것이 편리하며

쓰고싶지 않다면 체크를 해제해주면 된다.
사용자 삽입 이미지

Advanced부분에선 마우스나 키입력감지속도에 대한 설정을 해줄수가 있다. normal로 놔두는것이

좋으며 high로 두면 그만큼 CPU사용량이 조금이라도 더 많아진다. 그아래의 메뉴들은 가속설정을

없애거나 vmware내에서 이뤄지는 process를 로그파일로 저장하게 하거나 하는 부분을 설정하는

부분으로 그다지 필요없는 부분이다. 그냥 놔둬도 상관없다.
사용자 삽입 이미지

여기까지 Vmware의 가상머신 세부 설정에 대해 알아봤다 다음강좌에선 VMware tools설치방법

(윈도우용기준) 과 virtual network settings에 대해 간단히 알아보고 Vmware활용에 대한 강좌를

마치도록 하겠다.
신고

앞에서는 Vmware의 에디션들에 대해서 간단히 살펴보았다. 이번엔 윈도우 운영체제 위에서

vmware를 설치하고 다른 운영체제를 VMware에서 설치하는 방법을 캡쳐화면과 함께 설명하겠다.

필자의 설치환경 : Windows Vista Ultimate K(32bit), P4 2.66G(506), 512*2EA(1GB RAM)
준비물 : 가상CD or DVD롬 생성프로그램(ex:daemon) , Vmware workstation(윈도우XP용)
            VMware를 설치할 드라이브의 파티션종류를(NTFS)로 설정(권장)

(1)설치
 설치 방법은 매우 쉽다. 경로를 설정해줘도 되고 기본경로로 설치해도 상관없다. vmware설치

 파일을 실행시켜 끝날때까지 Next만 눌러주면 설치가 끝난다. 설치후 vmware workstaion 아이콘을

 시키면 아래와 같은 화면이 나오게 된다.

(2)가상머신 만들기
 가상컴퓨터를 만들기 전에 몇가지 참고사항을 쉽게 설명하겠다. 생성방법엔 여러가지가 있는데

 물리적 하드디스크를 그대로 사용해서 가상머신을 실행하는 방법과 파일로 저장해서 쓰는방법이

 있는데 여기선 후자를 선택하도록 하겠다. 물리적 하드디스크를 사용해서 생성하면 읽기 속도는
 
 빠르겠지만 에러가 났을때 복구하기가 힘들수도 있기때문에 파일로 저장하는 법을 설명하려고

 한다. 파일로 저장했을경우 맘에 들지 않으면 지워버리면 끝이기때문에 매우 깔끔하고 편리하다.

 준비물에서 파일시스템을 NTFS로 설정하라고 한것은 FAT32 시스템에선 만약 파일로 저장한

 가상머신의 용량이 4gb를 넘어가면 파일을 여러개로 나눠서 저장하기 때문인데 필자는 한파일에
 
 몽땅저장하는 경우와 나눠서 저장하는 경우 모두 접해봤지만 체감속도의 차이는 어느것이 더빠르

 다고 하질 못하겠다. 어쨋든 여기서는 파일 한개에 모두 저장하는 방식을 사용할것이다. Vmware

 Workstation을 실행시키고 File메뉴로 가서 아래 그림과 같이 눌러줘서 새머신을 만들 준비를 한다.

사용자 삽입 이미지

옵션은 커스텀으로 지정한다. Typical로 지정할경우 상세한 옵션을 지정할수가 없다.
사용자 삽입 이미지

New옵션을 선택해준다. Legacy를 선택할경우 현재사용하는 Vmware의 신기능들을 제대로
사용하지 않는다.
사용자 삽입 이미지

여기서는 윈도우XP Professional(SP2)를 설치하도록 할것인데 OS종류를 고르면 된다.
VMware최신판에서는 Vista의 설치도 지원한다.
사용자 삽입 이미지

Vmware파일이 저장될 경로를 지정해준다. 마음에 드는 폴더로 고르면 된다. 선택은 자유~
사용자 삽입 이미지

CPU가 한개인지 두개인지를 설정해주는 부분이다. 듀얼코어는 Two를 선택하면 된다. 여기서

실제컴퓨터의 cpu가 싱글코어라면 Two를 선택하면 제대로 지원하지 못한다.
사용자 삽입 이미지

가상머신에서 쓸 메모리의 양을 할당해준다. 여기서 주의할점은 필자의 예를 들어 필자의 메모리는

1GB인데 비스타에서 많은 양을 소모하기때문에 만약 가상머신에 많은 양의 물리적 메모리를 할당

 해준다면 하드디스크를 사용해 가상메모리를 읽어들이기 때문에 양쪽모두가 느려진다.
 
 때문에 이럴경우 가상머신에 권장사항만큼의 메모리만 지정해주면 무거운 작업을 하지 않는 이상

 오히려 속도 향상을 불러일으킨다. 여기선 256Mb를 지정해줬고 만약 메인OS가 많은양의 물리적

 메모리를 소모하지 않고 충분한 양의 물리적 메모리가 설치된 상태라면 크게 할당하면 속도향상을

 기대할수있다.
사용자 삽입 이미지

네트워크설정을 해줄 부분이다. 포트부분에 대해서는 나중에 VMware상세설정방법에 대해서 설명

하도록 하겠다. 어쨋든 bridged network를 선택한다면 실제컴퓨터의 IP를 직접적으로 할당해 주는

방법인데 더 설정해야할부분도 있고 귀찮은 면이 있어서 여기선 NAT을 선택하도록 하겠다. NAT을

이용해서 포트포워딩을 사용하면 가상머신에서 가상웹서버를 만들수도 있고 리눅스에서 웹서버

설치하기 강좌에서 설명한바 있다.
사용자 삽입 이미지

Adapter type을 지정해주는 부분인데 여기선 bus logic을 선택하였다. 윈도우의 경우 별상관없으나

리눅스설치의 경우 커널(kernel)의 상태에 따라 틀린데 대략 LSI logic을 많이 사용한다.
사용자 삽입 이미지

가상머신이 저장될 방법을 지정하는 순서이다. Create a new virtual disk를 설정하면 가상머신을

파일로 저장하게 되며 안전한 방법이다. 두번째는 원래 가지고 있던 가상머신 디스크를 사용해야

할때 사용할 메뉴이고 세번째는 직접 물리적 하드를 읽어들이는 읽기속도가 약간더 빠를지 모르지만

위험한 설정법이다. 여기선 파일로 저장하는 방식을 사용하도록 한다. (필자는 새가슴이라 세번째

설정법은 한번도 사용해본적이 없다..ㅡㅡ;)
사용자 삽입 이미지

디스크 타입을 지정해줄 순서인데 IDE를 선택한다 다른 OS를 설치할때 권장사항이 SCSI로 나올

때가 있는데 OS설치가 불가능해 지는 경우가 있으므로 IDE를 선택하여 설치하도록 한다.
사용자 삽입 이미지

저장될 파일의 크기를 지정해주는 부분이다. disk size를 지정해주면 마치 물리적 하드디스크의

실사이즈 처럼 설정을 해주게된다. 쉽게 설명해서 100GB로 설정했다면 가상머신의 가상하드디스크

의 용량이 100Gb가 되는것이다. 물론 무작정 크게 잡을순없고 실제 하드디스크의 용량형편에

그리고 활용용도에 맞춰 가늠잡아 용량설정을 해주면 된다. 두번째 메뉴는 가상머신의 안정성은

높아질수있지만 용량을 많이 잡아먹는다..추천하지 않는 방법이고 세번째는 앞서 설명했던것처럼

저장될 파일을 2GB씩 나눠서 저장하고 읽어들이는 방식이다. 예를 들어 디스크를 8GB로 설정하고

이것저것 설치했는데 가상머신의 디스크가4GB 정도 사용했다고 하면 두개의 파일로 나눠서 저장

을 하게된다. 만일 실제PC의 하드디스크 파일 시스템이 FAT32인데 이것을 설정해주지 않았다고

해서 걱정할 필요는 없다. 나중에 쓰다보면 자동으로 나눠서 저장해준다.
사용자 삽입 이미지

가상머신이 저장될 폴더를 지정해주는 곳이다. 한참 앞서 저장했던곳이랑 같은 폴더에 저장하는것이

깔끔하고 좋다.
사용자 삽입 이미지

여기까지 가상머신의 틀이 갖춰졌다. 이제는 마치 실제 컴퓨터처럼 부팅을 해서 사용할수 있게

된것이다. 램이나 다른 상세 설정법은 다른 강좌에서 진행할 것이지만 처음 설정할때 실수했다고

해서 다시만들 필요는 없고 다시 설정해 줄수가 있다.
사용자 삽입 이미지

여기선 xp를 설치할것이기때문에 가상머신의 cd-rom을 지정해주었다. 데몬을 설치하거나 물리적

CDrom 혹은 DVDrom 의 드라이브 명을 설정해줄수 있다. Auto detect로 설정하기 보다는 데몬으로

만들어진 드라이브나 실제물리적 cdrom 혹은 dvdrom 장치의 드라이브명을 설정해주면 되겠다.

혹은 ISO이미지를 데몬으로 읽지 않고 직접 사용할수도 있다(Use ISO image)를 선택하면 된다.
사용자 삽입 이미지

오른쪽 화살표 모양을 클릭하게 되면 가상머신이 실행되게 되고 실제 컴퓨터 처럼 바이오스 초기

화면을 볼수있다. 아래사진은 가상머신에 윈도우xp가 설치 완료되어 실행중인 모습이다.

바이오스에서 cdrom부팅을 지정해줄수있으나 그대로 놔둬도 어짜피 가상하드디스크가 포맷이

안된상태이기 때문에 CDrom부팅이 이뤄지고 xp를 설치할수있게 될것이다. 다음 상세설정 강좌에서

이부분에대해서 소개하도록 하겠다.
사용자 삽입 이미지

아래사진은 xp가 비스타위에서 vmware를 통해 부팅된 모습을 보여주고 있다. 사용자의 실제pc사양

이 매우훌륭하다면 두개 세개 이상의 가상머신위에 설치된 OS를 켜두고 탭을 클릭하여 다중작업을

할수도있다. 다음강좌에선 vmware tools와 vmware workstation의 상세설정법에 대해알아보도록

하겠다.
사용자 삽입 이미지
신고