레이블이 apache인 게시물을 표시합니다. 모든 게시물 표시
레이블이 apache인 게시물을 표시합니다. 모든 게시물 표시

2012-10-31

java Framework]윈도우에서 톰캣5.0과 아파치2.0 그리고 jk2 연동하는 방법



<<윈도우에서 톰캣5.0과 아파치2.0 그리고 jk2 연동하는 방법   >>


우선 다음과 같은 S/W가 필요하다.
Apache2.0.45
J2SDK 1.4.1_02 (http://httpd.apache.org/download.cgi에서 apache_2.0.46-win32-x86-no_src.msi를 다운로드 )
Jakarta Tomcat4.1.24 (http://jakarta.apache.org/builds/jakarta-tomcat-4.0 /release/v4.1.24/bin/에서 jakarta-tomcat-4.1.24.exe 또는 jakarta-tomcat-4.1.24-LE-jdk14.exe를 다운로드합니다. J2SDK 1.4가 이미 설치되어 있다면 LE 버전만 받으면 됩니다. 그렇지 않다면 jakarta-tomcat-4.1.24.exe를 다운로드)
mod_jk2 (http://jakarta.apache.org/builds/jakarta-tomcat- connectors/jk2/release/v2.0.2/bin/win32/참고 윈도우용 mod_jk2-2.0.43.dll)
필 요한 소프트웨어를 모두 구했으면 각각을 설치한다. 가급적이면 설치는 J2SDK부터 설치하는 것이 좋다. 그 다음 아파치나 톰켓을 차례대로 설치하면 된다. JK2는 아파치 설치 후, modules 디렉토리에 mod_jk2-2.0.43. dll 파일을 복사하면 된다.


환경 설정

1) JAVA_HOME

JDK가 설치된 디렉토리를 JAVA_HOME 이라는 변수이름으로 환경변수에 추가한다. 바탕화면의 '내 컴퓨터'를 선택하고 팝업메뉴를 띄워 등록정보에 들어간 다음 ‘고급→환경변수’를 선택하면 된다. 모든 사용자에 관계없이 JAVA_HOME이 유효하게 하려면 시스템 변수에, 자신의 계정에만 유효하게 하려면 사용자 변수쪽에 추가하면 된다. 변수명은 JAVA_HOME으로 하고 변수값은 JDK를 설치한 디렉토리를 지정해주면 된다(예. C:\J2SDK_1.4.1_01). BIN 디렉토리까지 설정해주는 것이 아님을 기억하자.

JAVA_HOME 변수의 경우는 TOMCAT에서 JSP 컴파일 등을 할 때 사용할 뿐만 아니라 다른 자바관련 툴들(ANT같은)에서도 이 변수를 사용하므로 어떻든 간에 한번은 지정하는 것이 작업에 도움이 될 것이다.

2) CLASSPATH

TOMCAT 에서는 JSP를 컴파일 할 필요가 있을 때 JAVA_HOME에서 설정된 패스를 기준으로 lib 디렉토리를 뒤지거나 CLASSPATH 환경변수 설정을 참고해서 컴파일에 사용할 패키지인 servlet.jar를 찾는다. 따라서 servlet.jar를 $JAVA_HOME/jre/lib/ext 같은 곳에 넣어주거나 servlet.jar가 포함되어 있는 TOMCAT의 $TOMCAT_HOME/lib 디렉토리에 CLASSPATH 설정을 해주면 된다. 환경변수 설정하는 요령은 앞의 JAVA_HOME의 그것과 동일하다.

3) PATH

자바소스 컴파일에는 javac.exe가 사용되기 때문에, 이를 시스템 어디에서나 사용할 수 있도록 환경변수의 PATH에다가 $JAVA_HOME/bin 디렉토리를 추가해주면 된다. 자바프로그래머라면 대부분 이미 추가해 놓았으리라 생각한다.

4) 아파치 환경설정 - httpd.conf 와 workers2.properties

$APACHE/conf 디렉토리에 있는 httpd.conf 파일을 열고, LoadModule 이라고 되어있는 부분들을 찾아서 적당한 줄에다가 다음과 같이 입력한다.
LoadModule jk2_module modules/mod_jk2-2.0.43.dll

그 후에 DocumentRoot 항목을 찾아서 $TOMCAT_HOME/webapps과 같은식으로 지정해준다.
예) DocumentRoot "c:\Program Files\Apache Group\Tomcat 4.1\webapps"

그리고 아래쪽에 있는 Directory 항목 역시 동일하게 수정해준다.
예) <Directory "C:\Program Files\Apache Group\Tomcat 4.1\webapps">

다 끝냈으면 이번에는 workers2.properties를 편집한다. 이 파일은 기본적으로 아파치에 포함되지 않으므로 conf 폴더 내에서 찾을 수가 없다. 따라서 직접 만들어줘야 하는데 $APACHE_HOME/conf에다가 workers.properties 파일을 만들고 다음의 내용을 복사해넣고 저장하면 된다.
# Define the communication channel
[status:]
[uri:/jkstatus/*]
group=status:
[shm:]disabled=1
[channel.socket:localhost:8009]
info=Ajp13 forwarding over socket
tomcatId=localhost:8009

# Web Applicaton을 설정
[uri:/examples/*]
info=Map the whole webapp

위 에서 언급한 바와 같이 workers2.properties 파일은 $APACHE/conf에 있어야만 아파치가 읽어들일 수 있기 때문에 특히 파일의 경로에 주의해야 한다. ($TOMCAT_HOME/conf 가 아님)

5) 톰캣 환경설정 - jk2.properties 과 server.xml

$TOMCAT_HOME/conf/jk2.properties 파일을 열고 편집하면 되는데 내용을 잘 모른다면 다음의 셋팅예제를 그대로 복사해 써도 무방하다.
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.

# Set the desired handler list
handler.list=apr,channelSocket,request,shm
# Override the default port for the socketChannel
# Set the default port for the channelSocket
channelSocket.port=8009

# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
# shm.file=${jkHome}/work/jk2.shm

# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:

# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so

# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess

# Dynamic library
serverRoot= "C:/Program Files/Apache Group/Tomcat/webapps "

완료했으면 이번에는 server.xml을 편집한다. $TOMCAT_HOME/conf/server.xml 파일을 열고 아래의 부분을 찾아 주석처리 하거나 삭제한다. 주석처리는 ‘<!-’로 시작해서 ‘->’로 끝내면 된다. 아래부분은 TOMCAT에 포함되어 있는 Coyote 웹서버에 연결하는 커넥터인데, 여기서는 웹서버로 아파치를 사용할 것이므로 필요없다.
<!--
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
-->

위의 내용이 있는 곳에서 조금 아래쪽을 보면 다음과 같은 부분이 있다. org.apache.coyote.tomcat4.CoyoteConnector라는 이름의 Connector가 mod_jk2로 연결할 때 사용하는 부분으로, 아래쪽의 org.apache.ajp.tomcat4.Ajp13Connector가 mod_jk를 사용할 때 쓰는 부분이므로 mod_jk 부분(아래쪽)을 주석 처리하도록 한다.
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8009" minProcessors="5" maxProcessors="150"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="20000"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
-->

서버 구동 확인

톰캣과 아파치를 실행시킨 후 다음의 주소를 입력해 본다.
http://localhost/examples/servlets/index.html
http://localhost/examples/jsp/index.html
제대로 servlet 또는 jsp의 예제 페이지가 나타나고 각 예제들이 올바로 실행된다면 설치가 올바로 이루어진 것이다. 만약 jsp 나 서블릿 파일이 다운로드 된다거나 소스코드가 보인다거나 404 에러 등이 발견되면 어디에선가 셋팅이 잘못된 것이다. 클래스패스의 문제, servlet.jar 패키지의 부재, 잘못된 JDK컴파일러 설치, 설정파일 편집 오류 등 다양한 문제가 있을 수 있다. 아파치의 톰캣의 로그파일과 설치메뉴얼을 보면서 약간의 노력을 더 기울인다면 무난하게 해결 할 수 있을 것이다.

java Framework/Linux 에서 APM(apache2.0.48)+tomcat(5.0.16) 연동하기(mod_jk2)



[펌] Linux 에서 APM(apache2.0.48)+tomcat(5.0.16) 연동하기(mod_jk2) | Unix/Linux2005/03/23 01:10
 
http://blog.naver.com/mickey109/60011163411
출처블로그 : mWorld - ccm 짜집기 java/apache/linux/php/mysql/

Linux 에서 APM(apache2.0.48)+tomcat(5.0.16) 연동하기(mod_jk2)

TOC ( Table of Content )
0.overview
1.mysql 설치
2.apache (2.0.48) 설치
3.php 설치
4.APM 연동
5.zend optimizer 설치
6.jdk의 설치
7.tomcat (5.0.16)설치
8.jk2( jakarta-tomcat connector ) 설치
9.apache 와 tomcat의 연동
10.사용자 계정에서 jsp 사용 가능하도록 context listener 추가하기
epilog
0.OverView
-- 이 글의 목적은 apache2.x.x 버전과 tocmat5.x.x 버전의 연동을 주
목적으로 하여 작성된 글이다. 따라서 APM 연동보다는 아파치 톰캣 연동에
그 비중을 두고 있으며, 이 글을 읽는 사람들은 어느정도 linux에 대한 지
식(프로그램 설치시 rpm 설치가 아닌 소스 컴파일 설치) 을 갖추었다고
가정하고 글을 진행하도록 한다.
(주1. 본 문서는 각종 사이트를 돌아다니며 읽은 글들의 조합으로 이루어져
있습니다.. 최대한 출처를 밝히겠지만 미처 밝히지 못하는 부분에 대해 원저자분
들께 대해 죄송스럽게 생각합니다.)
(주2. 존칭은 생략하도록 하겠습니다. (--) (__) )
(주3. 소스를 컴파일 하여 프로그램을 설치 하는 것이나 apache와 tomcat의 연동은
버전과 시스템에 따라 다를 수 있습니다. 따라서 이 문서를 보고 따라 하신 후의 책임은
지지 않습니다.)
APM 연동은 다음 site를 참조한다
 http://ho.dunggi.net/study_linux ( apache1.xx apache2.xx 버전에 대한 연동이 모두 나옵니다.)
1.mysql 설치
-- http://www.mysql.com 사이트에서 mysql을 다운 받는다. 안정된 버전일 경우 최신 버전을 다운 받는다.
-- 받은소스를 /usr/local/src 로 이동한다.(소스의 위치는 각자 편한곳으로 한다.)
-- 기존에  rpm으로 mysql이 설치 되 있었다면 삭제한다.

 ( rpm -qa | grpe mysql 하면 rpm으로 설치된 mysql을 확인 할 수 있고, rpm -e --nodeps mysql.xxx 하면
 삭제가 가능하다.)
-- tar xvzf mysql.xxx.tar.gz 명령으로 소스를 푼다. (xxx 는 버전을 뜻합니다.)
-- mysql.xx.xx 라는 디렉토리가 생성된다.
-- 생성된 디렉토리로 이동하여
 ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euc_kr
 라는 명령으로 mysql소스를 configuration 한다.
 (--prefix는 mysql이 생성될 디렉토리, localstatedir은 mysql의 data가 위치할 경로, charset은 한글 사용을
 위한 옵션이다. 자세한 사항은 ./configure --help 명령을 통해 확인한다.
 에러가 없다면

 make

 make install

 명령을 통해 mysql을 설치완료 한다.
 여기 까지 에러가 없다면 /usr/local/mysql 이란 디렉토리가 생성되고 그 안에 mysql 실행을 위한 명령어
 들과 library가 생겨난다. ( mysql 설치 완료  하지만 끝이 아니다!!)
-- /usr/local/mysql/bin 으로 이동한다.
 ./mysql_install_db
 라는 명령어를 실행시켜준다.(주의! 이 명령어는 한번만 실행시킨다. 여러번 실행시킬 경우 에러가 발생할 수 있다.)
-- /usr/local/mysql/share/mysql 로 이동하면 mysql.server 라는 쉘 스크립트를 볼 수 있다.
 ./mysql.server start

 라는 명렁을 통해 mysql을 실행시킨다. /usr/local/mysql/bin 으로 이동하여 mysql 명령어를 치면 mysql에
 접속할 수 있다. 어느곳에서든지 mysql 명령어를 수행시키길 원한다면 /etc/profile 의 PATH에 추가해 주면 된다.
-- 시스템 부팅과 동시에 mysql을 수행시키고자 할 경우 /etc/rc.d/init.d 디렉토리로 이동하여
 ln -s /usr/local/mysql/share/mysql/mysql.server myslqd
 라는 명령어를 통해 링크를 걸고 자신의 run level을 확인하여 해당 run level 디렉토리로 이동하여
 (run level이 3이라면 /etc/rc.d/rc3.d  , run level이 5라면 /etc/rc.d/rc5.d )
 ln -s /etc/rc.d/init.d/mysqld S80mysqld
 라는 링크를 걸어주면 시스템의 시작과 동시에 mysql서버를 구동시킬 수 있다.
 ( 해당 디렉토리로 이동하면 SxxXXX 와 KxxXXX 라는 많은 파일들이 있을 것이다. S는 시스템이 시작할 때
 수행될 명령들이고 K는 시스템이 종료될 때 수행될 명령들이다. 따라서 SxxXXX라는 명령으로 링크를 건다
 S뒤의 숫자는 기존에 있던 것들과 겹치지 않는 수로 S99local 보단 작게 한다
 자신의 run level 확인은 /etc/inittab 파일을 열어 보면 id:x:initdefault: 라는 문장을 찾을 수 있다.
 여기서 x에 해당하는 숫자가 해당 시스템의 default run level이다. 보통 3 또는 5로 지정되는데
 3이 일반적인 콘솔로 부팅시에 사용되고, 5는 X-window로 부팅될때 사용된다. 그 외의 run-level에 관한 사항은
 각자 공부하길 바란다. -- 솔직히 필자도 잘 모른다. --;;;)
-- 이로써 mysql 설치는 완료된다.

2.apache2의 설치
-- 기존에 rpm package로 설치된 아파치를 삭제한다.(mysql의 삭제와 동일)
-- http://httpd.apache.org/download.cig  httpd-2.0.48.tar.gz 을 다운받는다.
-- 소스를 /usr/local/src 로 이동한후 tar 명령을 통해압축을 푼다.
-- 소스 디렉토리로 이동한 후

 ./configure --prefix=/usr/local/apache2 --enable-rule=SHARED_CORE --enable-shared=max --enable-so --enable-module=so
 명령을 통해 configuration. (./cofigure --help를 통해 각 옵션을 확인하는 것도 좋습니다. ^^)
 make
 make install 하여 아파치를 설치한다.
-- /usr/local/apache2/bin 디렉토리로 이동하여
 ./apachectl start
 명령을 통해 아파치를 실행시킨다. 브라우저로 해당 URL에 접속하여 에러가 없다면 아파치 설치 성공!
3.php의 설치
-- 기존의 rpm package 제거
-- http://www.php.net/downloads.php 에서 php4.3.4.tar.gz을 다운 받는다.
-- /usr/local/src로 소스 이동 후 tar로 압축을 푼다.
-- 소스 디렉토리로 이동하며
 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-apache-install=/usr/local/src/httpd-2.0.48 --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/apache2/conf --with-zlib-dir=/usr/lib --with-zlib --enable-track-vars=yes --enable-modules=so --disable-debug --enable-mbstring
 명령을 통해 configuration. --with-apache-install 옵션뒤의 디렉토리는 아파치 소스 디렉토리(각자 자신이 압축을
 해제한 디렉토리로 명시한다.(이 문서를 따라 했다면 /usr/local/src/httpd-2.0.48) --with-mysql옵션뒤의 경로는 mysql

 이 설치된 디렉토리(/usr/local/mysql)를 기술한다. 옵션이 많아서 그런지 시간이 조금 걸린다.)
 에러가 없다면
 make
 make install
-- php의 소스 디렉토리로 이동하여(/usr/local/src/php4.3.4)
 cp php.ini-dist /usr/local/apache2/conf/php.ini
 명령을 수행한다.
-- php의 설치가 완료
4. apache와 php의 연동
-- /usr/local/apache2/modules 디렉토리로 이동해 보면 libphp4.so 란 파일이 있을 것이다. 없다면 위의 과정을 천천히
 다시 수행한다 --;;
-- /usr/local/apache2/conf 에 httpd.conf 파일을 열어보면 220라인 근처에
 LoadModule  php4_module     modules/libphp4.so
 라는 문장이 있을 것이다.
 DirectoryIndex 를 찾아 index.php를 추가 시킨다.
 (ex. DirectoryIndex index.html index.php index.htm )
 그리고 880라인 근처에 보면 AddType 이란 것이 있을 것이다. 그곳에
 AddType application/x-httpd-php .php
 AddType application/x-httpd-php-source .phps
 라는 두 문장을 추가 시켜준다.
-- /usr/local/apache2/bin 으로 이동한 후
 ./apachectl start ( 이미 구동중이라면 ./apachectl restart)
 한 후
 test.php 라는 파일을 아래와 같이  작성하고
 <?
  phpinfo();
 ?>
 브라우저로 읽어서 php 설정 정보에 대한 테이블이 나오면 APM 연동은 성공!!
 만일 소스코드가 그대로 보이거나 다운로드가 되면 연동에 실패한 것이다.
# 이하의 부분은 http://kltp.kldp.org/stories.php?topic=14 의 예크디엠님 글을 참조한다.
5.Zend optimizer의 설치  (옵션. 필수사항은 아니다. Zend는 php 가속기이다.)
-- http://zend.com/store/free_download.php?pid=13 에서 리눅스용 소스파일을 다운로드 받는다.
-- /usr/local/src/로 이동후 tar로 압축 해제
-- 소스 디렉토리로 이동하여
 ./install.sh
 를 수행하면 GUI 인터페이스의 설치 환경이 나타난다. apache의 설치 경로등을 묻는데 정확히
 기입하도록 한다. 설치는 /usr/local/Zend 디렉토리로 자동으로 이루어 진다.
 설치가 이루어 지면 /usr/local/apache2/conf/php.ini 파일은 php.ini-zend_optimizer.bak 으로 변경되고

 php.ini 파일이 /usr/local/Zend/etc 안에 생성되며 /usr/local/apache2/conf 디렉토리 안에는

 /usr/local/Zend/etc/php.ini 의 symbolic link 파일이 만들어져 실제 php.ini 파일과 연결됩니다.
-- Zend optimizer 설치 완료
6.jdk의 설치
-- http://java.sun.com/webapps/download/DisplayLinks 에서 j2sdk-1_4_2-nb-3_5_1-bin-linux 를 다운 받는다.
 (확장자가 tar.gz 이 아니라고 당황하지 말자. 필자는 솔직히 당황했었다 --;;)
-- 소스를 /usr/local로 이동시킨다.
 sh j2sdk-1_4_2-nb-3_5_1-bin-linux.bin
 명령어를 수행한다.
 ( chmod 755  j2sdk-1_4_2-nb-3_5_1-bin-linux.bin 명령후  ./j2sdk-1_4_2-nb-3_5_1-bin-linux.bin 도 가능할 것 같다.)
-- /usr/local/j2sdk-1_4_2 라는 디렉토리가 생겼을 것이다. (확실치는 않다. --;; 비슷한게 생겼을 것이다.)
-- 편의를 위해 /usr/local 디렉토리에서
 ln -s /usr/local/j2sdk-1_4_2  java
 라는 링크를 걸어준다
-- /etc/profile의 PATH에 /usr/local/java/bin 을 추가해 놓으면 어디서든지 java명령이 수행가능!
--jdk 설치 완료
7.tomcat의 설치
-- java가(jdk) 미리 설치 되어 있어야 한다.
-- http://jakarta.apache.org/site/binindex.cgi 에서
 jakarta-tomcat-5.0.16.tar.gz을 다운 받는다.
-- 해당 소스를 /usr/local 로 이동한 후 tar로 압축을 해제한다.
-- 톰캣은 컴파일없이 압축만 해제하면 바로 실행가능 상태가 된다.
-- 편의를 위해  /usr/local 디렉토리에서
 ln -s /usr/local/jakarta-tomcat-5.0.16 tomcat
 명령을 통해 링크를 걸어 놓는다.
-- /usr/local/tomcat/bin 으로 이동하여
 ./catalina start
 명령을 수행한다.
 JAVA_HOME=/usr/local/java
 CATALINA_HOME=...
 ...
 ..
 이렇게 4줄이 뜨면 성공이다. 혹시 에러가 나면서
 JAVA_HOME이 정의 되지 않았다는 메시지가 출력될 경우
 /etc/profile 을 열고
 JAVA_HOME=/usr/local/java
 라는 문장을 추가 시키고 저장한 뒤
 source profile
 이라는 명령을 수행한 후 tomcat을 가동시킨다.
 에러 없이 톰캣이 뜨면
 http://xxx.xxx.xxx.xxx:8080 으로 접속하여
 고양이 그림을 볼 수 있다면 톰캣 설치에 성공한 것이다.
-- tomcat 설치 완료
8.jk2 설치
-- http://jakarta.apache.org/site/sourceindex.cgi 에서 jakarta-tomcat-connectors-jk2-src-current.tar.gz 다운
-- /usr/local에서 tar 명령을 통해 압축을 해제한다.
-- /usr/local/jakarta-tomcat-connectors-jk2-src-current/jk/native2 로 이동한다.(정확치는 않다. 아무튼 native2 디렉
 토리로 이동한다. -- 제가 작업한 머신에서 글을 작성하는게 아님을 이해해 주십시요)
-- 해당 디렉토리에서
 ./configure --with-apxs2=/usr/local/apache2/bin/apxs
 를 수행한다.(주. apxs는 perl 스크립트 입니다 perl 5.0 이상이 해당 머신에 설치되어 있어야 합니다.)
 make
 를 하면  /usr/local/jakarta-tomcat-connectors-jk2-src-current/jk/build/jk2 /apache2 디렉토리에
 mod_jk2.so 파일이 생성된다. 만일 없다면 .... 이땐 정말 에러다 --;;
 만일 mod_jk2.so 파일이 존재하지 않는다면 jk2 설치부터 make 까지의 과정을 다시 해본다.
 ( 이 부분에서 막혀서 3일간 고생했습니다. mod_jk2.so 파일이 생성이 안되서... 결국 make를 통해 mod_jk2.so 생성은
 포기를 하고 꽁수를 썼습니다. 이 부분이 하이라이트!!)
 만일 재시도 했는데도 생기지 않는다면 ...
 (저의 경우 libtool --mode=install ... 하면서 warning이 뜨더군요. 예크디엠님의 글을 보고 추측하건데
 jk2가 컴파일 되면서 libtool을 찾는 과정에서 문제가 생기는 듯합니다.)
 해당 디렉토리에 mod_jk2.xx 라는 많은 파일들이 존재할 것이다. 여기서
 gcc -shared -o mod_jk2.so *.o
 라는 명령을 통해 강제 컴파일 하여 공용 모듈을 생성해낸다.!!!!
 cp mod_jk2.so /usr/local/apache2/modules
 명령을 통해 아파치 모듈 디렉토리로 복사한다.
9. apache와 tomcat의 연동
-- /usr/local/apache2/conf/httpd.cnof 파일을 열어
 DirectoryIndex를 찾아 index.jsp를 추가한다.
 ( ex) DirectoryIndex index.html index.php index.jsp )
 LoadModule  jk2_module  modules/mod_jk2.so
 를 추가한 후 저장하고 /usr/local/apache2/bin 디렉토리로 이동하여
 ./apachectl configtest
 를 수행하여 Syntax Ok 가 뜨면 OK!!
-- /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.2-src/jk/conf/workers2.properties 파일을 /usr/local/apache2/conf/workers2.properties.bak
 
 으로 복사한다.
-- 편집기로 worker2.properties 파일을 만들고 다음과 같이 편집한다.
 # Shared memory handling. Needs to be set.
 [shm]
 file=/var/log/httpd/shm.file
 size=1048576
 # Example socket channel, explicitly set port and host.
 [channel.socket:localhost:8009]
 port=8009
 host=127.0.0.1
 # define the worker
 [ajp13:localhost:8009]
 channel=channel.socket:localhost:8009
 # Announce a "status" worker
 [status:status]
 # Uri mapping
 [uri:/jsp-examples/*]
 worker=ajp13:localhost:8009
 [uri:/servlets-examples/*]
 worker=ajp13:localhost:8009
 [uri:/tomcat-docs/*]
 worker=ajp13:localhost:8009
 [uri:/*]
 worker=ajp13:localhost:8009
 [uri:/status/*]
 worker=status:status
 ( worker2.properties.bak 파일은 나중에 공부하기 위해 복사해
 놓은 것입니다. 위의 내용만 있어도 연동에는 충분합니다.)
 위의 내용을 대~~충 분석(??)해 보면 (솔직히 잘 모른다. --;;)
 shm 부분은 공유 메모리를 위한 설정이고, channel은 연동시 사용할 port와 host를 설정한다.
 당연히 80포트로 들어온 놈들은 다른 곳이 아닌 자기자신(127.0.0.1 -- loopback)에게 8009번
 포트를 이용하여 tomcat에게 넘긴다는 얘기 같다. (확신은 없다. --;;)
 uri 부분은 context mapping 관련이다. 가장 주목할 것은 [uri:/*] 해당 URL로 들어오는 모든(*)
 것들을 8009번 포트로 tomcat에게 넘긴다. 이는 나중에 보충 설명한다.
 마찬가지로 나머지 uri 부분은 해당 URL로 /jsp-examples 라는 context(??)들 달고 오는 모든(*) 것들을
 tomcat에게 넘긴다는 것이다.
 status는 jk-connector의 설정 보여준다.
 연동뒤에 http://xxx.xxx.xxx.xxx/status 하면 설정상황을  볼 수 있다.
-- /usr/local/tomcat/conf/jk2.properties 파일을 다음과 같이 수정.
 ## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
 ## WHEN YOU EDIT THE FILE.
 ## COMMENTS WILL BE _LOST_
 ## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
 # Set the desired handler list
 # handler.list=apr,request,channelJni
 #
 # Override the default port for the socketChannel
 channelSocket.port=8009
 # Default:
 # channelUnix.file=${jkHome}/work/jk2.socket
 # Just to check if the the config is working
 # shm.file=${jkHome}/work/jk2.shm
 shm.file=/var/log/httpd/jk2.shm
 # In order to enable jni use any channelJni directive
 # channelJni.disabled = 0
 # And one of the following directives:
 # apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
 # If set to inprocess the mod_jk2 will Register natives itself
 # This will enable the starting of the Tomcat from mod_jk2
 apr.jniModeSo=inprocess

-- 이로써 모든 설정은 완료 됩니다.
-- 톰캣과 아파치가 구동중이라면 각각 해당 디렉토리의 /bin 으로 이동
 하여
 ./catalina.sh stop
 ./apachectl stop
 명령을 통해 중지 시킨다.
-- 이제 연동이 됐는지 확인.
 톰캣을 먼저 띄우고 다음에 아파치를 띄운다.
 ./catalina.sh start
 ./apachectl start
-- 브라우저로 해당 URL에 접속하여

 http://xxx.xxx.xxx.xxx/
 에 접속한다. 톰캣 메인 화면이 뜨면 OK!
 http://xxx.xxx.xxx.xxx/jsp-examples
 에 접속하여 각각의 jsp 예제파일들이 문제 없이 수행되면 OK!

-- 접속을 하면 아파치의 DocumentRoot가 아닌 tomcat main page 가 뜨는것에 의아해 하는 분들도 계실지
 모른다.(사실은 내가 그랬다 --;;) 그 이유인 즉은..
 worker2.properties 파일에서 [uri] 설정에
 [uri:/*]
 worker=ajp13:localhost:8009
 이 부분 때문이다. 즉 해당 URL로 들어오는 모든(*) 것들에 대해 톰캣에게 넘겨 주는 것이다.
 아파치의 직무 유기다. --;;
 jsp 파일만을 tomcat에게 넘기기위해서는
 저 부분을
 [uri:/*.jsp]
 worker=ajp13:localhost:8009

 라고 수정하면 된다. 하지만 필자가 저렇게 했을 때 숱한 403 에러를 만났다. --;;
  저렇게 설정을 하고 나서 브라우저로 보면 아파치의 DocumentRoot로 창이 열린다.
 문제는 DocumentRoot 밑에 test.jsp를 수행하면 tomcat으로 가지 못한다는 것이다.
 신기하게도 http://xxx.xxx.xxx.xxx/jsp-examples 하면 이것은 또 잘 열린다. --;;
 아무튼.. 저걸 해결하고자 기껏 필자가 생각해 낸것은
 아파치의 DocumentRoot와 tomcat의 ROOT를 같은 곳으로 설정 하는 방법이다.
 /usr/local/tomat/conf/server.xml 을 열어보면
 <!-- Tomcat Root Context -->
 <Context path="" docBase="ROOT" debug="0"/>
 라는 부분이 있다.
 이부분을 다음과 같이 수정한다.
 <Context path="" docBase="/usr/local/apache2/htdocs" debug="0" reloadable="true"/>
 물론 "/usr/local/apache2/htdocs" 는 각자 자신의 시스템의 DocumentRoot로 설정 하면 될 것이다.
 이렇게 설정을 하고 톰캣을 다시 띄우고, 아파치를 다시 띄우니..

 드디어 아파치의 DocumentRoot 밑에 있는 jsp 파일을 인식했다!!
 즉 , http://xxx.xxx.xxx.xxx/test.jsp 가 열리는 것이다.
 물론 깔끔한 방법은 아니다.!! tomcat의 context 추가에 대한 지식이 부족하여 저렇게 한 것이다.
 http://www.apache-korea.org/tomcat/tomcat-5.0-doc/config/context.html (영문)
 http://jakarta.apache-korea.org/tomcat/tomcat-4.1-doc/config/context.html (한글)
 ( 관심 있는 분들은 위 사이트에 접속하여 context에 관한 부분을 더 공부 하시길 바랍니다.)
 이로써 아파치와 톰캣의 연동은 성공!! 한 것이다.
10. 사용자 계정에서 jsp 사용하기
 http://jakarta.apache-korea.org/tomcat/tomcat-4.1-doc/config/host.html#User%20Web%20Applications
 위 사이트를 참조 하세요
-- 위처럼 연동이 됐다고 해서
 http://xxx.xxx.xxx.xxx/~xxx/test.jsp
 라고 했을 때 jsp 파일을 톰캣이 처리해 주지는 못한다.
 tomcat의 server.xml 파일에 Listener를 등록해 주어야 한다.
 /usr/local/tomcat/conf/server.xml 파일을 열고
 <Host name="localhost" ...> 이 부분을 찾아 아래에 다음과 같이 추가한다.
 <Listener className="org.apache.catalina.startup.UserConfig" directoryName="public_html"

 userClass="org.apache.catalina.startup.PasswdUserDatabase"/>
 이것은 linux 시스템의 경우 /etc/passwd 파일을 사용한다고 한다. 정확히 어떻게 동작하는 것은
 필자도 이해하지못했다. 다만 이렇게 설정을 한후 ,톰캣과 아파치를재시동하고
 http://xxx.xxx.xxx.xxx/~xxx/test.jsp
 를 열어보면 드디어 감격적인 jsp page를 볼 수 있다.!!

ps.  tip아닌 tip을 말씀드리면 ..모두 아실거라 생각됩니다만... 소스 다운 받으실 때
일일이 ftp로 넘기지 마시고 리눅스 console 상에서 wget을 통해 받으면 쉽습니다.
링크가 걸린 다운로드 파일에서 마우스 오른쪽 버튼 클릭하셔서 등록정보 를 클릭하시면
주소가 나옵니다 이걸복사해서
 wget http://http://mirror.apache.or.kr/httpd/httpd-2.0.48.tar.Z
 이런식으로 직접 콘솔에서 다운받으실 수 있습니다.

아파치와 톰캣의 연동후 실행 순서는 톰캣 먼저 띄운후에 아파치를 띄우게 됩니다. 이걸 리눅스
시스템 부팅과 동시에 하려면 mysql 을 하셨던것 처럼  /etc/rc.d/init.d로 이동하신 후
 아파치)
 cd /etc/rc.d/init.d
 ln -s /usr/local/apache2/bin/apachectl httpd
 run level 디렉토리로 이동 후 (/etc/rc.d/rc3.d --run level 3인 경우)

 ln -s /etc/rc.d/init.d/httpd S75httpd

 톰캣)
 cd /etc/rc.d/init.d
 ln -s /usr/local/tomcat/bin/catalina.sh tomcatd
 cd /etc/rc.d/rc3.d (run level 디렉토리)
 ln -s /etc/rc.d/init.d/tomcatd S72tomcatd
 이렇게 설정해 주시면 됩니다. 단! 톰캣의 숫자가 아파치의 숫자보다 작아야 겠지요. 그래야 부팅시
 톰캣이 먼저 구동됩니다. 다른 것들과 겹치지 않는 수중 자유롭게 쓰시면 됩니다.
 한가지 주의 하실 점은 리붓을 했는데 아파치는 뜨고 톰캣은 뜨지 않는 경우가 있습니다.
 이럴땐 /var/log/message 파일을 열어 에러 메시지를 확인하시기 바랍니다.
 저의 경우 JAVA_HOME을 못 찾아서 계속 뜨지 못하더군요 그래서
 /etc/rc.d/init.d 디렉토리의 tomcatd 파일을 열어
 JAVA_HOME=/usr/local/java
 라고 추가해 줬더니 다음번 부팅시엔 둘다 연동된 상태로 구동 되었습니다.
 지금 상황으론 아파치 DocumentRoot나 각 사용자 계정에서 jsp 파일들은 모두 인식되는데 servlet은
 아직 안되더군요. 혹시 servlet도 성공하신분은 리플 주시면 감사 ^^
Epilog
-- 처음으로 문서를 작성해 봅니다. 저도 아파치와 톰캣을 연동하느라 삼일을 버렸기에, 다른분들은
고생을 덜 하기실 바라며 문서를 남깁니다.(이대로 따라하셨다가 고생을 더하셔도 책임은 못집니다. ㅠ.ㅠ)
삼일동안 각종 버전의 아파치와 톰캣을 깔았다 지웠다를 반복하며, 이사이트 저사이트 정신없이 창 여러개 띄워서
이문서 저문서 보던게 효율이 너무 안 좋아서 하나로 합쳐 보았습니다. 부디 이 문서를 보시고 다들 한번에
연동에 성공하시길 바랍니다.
글의 내용중 잘못 된 부분이 있을 수도 있습니다. 이점 양해 바랍니다.
    2004년 1월 18일   이 지 형

2012-10-14

Linux] apache_php_openssl설치



httpd-2.0.59.tar.gz    php-5.1.6.tar.gz 파일 이용.

apache설치
./configure --prefix=/usrl/local/apache  --enable-module=so --enable-so


./configure --prefix=/usr/local/apache2 --enable-suexec \
                          --enable-so --with-suexec-caller=bin \
                          --enable-ssl --with-ssl=/usr/local/ssl --enable-cache \
                          --enable-ext-filter --with-z=/usr/include --enable-dav \
                          --with-dbm=db4 --with-berkeley-db=/usr/local/BerkeleyDB.4.2

make && make install


php설치
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql  --with-gd --disable-debug  --enable-track-vars  --with-jpeg-dir=/usr/local --with-zlib-dir=/usr/local --with-libxml-dir=/usr/local/libxml2



출처 : Tong - journae님의 Windows 통

make && make install

httpd.conf파일에서
LoadModule php5_module      module/libphp5.so
파일 존재확인!

AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
추가!

cp php.ini-dist /usr/local/lib/php.ini  설정파일 카피!

apache실행
/usr/local/apache/bin/apachectl start
하면

Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: undefined symbol: php_escape_html_entities
라는 에러가 나오네요...  nu,m

제가 리눅스 엄청 초보라 어떻게 대처해야 할지 모르겠어요

고수님들 도와주세요 ~~~~




 
   바람난일용이   07-05-17 17:01  
혹시 아파치 2개 설치 하셧는지요.. ?
컴파일시에는 --with-apxs2=/usr/local/apache2/bin/apxs  아파치2라는 디렉토리에 하셨는데
실행은 Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
아니면 디렉토리 이름을 바꾸신건지.... 설치 하고 실행하고 경로가 다르면.. 해당패스가
달라져 에러가 날수잇읍니다...
이부분 체크해 보심이...

혹시 아파치 2개 설치 하셧는지요.. ?
컴파일시에는 --with-apxs2=/usr/local/apache2/bin/apxs  아파치2라는 디렉토리에 하셨는데
실행은 Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
아니면 디렉토리 이름을 바꾸신건지.... 설치 하고 실행하고 경로가 다르면.. 해당패스가
달라져 에러가 날수잇읍니다...
이부분 체크해 보심이...
 
   서비효과   07-05-17 17:04  
앗.. 1mm의 오타가 있었네요.. 감사합니다 ^^








Don't forget to run 'make test'.

Installing PHP SAPI module:       apache2handler
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' libphp5.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp libphp5.la /usr/local/apache2/modules/
cp .libs/libphp5.so /usr/local/apache2/modules/libphp5.so
cp .libs/libphp5.lai /usr/local/apache2/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /usr/local/src/php-5.2.3/libs'
chmod 755 /usr/local/apache2/modules/libphp5.so
[activating module `php5' in /usr/local/apache2/conf/httpd.conf]
Installing PHP CLI binary:        /usr/local/php/bin/
Installing PHP CLI man page:      /usr/local/php/man/man1/
Installing build environment:     /usr/local/php/lib/php/build/
Installing header files:          /usr/local/php/include/php/
Installing helper programs:       /usr/local/php/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/php/lib/php/
[PEAR] Console_Getopt - installed: 1.2.2
[PEAR] Archive_Tar    - installed: 1.3.2
[PEAR] Structures_Graph- installed: 1.0.2
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
[PEAR] PEAR           - installed: 1.5.4
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
Installing PDO headers:          /usr/local/php/include/php/ext/pdo/

2012-09-16

qmail 설치 (text문서)


#시스템 필요사항
#Mysql이 먼저 설치되어 있어야 합니다.
#큐메일은 대부분의 유닉스와 유닉스류 시스템에 설치되고 운영됩니다만 몇가지 필요사항이 있습니다.
#
#
#컴파일동안 컴파일부분에 약 10메가바잇의 여유공간. 컴파일후 옵젝트파일을 제거하면 4메가만 남습니다.
#컴파일러, 시스템헤더파일, 그리고 라입러리 등을 포함하는 완전한 C 개발시스템. 컴파일지시사항은 필요한 부분이 있으면 알려줍니다.
#바이너리, 문서, 그리고 설정 등의 파일에 대해 2-3메가바잇.
#큐에 대한 충분한 디스크공간. 소규모 단일사용자 시스템은 2-3메가바잇만 있으면 됩니다.
대용량 서버는 2-3 기가바잇이 있어야 될지도 모릅니다.
#호환 운영 시스템. 대부분의 유닉스종은 됩니다. 소스트리의 README를 보면 호환판의 리스트가 있습니다.
#DNS로의 접근을 강력히 권장합니다. 그렇지 않으면 큐메일은 smtproutes의 config 파일에 설정된 원격시스템으로만 보냅니다.
#적절한 넷웍 연결. 큐메일은 잘 연결된 시스템에 대해 설계되어서 28.8k 다이얼업에서 멜링리스트를 사용하고 싶지 않을지도 모릅니다. 큐메일을 연결이 나쁜 시스템에서 사용할 수 있도록 하려고 serialmail 패키지가 설계되었습니다. 더 많은 정보는 관련패키지 부록의 시리얼항목을 보시면 됩니다.
#
#2.4 소스를 받으십시오.
#오우케이, 이제 큐메일을 설치할 수 있도록 필요사항에 맞는 시스템을 준비하셨군요.
첫번째 단계는 큐메일과 다른 애드온의 소스코드를 다운로드하는 것입니다.
큐메일은 당연히 필요하고요, ucspi-tcp와 daemontools도 필요할 것입니다.
#
#
#qmail, ftp://koobera.math.uic.edu/www/software/qmail-1.03.tar.gz
#ucspi-tcp, http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
#daemontools, ftp://koobera.math.uic.edu/www/daemontools/daemontools-0.61.tar.gz
#
#웹브라우저나 FTP 클라이언트를 이용해서 이 파일들을 가져오세요.
#
#
#
#2.5 소스를 컴파일하세요.
#컴파일환경을 검증하세요.
#첫번째 할일은 프로그램을 컴파일하기에 필요한 툴을 갖추었는 지의 확인입니다.
이것을 결정하는 것은 사용중인 유닉스종류에 따릅니다. 말씀드릴 수 있는 가장 쉬운 방법은, 보장되지는 않지만, 해보는 겁니다.
#
#
#-----------------------------------------------------------------------------
#유의점: 이것들중 하나라도 통과하면, 다음 항목으로 넘어가셔도 됩니다.
#-----------------------------------------------------------------------------
#
#
#명령행프롬트에서, cc라 쓰고, 엔터를 누르세요:
#$ cc cc: No input files specified $
#
#
#
#답이 비슷하게 나오면, C 컴파일러가 경로에 있는 것입니다.
그렇지 않더라도, 설치되어 있지 않다는 것은 아닙니다.
설치되어 있을 지 모르지만, 경로에 포함되어 있지 않을 수도 있습니다.
 물론, 설치되어 있지 않을 수도 있습니다. 이렇게 해보세요.
#
#/usr/bin/cc
#/usr/bin/gcc
#/usr/local/bin/cc
#/usr/local/bin/gcc
#/usr/ccs/bin/cc
#
#소용이 없으면, 플랫폼 특성에 맞는 방법으로 하셔야 합니다.
프롬트에서 다음 중 하나를 하시는데, 사용중인 OS에 따르셔야 합니다.
#
#Red Hat Linux: rpm -qa | grep gcc or rpm -qa | grep egcs
#FreeBSD: GCC가 디폴트로 포함됩니다.
#이번 항목에서는 큐메일을 실제로 컴파일하는 단계를 거칩니다.
오려붙이기가 간편하지만, 그렇게 필요하지는 않습니다.
#
#
#배포판을 풉니다.
#여기까지 오셨으면, 이미 C 컴파일러와 tarball을 준비하신 겁니다.
타볼을 작업하실 디렉토리로 복사하거나 옮기세요. /usr/local/src가 좋은데,
이 경우에는 /usr/local/src/qmail를 세 패케지 모두에 사용할 수 있습니다.
#
#
mkdir -p /usr/local/src/qmail
#         mv *.tar.gz /usr/local/src/qmail
#
#
#/usr/local/src/qmail에 세 패케지가 전부 있으므로, 그것들을 푸십시오.
 룻이 아니라면 여기에서는 룻이 되셔야 합니다.
프롬트에서 다음과 같이 하세요:
#
#


gunzip qmail-1.03.tar.gz;

tar xvf qmail-1.03.tar;



gzip -d qmail-1.03-mysql-0.6.6.patch.gz;



gunzip checkpassword-0.81.tar.gz;

tar xvf checkpassword-0.81.tar;



gzip -d checkpassword-0.81-mysql-0.6.6.patch.gz;



gunzip ucspi-tcp-0.84.tar.gz;

tar xvf ucspi-tcp-0.84.tar;



gunzip daemontools-0.61.tar.gz;

tar xvf daemontools-0.61.tar;



gunzip rblsmtpd-0.70.tar.gz;

tar xvf rblsmtpd-0.70.tar;



rm *.tar;

cd /usr/local/src/qmail/qmail-1.03;



patch -p1 < ../qmail-1.03-mysql-0.6.6.patch;



#
#
#qmail-1.03, ucspi-tcp-0.84, daemontools-0.61 등의 섭디렉토리가 생깁니다.
qmail-1.03 디렉토리로 가시면 시작하겠습니다.
#
#
#
#디렉토리를 만듭니다.
#필요한 섭디렉토리는 큐메일 설치 프로그램이 만들므로, 큐메일 홈디렉토리만 만들어 주면 됩니다.
#
#
mkdir /var/qmail;
#
#
#그러면 다음 항목으로 갑니다.
#
#
#------------------------------------------------------------------------------
#유의점: 큐메일파일들을 /var가 아닌 다른 곳에 놓고 싶으시면, /var/qmail디렉토리에
#        그곳을 가리키는 심볼릭 링크를 만드시면 됩니다.
#
#        예를 들면, 다음과 같이 하시면 됩니다.
#
#        mkdir /var/qmail
#        ln -s /usr/man /var/qmail/man
#        mkdir /etc/qmail
#        ln -s /etc/qmail /var/qmail/control
#        ln -s /usr/sbin /var/qmail/bin
#--------------------------------------------------------------------------------
#
#
#사용자와 그룹을 만듭니다.
#필요한 사용자와 그룹을 만드는 가장 쉬운 방법은 작은 스크립트를 만들어서 하는 것입니다. 소스디렉토리에 INSTALL.ids 파일이 있습니다. 거기에는 여러 프랫폼에 해당하는 명령행이 있는데, 그 파일을 다른 이름으로 복사해서 편집하면 빠르고 쉽습니다.
#
#
#   cp INSTALL.ids IDS
#
#
#좋아하시는 에디터로 필요한 행을 빼고 다 지웁니다.
# 예를 들면, 편집후에 FreeBSD에 대한 IDS는 다음과 같습니다.
#
#


pw groupadd nofiles;

pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent;

pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent;

pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent;

pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent;

pw groupadd qmail;

pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent;

pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent;

pw useradd qmails -g qmail -d /var/qmail -s /nonexistent;


#        pw groupadd nofiles
#        pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
#        pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
#        pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
#        pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
#        pw groupadd qmail
#        pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
#        pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
#   pw useradd qmails -g qmail -d /var/qmail -s /nonexistent
#
#
#실행하려면, chmod를 써서 실행파일로 만드시거나 sh로 실행하십시오.
#
#
#첫번째 방법:
#
#  chmod 700 IDS
#  ./IDS
#
#
#두번째 방법:
#
#  /bin/sh IDS
#
#
#스크립트의 실행이 완료되어 사용자와 그룹이 생기면 다음항목으로 갑니다.
#
#그러나, INSTALL.ids에 해당 시스템이 없으면 어쩝니까? 수동으로 그것들을 만들어야 합니다. 좋아하는 에디터를 사용해서 /etc/group을 편집하세요. 다음 두 줄을 그 파일끝에 첨가하십시오.
#
#
#
#  qmail:*:2107:
#  nofiles:*:2108:
#
#
#-------------------------------------------------------------------------
#유의점: 2107과 2108이 사용중인 것이 아님을 확인하셔야 합니다.
#-------------------------------------------------------------------------
#
#
#다음으로는, vipw를 이용해서 다음 줄들을 그 파일의 끝에 붙이십시오. (대부분의 시스템에 vipw가 있지만, 없으면 에디터로 /etc/passwd를 편집합니다.)
#
#
#        alias:*:7790:2108::/var/qmail/alias:/bin/true
#        qmaild:*:7791:2108::/var/qmail:/bin/true
#        qmaill:*:7792:2108::/var/qmail:/bin/true
#        qmailp:*:7793:2108::/var/qmail:/bin/true
#        qmailq:*:7794:2107::/var/qmail:/bin/true
#        qmailr:*:7795:2107::/var/qmail:/bin/true
#        qmails:*:7796:2107::/var/qmail:/bin/true
#
#
#------------------------------------------------------------------------------------
#유의점: 7790-7796이 사용중이지 않는다는 것과 2107과 2108이 위에서 만든 그룹아이디와
#        같다는 것을 확인하십시오.
#------------------------------------------------------------------------------------
#
#
#이런 것들을 해당파일의 끝에만 첨가해야 하는 것은 아니지만, 그래야 설명하기가 제일 쉽습니다.
#
#
#다음 항목으로 가실 준비가 되셨군요.
#
#
#컴파일을 하세요.
#이제 큐메일을 컴파일하실 준비가 되었습니다.
#
#
#'컴파일환경을 검증한다'항목에서, C 컴파일러를 지정하셨습니다.
그것이 cc가 아니거나 디렉토리가 PATH환경변수에 있지 않으면 conf-cc와 conf-ld를 편집하십시오.
컴파일러가 gcc이고, PATH에 있다고 하면, conf-cc와 conf-ld를 가볍게 편집하고, cc를 gcc로 바꾸십시오.
#
#
#그렇게 하셨으면 명령행 프롬트에 다음과 같이 하세요.
#
# qmail 에 mysql 을 patch가 되어 있어야 합니다.
# patch를 안하셨으면 위에서 확인후 패치 하십시요.
# 참고 : 모든 patch 는 /usr/local/src/qmail/patch 에 있습니다.
# patch -p1 < ../patch/qmail-1.03-mysql-0.6.6.patch


vi Makefile

#MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt

 ==>로 고침고, 경로 확인

#MYSQL_INCLUDE=-Iusr/local/mysql/include  ==> 경로 확인



make;



make setup check;

#
#큐메일이 시스템에 설치되어서 가동될 준비가 되었습니다!
 다음항목은 큐메일을 가동하고 시험하는 단계를 안내합니다.
#


#
#2.6 ucspi-tcp를 설치합니다.
#먼저번에 qmail, ucpsi-tcp, daemontools 타볼을 풀었습니다.
예제에서 그것들을 /usr/local/src/qmail에 풀었습니다. 자 ucpsi-tcp디렉토리로 옮깁시다.
#
#

cd /usr/local/src/qmail/ucspi-tcp-0.84;

#
#
#'컴파일을 하세요'항목에서, conf-cc와 conf-ld를 고치셨으면, 이 디렉토리에서도 똑같이 해줍니다.
#
#
#그런뒤에 다음과 같이 하십시오.
#
#

make;



make setup check;

#
#
#2.7 daemontools를 설치합니다.
#daemontools 컴파일디렉토리로 이통합니다.
#
#

cd /usr/local/src/qmail/daemontools-0.61;

#
#
#또 한번, conf-cc와 conf-ld를 qmail과 ucspi-tcp 컴파일시 고쳤으면, 이 디렉토리에서도 똑같이 합니다.
#
#
#그리고 다음과 같이 합니다.
#
#

make;



make setup check;

#
#rblsmptd를 설치합니다.

cd /usr/local/src/qmail/rblsmtpd-0.70;

make;



make setup check;





#checkpassword를 설치합니다.

cd /usr/local/src/qmail/checkpassword-0.81;

patch -p1 < ../checkpassword-0.81-mysql-0.6.6.patch;



vi Makefile

#MYSQL_LIBS=/usr/local/mysql/lib/mysql/libmysqlclient.a -lm -lz -lcrypt  ==>로 고침고, 경로 확인

#MYSQL_INCLUDE=-Iusr/local/mysql/include  ==> 경로 확인



make;



make setup check;



vi /etc/inetd.conf

#아래와 같이 pop-3부분을 수정합니다.

#pop3  stream  tcp     nowait  root    /var/qmail/bin/qmail-popup      qmail-popup     co2.ritsworld.com       /bin/checkpassword      /var/qmail/bin/qmail-pop3d      Maildir

#pop-3 stream tcp nowait root /usr/sbin/tcpd /var/qmail/bin/qmail-popup mail.ritsworld.com /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir

#(한줄에 적어줍니다)



killall -HUP inetd



#제대로 설치가 되었는지 확인을 합니다
#printf "www\0com1212\0Y123456\0" | /bin/checkpassword `which id` 3<&0
#printf "test\0test\0Y123456\0" | /bin/checkpassword 'id' 3<&0
#printf "test\0test\0Y123456\0" | /bin/checkpassword env 3<&0
#printf "test\0test1212\0Y123456\0" | /bin/checkpassword `/usr/bin/id` 3<&0
#"계정\0패스워드\0아무것이나...\0" 의 순입니다
#uid=101(popori) gid=100(users) groups=100(users)
#위와 같은 결과가 나오면 제대로 설치가 된것입니다.
#위와 같은 결과가 안나오고 밑의 결과가 나올때는
#Missing name for redirect



#
#DNS가 제대로 설정되었다면, 다음 스크립트를 실행하기만 하면 됩니다.
#
#

cd /usr/local/src/qmail/qmail-1.03;

./config;



#
#
#어떤 이유로 config가 DNS에서 hostname을 찾지 못하면, config-fast script를 실행하셔야 합니다.
#
#
#  ./config-fast 호스트네임.완전.경로
#
#
#예를 들면, 도메인이 example.com이고, 당신컴퓨터의 호스트네임이 dolphin이라면, config-fast를 다음과 같이 실행합니다.
#
#
#  ./config-fast dolphin.example.com
#
#



#2.8 큐메일을 가동합니다.

vi /var/qmail/rc

#/var/qmail/boot디렉토리에는 여러가지 설정에 대한 본보기 큐메일 붓 스크립트가 있습니다. /var/spool/mail 대 $HOME/Mailbox, procmail 또는 dot-forward를 이용하기, 그리고 이것들의 다양한 결합. 한번 부담없이 검토해보시기 바랍니다. 우리는 설치를 위해서 다음을 이용하겠습니다.:
#
############################################################################################



#!/bin/sh


# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default



exec env - PATH="/var/qmail/bin:$PATH" \

qmail-start "`cat /var/qmail/control/defaultdelivery`"



############################################################################################



#
#에디터로 위의 내용을 /var/qmail/rc로 만드시고, 다음과 같이 명령합니다.
#
#

chmod 755 /var/qmail/rc;

mkdir /var/log/qmail;

#
#
#이쯤에서, .qmail파일이 전달하지 못하는 메세지들에 대한 기본전달모드를 결정해야 합니다.
#다음의 테이블에 몇가지 공통선택이 간략히 예시되어 있습니다.
#
#
 #Mailbox
# format     Name       Location        defaultdelivery  Comments
#
 #mbox       Mailbox    $HOME           ./Mailbox        most common, works
#                                                             with most MUA's
#
 #maildir    Maildir    $HOME           ./Maildir/       more reliable, less
#                                                             MUA support
#
 #mbox        username  /var/spool/mail See INSTALL.vsm  traditional UNIX
#                                                             mailbox
#
#
#정보를 더 원하시면 INSTALL.mbox, INSTALL.maildir, INSTALL.vsm 등을 보십시오.
#
#
#기본 멜복스 형태를 고르시려면, 위의 테이블의 defaultdelivery 값을
#/var/qmail/control/defaultdelivery에 적어넣으십시오.
#예) 표준 큐메일 Mailbox 전달을 선택하시려면 다음과 같이 합니다.
#
#
#echo ./Mailbox >/var/qmail/control/defaultdelivery



echo ./Maildir/ >/var/qmail/control/defaultdelivery



# /var/qmail/bin/maildirmake  /usr1/mailmaster/test/Maildir;
#
#
#----------------------------------------------------------------------------------
#유의점: defaultdelivery는 표준 큐메일 통제 파일이 아닙니다. 위의 /var/qmail/rc파일의
#        특징입니다.
#----------------------------------------------------------------------------------
#
#
#시스템 기동 파일
#/var/qmail/rc 스크립트를 수동으로 실행하셔야 하면, 큐메일은 부분가동합니다. 그러나, 우리는 큐메일이 시스템이 부팅할때마다 자동으로 가동하기를 원하고, 시스템이 정지할 때는 깨끗하게 꺼지기를 원합니다.
#
#
#이것은 startup/shutdown스크립트를 다음과 같이 작성하면 됩니다.
#

vi /var/qmail/bin/qmail.sh;

###########################################################################################



#!/bin/sh



PATH=/var/qmail/bin:/usr/local/bin:/usr/bin:/bin

export PATH



case "$1" in

   start)

     echo -n "Starting qmail: svscan"

     cd /var/qmail/supervise

     env - PATH="$PATH" svscan &

     echo $! > /var/run/svscan.pid

     echo "."

     ;;

   stop)

     echo -n "Stopping qmail: svscan"

     kill `cat /var/run/svscan.pid`

     echo -n " qmail"

     svc -dx /var/qmail/supervise/*

     echo -n " logging"

     svc -dx /var/qmail/supervise/*/log

     echo "."

     ;;

   stat)

     cd /var/qmail/supervise

     svstat * */log

     ;;

   doqueue|alrm)

     echo "Sending ALRM signal to qmail-send."

     svc -a /var/qmail/supervise/qmail-send

     ;;

   queue)

     qmail-qstat

     qmail-qread

     ;;

   reload|hup)

     echo "Sending HUP signal to qmail-send."

     svc -h /var/qmail/supervise/qmail-send

     ;;

   pause)

     echo "Pausing qmail-send"

     svc -p /var/qmail/supervise/qmail-send

     echo "Pausing qmail-smtpd"

     svc -p /var/qmail/supervise/qmail-smtpd

     ;;

   cont)

     echo "Continuing qmail-send"

     svc -c /var/qmail/supervise/qmail-send

     echo "Continuing qmail-smtpd"

     svc -c /var/qmail/supervise/qmail-smtpd

     ;;

   restart)

     echo "Restarting qmail:"

     echo "* Stopping qmail-smtpd."

     svc -d /var/qmail/supervise/qmail-smtpd

     echo "* Sending qmail-send SIGTERM and restarting."

     svc -t /var/qmail/supervise/qmail-send

     echo "* Restarting qmail-smtpd."

     svc -u /var/qmail/supervise/qmail-smtpd

     ;;

   cdb)

     tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

     chmod 644 /etc/tcp.smtp*

     echo "Reloaded /etc/tcp.smtp."

     ;;

   help)

    cat <<HELP

   stop -- stops mail service (smtp connections refused, nothing goes out)

  start -- starts mail service (smtp connection accepted, mail can go out)

  pause -- temporarily stops mail service (connections accepted, nothing leaves)

   cont -- continues paused mail service

   stat -- displays status of mail service

    cdb -- rebuild the tcpserver cdb file for smtp

restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it

doqueue -- sends qmail-send ALRM, scheduling queued messages for delivery

 reload -- sends qmail-send HUP, rereading locals and virtualdomains

  queue -- shows status of queue

   alrm -- same as doqueue

    hup -- same as reload

HELP

     ;;

   *)

     echo "Usage: $0 {start|stop|restart|doqueue|reload|stat|pause|cont|cdb|queue|help}"

     exit 1

     ;;

esac



exit 0



###########################################################################################

#

chmod 755 /var/qmail/bin/qmail.sh

#이 스크립트는 http://Web.InfoAve.net/~dsill/qmail-script-dt61.txt에서도 구할 수 있습니다.
#
#
#-------------------------------------------------------------------------------------
#유의점: 시스템이 재부팅한다음에 큐메일이 곧 없어지면, 스크립트의 "start"항목에 있는
#        env 명령을 nohup으로 덧붙입니다.
#
#        예)
#        nohup env - PATH="$PATH" svscan &
#-------------------------------------------------------------------------------------
#
#
#에디터로 스크립트를 만들거나 웹브라우저로 다운로드해서 시스템의 init.d디렉토리에 설치하시는데,
# 다음과 같은 장소가 됩니다.
#
#
#/etc/init.d
#/sbin/init.d
#/etc/rc.d/init.d
#
#스크립트를 qmail이라고 이름붙이십시오. 스크립트를 몇개의 rc디렉토리에 링크시키셔야 합니다.
# 이 데렉토리들은 rcN.d같이 되어있는데, N은 적용 runlevel입니다.
#기동디렉토리 구조가 복잡해서 본 문서에는 다루지 않습니다.
#그러니 간단한 지시사항이 맘에 차지 않으시면 시스템문서를 참조하십시오.
#rc 디렉토리는 다음중 하나일 겁니다.
#
#
#/etc
#/sbin
#/etc/rc.d
#
#링크를 만드시는데, 다음과 같이 하십시오. RCDIR를 시스템의 rc 디렉토리의 장소로 바꾸십시오.
#
#
#    ln -s ../init.d/qmail RCDIR/rc0.d/K30qmail
#         ln -s ../init.d/qmail RCDIR/rc1.d/K30qmail
#         ln -s ../init.d/qmail RCDIR/rc2.d/S80qmail
#         ln -s ../init.d/qmail RCDIR/rc4.d/S80qmail
#         ln -s ../init.d/qmail RCDIR/rc5.d/S80qmail
#         ln -s ../init.d/qmail RCDIR/rc6.d/K80qmail
#
#
#--------------------------------------------------------------------------------------
#유의점: 전단계의 숫자는 매우 시스템에 의존합니다. 그렇지만 다소 유연합니다.
#        Sendmail이 현재 설치되어 있으면, "find RCDIR -name "*sendmail" -print" 명령을
#        실행하면 시스템에 적용할 수 있는 숫자를 알려줍니다.
#--------------------------------------------------------------------------------------
#
#
#이제 큐메일서비스를 위해 감독디렉토리를 만드십시오.
#
#

mkdir -p /var/qmail/supervise/qmail-send/log;

mkdir -p /var/qmail/supervise/qmail-smtpd/log;

mkdir -p /var/qmail/supervise/qmail-pop3/log;

chmod +t /var/qmail/supervise/qmail-send;

chmod +t /var/qmail/supervise/qmail-smtpd;

chmod +t /var/qmail/supervise/qmail-pop3;

#
#
#/var/qmail/supervise/qmail-send/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-send/run

############################################################################################

#!/bin/sh



exec /var/qmail/rc

############################################################################################



#
#/var/qmail/supervise/qmail-send/log/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-send/log/run

#############################################################################################

#!/bin/sh



exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail

#############################################################################################



#
#/var/qmail/supervise/qmail-smtpd/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-smtpd/run

#############################################################################################

#!/bin/sh



QMAILDUID=`id -u qmaild`

NOFILESGID=`id -g qmaild`

exec /usr/local/bin/softlimit -m 2000000 \

    /usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \

        -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

#############################################################################################

#예제

##############################################################################################

##!/bin/sh
#
#QMAILDUID=`id -u qmaild`
#NOFILESGID=`id -g qmaild`
#exec /usr/local/bin/softlimit -m 2000000 \
#    /usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
#        -u $QMAILDUID -g $NOFILESGID 0 smtp /usr/local/bin/rblsmtpd /var/qmail/bin/qmail-smtpd 2>&1

#############################################################################################



#
#/var/qmail/supervise/qmail-smtpd/log/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-smtpd/log/run

#############################################################################################

#!/bin/sh



exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd

#############################################################################################





#
#/var/qmail/supervise/qmail-pop3/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-pop3/run

#############################################################################################

#!/bin/sh



exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup 211.234.7.126 \

     /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1



#############################################################################################

##############################################################################################

##!/bin/sh
#
#exec /usr/local/bin/tcpserver -v -R 0 pop3 /var/qmail/bin/qmail-popup 211.234.7.126 \
#     /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1 | \
#     /var/qmail/bin/splogger pop3d &
#
##############################################################################################



#
#/var/qmail/supervise/qmail-pop3/log/run파일을 만드십시오.
#

vi /var/qmail/supervise/qmail-pop3/log/run

#############################################################################################

#!/bin/sh



exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3d



#############################################################################################



#
#
#run파일들에 실행가능을 부여합니다.
#
#

chmod 755 /var/qmail/supervise/qmail-send/run;

chmod 755 /var/qmail/supervise/qmail-send/log/run;

chmod 755 /var/qmail/supervise/qmail-smtpd/run;

chmod 755 /var/qmail/supervise/qmail-smtpd/log/run;

chmod 755 /var/qmail/supervise/qmail-pop3/run

chmod 755 /var/qmail/supervise/qmail-pop3/log/run;

#
#
#그런 다음에, 로그디렉토리를 만듭니다.
#
#

mkdir -p /var/log/qmail/smtpd;

mkdir -p /var/log/qmail/pop3d;

chown qmaill /var/log/qmail /var/log/qmail/smtpd /var/log/qmail/pop3d;

#
#
#기동스크립트에 실행권한을 부여하고, 실행경로에 있는 디렉토리로 링크합니다.
#
#
#   # substitute the correct location of your rc dir on the next two lines
#        chmod 755 /etc/init.d/qmail                                          
#        ln -s /etc/init.d/qmail /usr/local/sbin                              
#
#
#로컬호스트가 SMTP를 통해서 멜을 삽입 (inject)하도록 합니다.
#
#

echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp;

echo '211.234.7.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp;

/var/qmail/bin/qmail.sh cdb;

#
#
#기존에 설치된 MTA를 멈추고 무력하게 합니다.
#큐메일과 현존하는 MTA, 대개 Sendmail, 두개를 사용할 수도 있지만, 그렇게 하지 않을 것을 강력히 권고합니다.

그리고, 솔직히 말해서, 이 글을 읽고 계신다면, 그게 무엇을 뜻하는 지 모르실 겁니다. :-)
#
#
#현존 MTA가 Sendmail이라면, init.d 스크립트를 stop인수를 주어 실행하여 멈출 수 있습니다.

예) 다음 중 하나가 유효할 겁니다.

#
#
#  /etc/init.d/sendmail stop    
#  /sbin/init.d/sendmail stop  
#  /etc/rc.d/init.d/sendmail stop
#
#
#init.d/sendmail 스크립트를 찾을 수 없다면, "ps -ef|grep sendmail" 또는 "ps waux|grep sendmail"을 사용해서 sendmail의 PID를 알아낸 뒤에, 다음과 같이 해서 멈춥니다.
#
#
#  kill PID-of-sendmail
#

killall sendmail

#
#MTA가 Sendmail이 아니면, 해당문서에서 바른 멈춤 절차를 참고하십시오.
#
#
#시스템에서 기존의 MTA를 완전히 제거하는 것도 고려해볼 만합니다. 적어도 init.d 스크립트를 무력하게 하면 시스템이 재부팅할 때 다시는 가동하지 않습니다.

#
#
#레드햇리눅스에서는 다음과 같이 해서 Sendmail을 제거합니다.
#
#
#  rpm -e --nodeps sendmail
#
#
#끝으로, 기존의 /usr/lib/sendmail을 큐메일판으로 바꿉니다.
#
#

mv /usr/lib/sendmail /usr/lib/sendmail.old;

mv /usr/sbin/sendmail /usr/sbin/sendmail.old;

chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old;

ln -s /var/qmail/bin/sendmail /usr/lib;

ln -s /var/qmail/bin/sendmail /usr/sbin;

#
#
#이제는 큐메일가동이 가깝습니다. 끝단계는 시스템앨리어스를 두어개 만드는 것입니다.
#
#
#시스템앨리어스를 만듭니다.
#모든 큐메일설치에서는 시스템앨리어스를 세개 만들어야 합니다.
#
#
#앨리어스            목적
#postmaster          RFC 821 요구사항이며, 멜애드민 (당신)을 가리킵니다.
#mailer-daemon       바운스멜에 대한 사실상의 표준수취인
#root                특권계정에서 온 멜을 시스템애드민에게 보낸다.
#
#
#이 앨리어스들을 만들려면, 그것들 하나하나가 어디에 놓여져야 하는 지 (로컬사용자, 또는 원격주소) 결정하고, .qmail파일을 만들어서 갖다놓으면 됩니다. 예를 들어, 로컬사용자 dave는 시스템과 멜의 애드민이라고 하면 다음과 같이 합니다.
#
#

adduser master



echo master > /var/qmail/alias/.qmail-root;                              

echo master > /var/qmail/alias/.qmail-postmaster;

ln -s /var/qmail/alias/.qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon;

chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster;

#
#
#mysql 연동
#마찬가지로 README.mysql.en 파일이 생성되어 있으므로 설치에 참고하시고
#컴파일과 설치를 진행합니다. 역시 설치시에는 root 로...



#/var/qmail/control/sqlserver 파일을 다음과 같은 내용으로 생성합니다.

vi /var/qmail/control/sqlserver

#########################################################################

mysql_use     yes

server        localhost

login         m

password      su

db            qmail

table         users

check_host    no

#########################################################################

또 다른 예

#########################################################################

#mysql_use     yes
#server        localhost
#login         m
#password      su
#db            ritsworld
#table         userinfo
#check_host    no
#quota         yes
#ignore_validity yes
#########################################################################





#간략하게 설명하면...
#
#  mysql_use     yes          ... mysql 을 사용한다.
#  server        localhost    ... 서버는 현재의 mysql 서버를 사용한다.
#  login         qmail        ... mysql DB에 접근하는 사용자명
#  password      su           ... mysql DB에 접근시에 필요한 비밀번호
#  db            qmail        ... 사용자 계정을 가지고 있는 DB명
#  table         users        ... 사용자 계정이 들어있는 테이블명
#  check_host    no           ... 이것이 yes 이면 mysql DB에 있는 이용자명과
#                                 도메인 (호스트)로 부터만 메일을 수신한다.
#                                 (무슨소리인지 잘 모르겠음...)
#
#로그인은 MySQL 에 접근하는것을 사전에 확인해 보도록 해야 합니다.
#즉 mysql -u <id> qmail 로 접근해 봐서 비밀번호를 넣고 설정한 qmail DB 에 들어갈
#수 있는지를 확인하라는 것입니다.
#즉, 이때에 login 은 DB의 접근권한(?)을 가지는 id를 이용하라는 것입니다.
#mysql의 access 모드와 password의 적절한 조정이 필요할 것 입니다..
#최초에 오픈시라면 mysql의 DB접근권한을 예제와 같는 test db와 같이 모두 열어놓고
#인터페이스가 완료 된후에 테스트를 거쳐서 적당하게 권한을 조정하는것이 속을 썩지
#않을 것입니다. 모두 열었을 경우에는 password 항목을 지정할 필요가 없습니다.
#(외부로도 열린것이 이므로 웨퍼나 파이어 월을 설정하지 않았으면 보안에 심각한 문
#제가 있음은 당연합니다.)
#
#설치되어 운영되고 있는 mysql DB 에 위에서 언급한 db 명 테이블명및 해당 이용자의
#권한을 설정합니다.
#
#먼저 qmail이란 db를 하나 만듭니다.
mysqladmin create qmail
#MySQL안에 popori란 계정을 추가하고(user table) popori가 qmail db를 사용할 수 있도록 권한을 줍니다(db table).

#이용자 테이블을 생성합니다.  이것은 필요에 따라서 만드는 것이므로 메일의 서비스
#에 필요한 항목을 추가해서 테이블을 만들어도 됩니다.  즉 해당 항목만 있으면 된다
#는 이야기 입니다.
#

CREATE TABLE users (

id char(32) NOT NULL,

crypt char(32) binary DEFAULT '' NOT NULL,

passwd char(32) NOT NULL,

uid int(10) unsigned DEFAULT '65534' NOT NULL,

gid int(10) unsigned DEFAULT '65534' NOT NULL,

shell char(100) DEFAULT '/sbin/nologin' NOT NULL,

home char(100) DEFAULT '' NOT NULL,

start_date date DEFAULT '0000-00-00' NOT NULL,

expire_date date DEFAULT '2030-01-01' NOT NULL,

active enum('Y','N') DEFAULT 'Y' NOT NULL,

KEY id (id(10)),

KEY start_date (start_date),

KEY expire_date (expire_date),

KEY active (active)

);



#insert into users(id, crypt, home) values ('test', encrypt('test1212'), '/usr/home/master/test');
#
#각 필드의 간단한 설명은...
#
#  id field:         이용자 id
#  uid field:        이용자 번호
#  gid field:        이용자 그룹번호
#  home field:       이용자의 메일박스 디렉토리 패스 (풀 패스이어야 함)
#  shell field:      이용자의 SHELL (보통은  /bin/false를 지정)
#  mbox_host field:  잘모름. 하여튼 NULL 이어야 한다고 함...
#          원문 : Recieve a mail when one's address ("To: xxx@xxx") is
#                 'id'@'mbox_host'. must be accepted NULL.
#          수정 : To 에 기본적으로 E-mail 주소 설정을 해주는거라는거 같음.
#                 Not Null 은 데이터가 없을때 NULL로 설정 함으로 DB 의 속
#                 도 향상을 기대한것으로 보임.
#
#  active:           메일을 이용할 수 있는 상태 플래그
#  start_date:       메일의 이용기간을 정함. 시작일
#  expire_date:      메일의 이용 기간을 정함. 끝일
#
#테이블을 생성후에 이용자의 계정을 DB에 등록 합니다.
#passwd 기록시에는 encryption 을 하기위에 mysql 매크로 거맨드인 password () 를
#사용합니다.  이용자가 등록되었으면 DB에 기록한 home 디렉토리를 생성 합니다.
#
#예제:
 #MySQL table
#+----------+-------+------+---------------------+------------
#+   id     |  uid  | gid  |  home               | shell    
#+----------+-------+------+---------------------+------------
#+ username |  65534 | 65534 | /somewhere/username | /bin/false
#
#
#와 같이 DB에 등록되어 있으면...
#

mkdir /usr/home/master/test;

/var/qmail/bin/maildirmake  /usr/home/master/test/Maildir;

chown -R 65534 /usr/home/master/test;

chgrp -R 65534 /usr/home/master/test;

#
#
#와 같이하여 Maildir 구조의 메일박스를 생성합니다. 꼭 해당 ID로 소유가 설정 되도
#록 하여야 합니다.  (아니면 수신되지 않음)  이때 Maildir 로 서비스가 되게 하려면
#해당이용자의 홈디렉토리의 .qmail 파일에  ./Maildir/ 문장을 넣어 놓거나 qmail 실
#행시에 기본 서비스가 ./Maildir/ 서비스가 되도록 구동합니다.
#qmail-start ./Maildir/ 로 실행하는데 /var/qmail/rc 의 스크립트 파일을 수정 합니
#다. 아니면 그냥 Mailbox 를 사용하셔도 됩니다.
#
#
#설정되었으면 테스트를 해봅니다.
#

/var/qmail/bin/qmail-getpw test localhost

#username12346789/home1/qmail-box/g/gumdong
#
#위와 같이 id, uid, gid, home 을 돌려줄것입니다.  제대로 DB를 접근하지 못하면 DB
#의 내용과는 다른 alias의 기본값이 나타나게 됩니다.  이때는 mysql을 log파일을 남
#기도록 실행을 시켜서 적절한 시점에 SQL 쿼리를 내는지 확인하십시오.  mysqld를 로
#그를 남기도록 실행하는 방법은 다음과 같습니다.  단일 프로세스로 구동되는 것이므
#로 실제 서비스에는 적용하지 마십시요.
#
#   # /var/libexec/mysqld --log=/tmp/mysql.log
#
#
#그러면 테스트 메일을 보내 봅니다.
#
#   # echo to:username | /var/qmail/bin/qmail-inject
#
#성공적으로 메일이 보내졌는지 ~username/Maildir/new 디렉토리의 파일을 참조하십시
#요. 만약에 파일이 보내지지 않으면 /var/mail/maillog 파일을 확인하여 원인을 찾아
#보도록 하여야 합니다.
#
#파일의 수신은 성공적으로 이루어 졌는데  POP-3 와 연동하는 checkpassword 가 정상
#적으로 동작하는 지 다음과 같이 확인합니다.
#
#   # telnet localhost pop3
#   Trying 127.0.0.1...
#   Connected to localhost.
#   Escape character is '^]'.
#   +OK <6195.936784767@calypso.mydomain.or.kr>
#   user username
#   +OK
#   pass 1234
#   +OK
#   quit
#   +OK
#   Connection closed by foreign host.
#
#이렇게 pass 까지 DB에 넣어진 내용과 일치하여 +OK 가 나오면은 확인 된것입니다.
#만일 제대로 되지 않으면 DB의   crypt 항목에 있는 비밀번호와 일치하는지 확인해야
#합니다.
#
#crypt 항목에 비밀번호를 넣을 때는 encrypt() 의 mysql 매크로를 이용합니다.
#
#   > update users set crypt=encrypt('1234') where id='gumdong'\g
#
#정상적으로 동작하지 않을시에 앞에서 언급한 큐메일의 로그와  mysql의 로그를 참조
#하십시요.
#
#
#아래에 적는 내용은 사용자 quota제한에 대한 내용입니다. 웹메일을 써보면 사용자별로 10M, 20M의 용량을 주고 제한을 하지요. 그런 방법입니다.
#몇가지의 추가로 쉽게 제한이 가능합니다.
#quota제한은 unix의 quota를 이용한 것이 아니라 내부적으로 du명령을 이용해서 구현이 되있습니다.



#1. MySQL안에 있는 users테이블에 필드를 1개 추가합니다.
#mysql> alter table users add quota_size int unsigned default 0 not null;


#2. /var/qmail/control/sqlserver 파일에 다음의 1줄을 추가합니다.
#quota yes





#단지 위의 두가지 설정으로 quota가 제한됩니다. 저의 경우 qmail과 tcpserver를 restart시켰는데 시켜주지 않아도 가능한지 확인은 못했습니다.

#용량제한은 MySQL의 users테이블에서 quota_size필드에서 정합니다. 필드값이 0이라면 제한을 안합니다. 500이면 500k로 제한을 두는겁니다. 1 = 1kbyte입니다.

#만약 제한된 용량을 초과하는 메일이 들어오면 보낸사람에게 Mailbox is Full이라는 메세지와 함께 바로 리턴이 됩니다.



#--------------------------------------------------------------------------------
#큐메일을 가동합니다.
#마지막으로, 큐메일을 가동합니다.
#
#외부에서 메일을 수신하기 위해서는 /var/qmail/control/rcpthost 파일을 삭제한다.

rm /var/qmail/control/rcpthosts



/var/qmail/bin/qmail.sh start

#
#
#
#
#
#  imap을 설치합니다.
#imap-4.7b.tar.Z 과 imap-4.7b-maildir-mysql.patch을 /usr/local에 복사합니다.



tar -xzvf /usr/local/imap-4.7b.tar.Z;

mv /usr/local/imap-4.7  /usr/local/imap;

#(이름을 바꿔 주시구요)



cd /usr/local/imap;

patch -p1 < ../imap-4.7b-maildir-mysql.patch

make bsf;



ln -s /usr/local/imap/c-client /usr/local/imap/include;

ln -s /usr/local/imap/c-client /usr/local/imap/lib;

cp /usr/local/imap/ipopd/ipop2d /usr/sbin;

cp /usr/local/imap/ipopd/ipop3d /usr/sbin;

cp /usr/local/imap/imapd/imapd /usr/sbin;



vi /etc/services;

#    하시고 pop-2 pop-3  imap 에 #이 있으면 풀어주시면 되구요!!
###########################################################################

pop2            109/tcp    postoffice   #Post Office Protocol - Version 2

pop2            109/udp    postoffice   #Post Office Protocol - Version 2

pop3            110/tcp    postoffice   #Post Office Protocol - Version 3

pop3            110/udp    postoffice   #Post Office Protocol - Version 3

imap            143/tcp         imap

imap            143/udp         imap

##############################################################################



vi /etc/inetd.conf;

##############################################################################

pop2   stream  tcp     nowait  root    /usr/sbin/ipop2d        ipop2d

imap    stream  tcp     nowait  root    /usr/sbin/imapd imapd



##############################################################################
# 하시고 pop-2 pop-3  imap 에 #이 있으면 풀어주시면 되구요!!





killall -HUP inetd;

# imap test
##############################################################################
#telnet localhost 143
#Trying ::1...
#Trying 127.0.0.1...
#Connected to localhost.
#Escape character is '^]'.
#* OK localhost IMAP4rev1 v12.264 server ready
#^]
#telnet> quit
#Connection closed.
##############################################################################
#telnet 0 143
#Trying 0.0.0.0...
#Connected to 0.
#Escape character is '^]'.
#* OK [211.234.7.126] IMAP4rev1 v12.264 server ready
#aaa login master su
#aaa OK LOGIN completed
#lll logout
#* BYE co2.ritsworld.com IMAP4rev1 server terminating connection
#lll OK LOGOUT completed
#Connection closed by foreign host.
 

##############################################################################
#
#
#
#
# 기본설치 끝
#
--------------------------------------------------------------------------------

7. PHP4설치



[root@www /apache_1.3.14]#cd ..

[root@www /tmp]#cd php-4.0.4pl1

[root@www /php-4.0.4pl1]#../configure --with-apache=../apache --with-mysql=/usr/local/mysql \

    --with-imap=/usr/local/imap \

     --enable-track-vars --disable-debug



옵션에 대한 추가 설명은 PHP메뉴얼을 참고하기 바랍니다.

만약 PostgeSQL이나 mSQL을 사용한다면 --with-pgsql=디렉토리경로 --with-msql=디렉토리 경로와 같이 옵션을 사용하면 된다.

--enable-track-vars  옵션은 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어 있는 GET, POST, cookie 변수들이 어디서 왔는지 기억하도록 합니다. 꼭 설정해 두세요.



위의 많은 옵션들을 모두 설치하실 필요는 없습니다. 배포판인 레드햇의 기본설정에서 저가 필요한 것들을 예를 들어 나열한 것이므로 꼭 필요한 옵션만 사용하시면 됩니다.

그중에서 파란색으로 되어 있는 옵션은 기본적으로 권장하는 옵션들입니다.



[root@www /php-4.0.4pl1]#make    컴파일을 하고,

[root@www /php-4.0.4pl1]#make install    인스톨을 한다.







8. Apache Configure(2), 컴파일



[root@www /php-4.0.4pl1]#cd /tmp/apache_1.3.14

[root@www /apache_1.3.14]#./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a



단골로 묻는 질문의 원인 중에 하나가 위의 옵션 때문입니다. 옵션을 줄 때 그냥 TAB key를 두르리지 말고 위 옵션을 잘 보고 입력하세요.



[root@www /apache_1.3.14]#make    아파치를 컴파일한다.

[root@www /apache_1.3.14]#make install    아파치 인스톨







10. 환경설정 파일 편집


[root@www /tmp]# cp /tmp/php/php.ini-dist   /etc/httpd/php.ini


[root@www /tmp]#vi /etc/httpd/php.ini  


[root@www /tmp]#vi /usr/local/apache/conf/httpd.conf    아파치의 환경설정 파일을 열어서 다음과 같은 설정을 한다.  



360라인쯤에 Default 시작페이지 설정을 해 준다

<IfModule mod_dir.c>

DirectoryIndex index.php index.php3  index.php4 index.html index.htm

</IfModule>



720라인 정도에서 다음 내용의 주석을 풀고 원하는 환경으로 설정을 한다.



AddType application/x-httpd-php .php .php3 .ph

AddType application/x-httpd-php-source .phps







[root@www /root]# /usr/local/apache/bin/httpd -t    엔터를 두드리고  다음과 같은 메시지만 있으면 아파치 환경이 잘 설정되었다.



Syntex OK



만일 에러가 발생하면 몇 번째 라인에서 잘못되었다는 메시지를 잘 보고 수정하기 바랍니다.



[root@www root]# /usr/local/apache/bin/apachectl start

/usr/bin/apachectl start: httpd started    이런 메세지가 보인다면 아파치가 정상적인 실행이 된 것이다.







11. Test 하기



테스트 화일을 만들어 확인을 해 보세요. 물론 홈페이지가 뜰 수 있는 디렉토리가 되어야 합니다.

메인 홈페이지 경로는 아파치 환경설정파일 281라인 정도에서 DocumentRoot "/usr/local/apache/htdocs"에 의해 설정된 경로입니다.



[root@www /root]#vim /usr/local/apache/htdocs/test.php



에디터 창에서 다음내용을 입력합니다.



<?

phpinfo();

?>



저장을 하고 브라우저에서 http://localhost/test.php 또는 홈페이지URL/test.php를 입력하여 어떤 내용이 출력되는지 봅시다.



다음과 같은 내용이 출력된다면 정상적으로 설치가 잘 되었습니다.



PHP Version 4.0.4pl1







System Linux linux.kyungsung.ac.kr 2.2.16-22smp #1 SMP Tue Aug 22 16:39:21 EDT 2000 i686 unknown

Build Date Nov 27 2000

Configure Command './configure' '--with-config-file-path=/etc/httpd' '--disable-debug' '--with-imap=/usr/local/imap' '--with-mysql=/usr/local/mysql' '--with-apache=../apache_1.3.14' '--enable-track-vars' '--prefix=/usr' '--with-regex=system' '--with-gettext' '--with-gd=shared' '--with-jpeg-dir=/usr' '--with-png' '--with-zlib' '--enable-pic' '--with-db2' '--with-db3' '--with-gdbm' '--enable-debugger' '--enable-magic-quotes' '--enable-safe-mode' '--enable-sysvsem' '--enable-sysvshm' '--with-exec-dir=/usr/bin' '--enable-ftp' '--enable-inline-optimization' '--with-xml' '--with-ldap' '--enable-shared' '--enable-yp'



Server API Apache

Virtual Directory Support disabled

Configuration File (php.ini) Path /etc/httpd

ZEND_DEBUG disabled

Thread Safety disabled







 This program makes use of the Zend scripting language engine:

Zend Engine v1.0.3, Copyright (c) 1998-2000 Zend Technologies

    with Zend Optimizer v1.0.0, Copyright (c) 1998-2000, by Zend Technologies











속도 테스트



자신의 시스템에서 다음과 같은 프로그래밍으로 Optimizer하기전과 비교해 보세요.



<?

    $start = time();

    for ( $i = 1; $i <= 5000000; $i++ );

    $t_time = time() - $start;

    echo "Time : $t_time";

?>            


참고로 저의 PC에서는 처음 14초가 나왔는데 Optimizer를 하고난후 7초가 나왔습니다.





12. 시스템 부팅시 자동으로 아파치 데몬과 MySQL데몬 실행하기

/etc/rc.d/rc.local 파일을 열어서 마지막 줄에 다음 명령을 입력한다.


[root@www /root]#vim /etc/rc.d/rc.local


/usr/local/apache/bin/apachectl start

/usr/local/mysql/bin/mysql.server &



또는 다음과 같이 배포판처럼 부팅시 실행과정을 확인하도록 만들 수도 있다.



[root@www root]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

[root@www root]# cp -p /usr/local/mysql/bin/mysql.server /etc/rc.d/init.d/mysqld

[root@www root]# cd /etc/rc.d/rc3.d

[root@www rc3.d]# ln -s /etc/rc.d/init.d/httpd S85httpd

[root@www rc3.d]# ln -s /etc/rc.d/init.d/mysqld S85mysqld



혹시 서버를 xwindow로 부팅되도록 해두었다면 /etc/rc.d/rc5.d 디렉토리에 같은 방법으로 설정해 두면 된다



[root@www2 rc3.d]#reboot    리부팅을 시켜 잘 실행이 되는지 확인하자.





이상으로 MySQL+Apache+PHP4+IMAP+Zend Optimizer 의 설정을 모두 마쳤습니다.

부족한 내용이 많지만 이 글을 통해 리눅스에 입문하는 분들께 많은 도움이 되기를 바랍니다.



2001. 1. 28     백명훈(mhbaek@chollian.net)

###################################################################################################



또 좀 다른 아파치 + PHP 설치 방법...





설치하기



    %주의 : 여기서는 쓰고자 하는 DB들과 gd, imap이 깔려있는 상태라 가정한다.

     위의 부분들에 대해서는 kldp내의 문서를 참조하기 바란다.





    # 패키지 풀기

    $ gzip -d -c apache_1.3.12.tar.gz | tar xvf -

    $ gzip -d -c mod_ssl-2.6.2-1.3.12.tar.gz | tar xvf -

    $ gzip -d -c php-4.0.0.tar.gz | tar xvf -



    # 아파치 소스 위치 확인 => 아파치를 설치하는 곳이 아닌 소스 위치다 헷갈리지 말기.

    %참고로 필자는 apache는 /usr/local/src/apache-1.3.12에

     mod_ssl-2.6.2-1.3.12는 /usr/local/src/mod_ssl-2.6.2-1.3.12에 소스를 풀었다

    $ cd mod_ssl-2.6.2-1.3.12

    $ ./configure \

          --with-apache=../apache_1.3.12

    $ cd ..

    # mv apache_1.3.12 apache

    #  PHP를 컴파일 하기 전의 아파치 사전 설정

    $ cd apache

    $ ./configure --prefix=/usr/local/apache

    $ cd ..



    # PHP컴파일 하기 (DB,imap,gd,apache)

    $ cd ../php-4.0.0

    $ CFLAGS='-O2 -I/path/to/openssl/include' \

      ./configure --with-apache=../apache --with-mysql=/usr/local/mysql --with-imap=/usr/local/imap \

   --enable-track-vars --disable-debug



    $ gmake

    $ gmake install

    $ cd ..



    # Apache 와 mod_ssl, PHP3, etc...컴파일하기.(마무리 하기)

    $ cd apache_1.3.x

    $ SSL_BASE=/path/to/openssl \

      ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a \

     --enable-module=php4

    $ make

    $ make certificate

    $ make install



이제 다 마무리 되었다.

+--------------------------------------------------------+
| You now have successfully built and installed the      |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the         |
| (initially created or preserved) configuration files   |
|                                                        |
|   /usr/local/apache/conf/httpd.conf
|                                                        |
| and then you should be able to immediately fire up     |
| Apache the first time by running:                      |
|                                                        |
|   /usr/local/apache/bin/apachectl start
|                                                        |
| Or when you want to run it with SSL enabled use:       |
|                                                        |
|   /usr/local/apache/bin/apachectl startssl
|                                                        |
| Thanks for using Apache.       The Apache Group        |
|                                http://www.apache.org/  |
+--------------------------------------------------------+



위 안내 메세지가 제대로 뜬다면 성공한 것이다.

conf파일을 수정하여 기동하자.

$cd /usr/local/apache/bin/apachectl startssl

설치중에 넣었던 패스워드를 넣으면 기동이 된다. ps ax | grep httpd로 확인해 본다.

:)







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

다음 이전 차례

2012-09-15

Mail]qmail 설치후 다람쥐메일(squirrelmail)설치하기(웹메일시스템구현)

qmail+ mysql +vpopmail+ qmailadmin 은 앞서 작성한 문서를 참고 하시면 됩니다.

여기에 이번에 추가적으로 웹메일클라이언트인 squirrelmail을 포트로 설치하고자 하며, 또한 스팸방지를위해 spamassassin이라고 하는것을 추가적으로 설치하고자 합니다.


앞서 문서에서 qmailadmin까지의 설정을 마치셨으면 다음의 작업을 합니다.

(사실 qmailadmin에서 유저계정을 추가하면 (vpopmail설치시) ~vpopmail/domains/해당도메인/계정 이 생성이 됩니다. 아래의 경우는 일반유저를 대상으로 한경우를 대비해서랍니다. )


1. /usr/share/skel/ 하의 몇몇 파일을 수정합니다.


-- dot.cshrc 파일의 경우

set mail = (/var/mail/$USER)행을 찾아 다음과 같이 추가를 해줍니다.

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

...

#set mail=(/var/mail/$USER)
setenv MAIL ~vpopmail/domains/해당도메인명/$USER/Mailbox
setenv MAILDIR ~vpopmail/domains/해당도메인명/$USER/Maildir
setenv MAILTMP ~vpopmail/domains/해당도메인명/$USER/Maildir/tmpfile
alias mail `/var/qmail/bin/maildir2mbox;/var/qmail/bin/qmail`
alias pine `/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq`
alias elm `/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq`

-----------------------------------------------
-- dot.shrc 파일의 경우
-----------------------------------------------
...


MAIL=~vpopmail/domains /해당도메인명/$USER/Mailbox
MAILDIR=~vpopmail/domains/해당도메인명/$USER /Maildir
MAILTMP=~vpopmail/domains/해당도메인명/$USER/Maildir/tmpfile
export MAIL MAILDIR MAILTMP

alias mail=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/qmail`
alias pine=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq`
alias elm=`/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq`
-----------------------------------------------


2. Maildir 을 작성합니다.
# /var/qmail/bin/maildirmake /usr/share/skel/Maildir


3. 현재 계정이 있는 유저를 위해 작업합니다.
# cp -R /usr/share/skel/Maildir ~vpopmail/domains/도메인명/유저명
# chown -R 유저명 ~vpopmail/domains/도메인명/유저명/Maildir

4. 각자 계정의 rc파일을 변경합니다.

5. 이제 courier-imap을 설치합니다.
만약 qmail의 pop3프로그램을 사용하시겠다면 systemadmin.co.kr의 qmail설치문서를 참고하셔서 qmail-pop3d.sh를 작성하세요.

# cd /usr/ports/mail/courier-imap/
# make WITHOUT_OPENSSL=yes WITHOUT-PAM=yes WITHOUT_AUTHDAEMON=yes WITH_VPOPMAIL=yes WITH_TRASHQUOTA=yes install

**포트로 설치시 5.3R기준으로볼때 Makefile 에서 VPOPMAIL=${LOCALBASE}/vpopmail 로 되어있어 에러가 나는 경우 이 부분의 경로를 수정해주고 다시 make를 하면 됩니다. **

# vi Makefile
VPOPMAILDIR?= ${LOCALBASE}/vpopmail
+->VPOPMAILDIR?= /home/vpopmail

위 와 같이 수정을 합니다.

<B>
==> 5.4R 에서 설치시 주의사항 :
courier-imap 을 포트로 설치히면 이때 버전이 5.3R보다 높은 4.0.2버전이 설치된다.
이는 Makefile에서 VPOPMAIL이란 변수가 사라져서 vpopmail을 소스로 설치한 경우 "/usr/local/vpopmail/" 에서 파일을 찾을수 없다고 하면서 에러를 내고 인스톨이 중지된다.

그럼 인스톨중에 생성한 /usr/local/vpopmail을 삭제하고

1. /usr/ports/mail/vpopmail/Makefile 에 있는 PREFIX의 경로를 현재 설정에 맞게 수정한 다음 다시 make install
/usr/ports/mail/vpopmail/Makefile:
# User-configurable variables
#
# Define these to change from the default behaviour
#
[...]
# PREFIX - installation area for vpopmail (see comment below)
[...]
# Uncomment this, or set PREFIX to /home if you have an existing
# vpopmail install with the vpopmail users' home directory set to
# /home/vpopmail - package rules dictate we default
to /usr/local/vpopmail
#
#PREFIX?= /home
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ==> 이부분의 주석을 해제한다.

2. 심볼릭링크를 걸어서 해결한다.
# ln -s /home/vpopmail /usr/local/vpopmail

명 령어로 링크를 생성 한 다음 위의 make ... 명령을 다시 실행하면 원활히 진행이 된다.

imap 인증시에 vpopmail의 인증시스템을 사용합니다.


6. courier-imap의 세팅을 변경합니다.

# cd /usr/local/libexec/courier-imap/authlib/


Vchkpw 의 인증모듈만 남겨둡니다. (??)

# mkdir sample
# mv * ./sample(Vchkpw는 제외)
==> mv authcustom authpam authuserdb ./sample


////////////////////////////////////////////////////////////////////
[주 의]
5.4R 에서 포트로 courier-imap설치후 변화된점.

/usr/local/lib/courier-authlib/libauthvchkpw.so.0
/usr/local/lib/courier-authlib/libauthvchkpw.so
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ==> 기존의 파일대신에 생기는 파일이다.

디렉토리 구조의 변화로 인해
# cd /usr/local/libexec/courier-imap/authlib/
이 존재하지 않는다.
대신 아래와 같이 .so파일이 생성되는것을 알 수 있다.

#find / | egrep authvchkpw
/usr/local/lib/courier-authlib/libauthvchkpw.so.0
/usr/local/lib/courier-authlib/libauthvchkpw.so

그 래서 5.4R에서 설치시
=================================================
Vchkpw 의 인증모듈만 남겨둡니다. (??)

# mkdir sample
# mv * ./sample(Vchkpw는 제외)
==> mv authcustom authpam authuserdb ./sample
=================================================
부 분은 일단 건너뛴다.



/etc/rc.conf 파일에
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"

항 목을 추가한다.
////////////////////////////////////////////////////////////////////


# cd /usr/local/etc/courier-imap
# mv imapd.dist imapd
# vi imapd <- imapd의 내용을 수정한다.

*****************************************************

(아 래 ADDRESS는 수정해도되고 안해도 됨)

ADDRESS=0
+--> ADDRESS=192.168.1.21 -> 서버 ip



##NAME: AUTHMODULES:0
...
#AUTHMODULES="authcustom authuserdb authvchkpw authpam"
AUTHMODULES="authvchkpw"


##NAME: AUTHMODULES_ORIG:0
#
# For use by webadmin
#AUTHMODULES_ORIG="authcustom authuserdb authvchkpw authpam"
AUTHMODULES_ORIG="authvchkpw"

MAXPERIP=4
+--> MAXPERIP=10 -> 동일 ip에서 최대 접속 (각자 알아서 정하세요.)

IMAPDSTART=NO
+--> IMAPDSTART=YES -> yes로 해야 대몬이 시작함
*****************************************************

# mv imapd.cnf.dist imapd.cnf
# chmod 644 imapd.cnf
# vi imapd.cnf

****************

[ req_dn ]
C=US
ST=NY
L=New York
O=Courier Mail Server
OU=Automatically-generated IMAP SSL key
CN=localhost
emailAddress=postmaster@example.com --> emailAddress=postmaster@pettree.co.kr

****************

# chmod 444 imapd.cnf
# mv quotawarnmsg.example quotawarnmsg
# cd /usr/local/etc/rc.d

마찾가지로 sample이라는 폴더를 만들고 courier-imap관련 파일을 모두 옮깁니다. (courier-imap-imapd.sh 제외)

==> # mkdir sample


# mv courier-imap-imapd.sh.sample courier-imap-imapd.sh
# mv *.sample ./sample



courier-imap-imapd.sh 파일에서 imapd-ssl 관련사항들을 지웁니다.
안지우면 제대로 작동이 안되더군요... ^_____________^

# vi /usr/local/etc/rc.d/courier-imap-imapd.sh
===================================================================== 삭제된 부분

18
19 #if test ! -f /usr/local/etc/courier-imap/imapd-ssl
20 #then
21 # echo "/usr/local/etc/courier-imap/imapd-ssl does not exist, forgot make install-configure?"
22 # exit 1
23 #fi


26 #. /usr/local/etc/courier-imap/imapd-ssl

53 . /usr/local/etc/courier-imap/imapd ;#
54 # . /usr/local/etc/courier-imap/imapd-ssl ;
=====================================================================


////////////////////////////////////////////////////////////////////
==> 5.4R 포트에서 설치시 각각 해당 설정파일에 해당 항목만 존재한다.
따라서 위의 courier-imap-imapd.sh 파일에 위의 내용이 존재하질 않는다.

그리고 courier-imap-*.sh 파일이 courier_authdaemond.sh(imap인증담당)이 먼저 기동이
되어야 실행이 된다. 또한 이 데몬들은 /etc/rc.conf파일에 아래와 같이 등록이 되어야 한다.

courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
////////////////////////////////////////////////////////////////////


# /usr/local/etc/rc.d/courier-imap-imapd.sh start


이제 테스트를 해봅니다. 로컬에서 로컬, 외부에서 로컬, 로컬에서 외부를 해봅시다.
릴레이 설정도 검사합니다.



** 143포트가 열렸는지 확인합니다.

# netstat -na
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 *.143 *.* LISTEN
tcp6 0 0 *.143 *.* LISTEN

...



**



7. squirrelmail을 설치합니다.

# cd /usr/ports/mail/squirrelmail
# make install



7.1 php.ini 파일 수정

# cd /usr/local/etc
# vi php.ini-recommended(저장할때 php.ini로 저장) 혹은 vi php.ini

register_global=On
file_uploads = On

session.auto_start = 1

과 같이 수정한 후
:w php.ini => 현재 작업중인 파일을 php.ini파일로 저장
:q! => 현재 작업중인 파일을 저장하지 않고 끝냄


8. 아파치 설정에서 alias를 만들어줍니다.(httpd.conf)

# vi /usr/local/etc/apache2/httpd.conf

Alias /squirrelmail "/usr/local/www/squirrelmail/"을 추가합니다.


<Directory "/usr/local/www/squirrelmail">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>



9. squirrelmail 설정

# cd /usr/local/www/squirrelmail
# ./configure

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

configure 화면의 설정 내용.

1.Organization Preferences :
-> 6. Default Language : ko_KR

2. Server Setting :
-> 1. Domain 으로 들어가서 해당 도메인 명을 넣는다.
-> A. Update IMAP Settings : localhost:143 (courier)
-> 6. Authentication type : login <--확인

4. General Options :
-> 1. Default Charset : euc-KR


D. Set pre-defined settings for specific IMAP servers
-> courier


8. Plugins
-> 다람쥐메일의 플러그인입니다. 필요한것을 받아서 설치하세요.

# lynx www.squirrelmail.org/plugins.php 에서

아래의 플러그인을 받는다.

- unsafe_image_rules : html로 오는 메일과 그림을 바로 출력하게 해줌.
- address_add(address book) : 편지본문에서 바로 주소추가 가능하게 함
- archive_mail : 편지함의 편지를 html이나 elm형식으로 백업 가능하게 함.
- bookmarks(Add-ON) : 간단하게 즐겨찾기 기능 제공
- folder_sizes : 폴더의 사용률을 보여준다.
- msg_flags : 읽은 메시지와 읽지 않은 메시지등을 이쁜 아이콘으로 표시
- notes : 간단한 메모를 남길수 있는 기능을 제공
- view_as_html : 편지 본문에서 html과 text로 보기전환 가능


# tar -xvzpf unsafe_image_rules.xxx.tar.gz -C /usr/local/www/squirrelmail/plugins/
와 같은형식으로 squirrelmail 의 plugins 디렉토리 밑에 디렉토리를 만들어서 푼다.
( tar 의 -C 옵션은 타겟디렉토리를 지정하는 거랍니다.)



압축을 다 푼 후에
# chown -R www:www /usr/local/www/squirrelmail/plugins/


그리고 위에서 플러그 인을 추가하던 메뉴에서 해당 플러그인을 추가합니다.
(# cd /usr/local/www/squirrelmail/
# ./configure -> 8번에서 해당 플러그인을 추가하고 저장후 빠져나오기)


설 정을 하고 나옴.
그외의 설정을 한 뒤 "S"를 눌러 save를 합니다.
그 후 "q"를 눌러 빠져 나오면 됩니다.
-------------------------------------------------------------

웹 메일을 설정합니다.
여기서 imap login 형태는 login으로 합니다.
참고로 한글메일이 깨질 수가 있습니다.
이것은 php compile시 mbstring옵션을 넣으셔야 합니다.
안하셨다면 재설치