출처: http://faq.hostway.co.kr/xe/lnx_web/702
◈ 본 문서는 Linux 에서 JAVA 를 사용할 수 있도록 Apache, Tomcat 을 연동하고 SSL 을 Tomcat 에 적용하기 위한 목적으로 작성되었습니다.
◈ 테스트 시스템 정보
*Cent OS 5 *kernel 2.6.24.2 *httpd-2.2.2 *php-5.1.6 *mysql-5.0.22
*jakarta-tomcat-5.0.28 *jdk-1_5_0_15-linux-i586
◈ 보안 서버 구축
1. MYSQL
* Mysql RPM pakage 가 설치되어 있는 경우 해당 패키지를 삭제해야 하며, mysql 계정은 미리 생성해 놓아야 한다.
1-1 configuration & make & make install
[root@hostway mysql-5.0.22]# ./configure --prefix=/usr/local/mysql --with-charset=euckr
[root@hostway mysql-5.0.22]# make
[root@hostway mysql-5.0.22]# make install
1-2 mysql 데이터 디렉토리 생성 & 권한 설정
[root@hostway mysql-5.0.22]# /usr/local/mysql/bin/mysql_install_db
[root@hostway mysql]# chown -R mysql.mysql var/
1-3 데이터베이스 시작
[root@hostway mysql-5.0.22]# /usr/local/mysql/bin/mysqld_safe &
2. APACHE
2-1 아파치 소스 파일 수정
[root@hostway httpd-2.2.2]# pwd
/usr/local/src/httpd-2.2.2
[root@hostway httpd-2.2.2]# vi server/mpm/prefork/prefork.c
#define DEFAULT_SERVER_LIMIT 256 --à 256 에서 2048 로 수정
[root@hostway httpd-2.2.2]# vi server/mpm/worker/worker.c
#define DEFAULT_SERVER_LIMIT 16 --à 16 에서 256 으로 수정
2-2 configuration & make & make install
[root@hostway httpd-2.2.2]# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-modules=shared --enable-module=rewrite--enable-ssl
[root@hostway httpd-2.2.2]# make && make istall
*참고 : linux 버전에 따라 openssl 관련 에러가 발생할 수 있으며, mod_ssl 2.1.6은 OpenSSL 0.8.1b와 0.9.1c 버전 사이에서만 동작한다.
2-3 apache 파라미터 수정
[root@hostway ~]# vi /usr/local/apache2/conf/extra/httpd-mpm.conf
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150 --à 150 에서 1024 or 2048 로 수정
MaxRequestsPerChild 0
</IfModule>
2-4 apache start
[root@hostway httpd-2.2.2]# /usr/local/apache2/bin/apachectl start
3. PHP & Zend Optimizer
3-1 configuration & make & make install
[root@hostway php-5.1.6]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --enable-sysvshm=yes --enable-sysvsem=yes --enable-debug=no --enable-track-vars=yes --enable-url-fopen-wrapper=yes --with-ttf --with-png-dir=/usr --with-zlib-dir --with-jpeg-dir=/usr --with-gdbm=/usr --enable-ftp --with-tiff-dir=/usr --enable-memory-limit --enable-mbstring --with-expat-dir=/usr --enable-sockets --enable-wddx --with-freetype-dir=/usr --enable-bcmath --enable-mbstr-enc-trans --enable-mbregex --enable-exif --with-gd --enable-gd-native-ttf --enable-gd-imgstrttf --enable-calendar --with-openssl=/usr
[root@hostway php-5.1.6]# make && make install
3-2 php.ini 복사
[root@hostway php-5.1.6]# cp -a php.ini-recommended /usr/local/php/lib/php.ini
3-3 httpd.conf 수정
[root@hostway ~]# vi /usr/local/apache2/conf/httpd.conf
AddType application/x-httpd-php .php .htm .html
AddType application/s-httpd-php-source .phps
DirectoryIndex index.html index.htm index.php index.jsp
3-4 Zend 설치
[root@hostway src]# cd ZendOptimizer-2.6.2-linux-glibc21-i386
[root@hostway ZendOptimizer-2.6.2-linux-glibc21-i386]# sh install.sh
*참고 : phpinfo 함수를 실행하여 PHP 페이지가 정상적으로 로딩되는지 확인한 후 다음 작업을 진행한다.
4. JAVA
4-1 jdk-1_5_0_15-linux-i586.bin 다운로드 후 실행하고 라이센스 사용에 동의한다.
[root@hostway src]# sh jdk-1_5_0_15-linux-i586.bin
4-2 jdk1.5.0_15 디렉토리가 생성되면 java 로 디렉토리 이름과 위치를 변경한다.
[root@hostway src]# mv jdk1.5.0_15 /usr/local/java
5. TOMCAT
5-1 소스의 압축을 풀고 디렉토리 이름을 변경한다.
[root@hostway src]# tar zxvf jakarta-tomcat-5.0.30.tar.gz
[root@hostway src]# mv jakarta-tomcat-5.0.30 /usr/local/tomcat
5-2 vi /etc/profile 에 자바 환경변수 추가 적용
[root@hostway src]# vi /etc/profile
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_HOME CATALINA_HOME
[root@hostway src]# source /etc/profile
5-3 tomcat start & 포트 확인
[root@hostway src]# cd /usr/local/tomcat/bin/
[root@hostway bin]# sh startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME: /usr/local/java
[root@hostway bin]# netstat -atn |grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
5-4 8080 포트에 접속하여 tomcat 기본 페이지가 로딩되는지 확인
6. Tomcat-connector
6-1 Tomcat의 경우 기본적으로 8080포트를 사용한다. 이것을 80포트와 연동 시키기 위해서 tomcat-connector 를 설치 한다.
[root@hostway src]# tar zxvf tomcat-connectors-1.2.26-src.tar.gz
[root@hostway src]# cd tomcat-connectors-1.2.26-src/native
[root@localhost native]# sh buildconf.sh (not required unless you are a developer)
[root@hostway native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs
[root@hostway native]# make && make install
6-2 mod_jk.so 모듈이 생성되었는지 확인
[root@hostway apache2]# ls -al /usr/local/apache2/modules/mod_jk.so
-rwxr-xr-x 1 root root 736022 Mar 14
6-3 아파치 설정 파일에 모듈 추가
LoadModule jk_module modules/mod_jk.so
6-4 httpd.conf 수정
DocumentRoot "/usr/local/tomcat/webapps/ROOT"
<Directory "/usr/local/tomcat/webapps/ROOT">
6-5 httpd.conf 에 톰캣 설정 파일 경로 지정
JkWorkersFile /usr/local/tomcat/conf/workers.properties
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel info
JkMount /*.jsp ajp13
JkMount /webapps/* ajp13
JkMount /ROOT/* ajp13
6-6 workers.properties 을 생성하고 다음 내용을 입력한다.
*참고 : 5.5 버전은 workers.properties 파일이 존재하며 톰캣, 자바 경로만 수정하면 됨
[root@hostway conf]# cd /usr/local/tomcat/conf/
[root@hostway conf]# vi workers.properties
# Start setup file
#
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
ps=/
worker.list=ajp12, ajp13
# Definition for Ajp13 worker
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# End setup file
6-7 server.xml 편집
[root@hostway htdocs]# vi /usr/local/tomcat/conf/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
위 부분을 찾아서 아래 내용 추가
<Context docBase="/usr/local/tomcat/webapps/ROOT" path=""/>
6-8 /usr/local/tomcat/webapps/ROOT 에 aaa.jsp 테스트 파일 생성
[root@hostway htdocs]# vi /usr/local/tomcat/webapps/ROOT/aaa.jsp
<%
out.println("Hello, JSP");
%>
* 80 번 포트로 웹페이지에 접속하여 JSP 파일을 잘 처리하는지 확인한다.
7. JDBC
7-1 압축을 풀고 디렉토리 변경
[root@hostway src]# tar zxvf mysql-connector-java-5.1.6.tar.gz
[root@hostway src]# mv mysql-connector-java-5.1.6 /usr/local/mysql-jdbc
7-2 jdbc 환경 설정
[root@hostway src]# vi /etc/profile
export CLASSPATH=$CLASSPATH:/usr/local/mysql-jdbc/mysql-connector-java-5.1.6-bin.jar
[root@hostway src]# sourece /etc/profile
7-3 자바 코드로 드라이버 로딩 테스트
[root@hostway root]# vi d.java
import java.sql.*;
public class d{
public static void main(String [] args){
String driver = "org.gjt.mm.mysql.Driver";
String user = "root";
String pass = "";
String dbURL = "jdbc:mysql://localhost/mysql";
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(dbURL, user, pass);
System.out.println("Driver found! Connection Good!");
}catch(ClassNotFoundException cne){
System.out.println("jdbc driver not founded!");
}catch(SQLException se){
System.out.println("sql error: "+se);
}
}
}
7-4 컴파일
[root@hostway ~]# javac d.java
7-5 connection test
[root@hostway root]# java d
Driver found! Connection Good!
8. SSL
* 아파치와 톰캣은 서로 다른 인증서를 사용한다. 인증서 발급 신청서에 아파치에 적용할 것인지 톰캣에 적용할 것인지를 명시해야 한다.
8-1 인증키 생성
[root@hostway conf]# keytool -genkey -alias tomcat -keyalg RSA -keystore kaka.key
8-2 kaka.key 를 이용하여 CSR 코드 생성
[root@hostway conf]# keytool -certreq -keyalg RSA -alias tomcat -file kaka.csr -keystore /usr/local/tomcat/conf/kaka.key
8-3 체인 인증서 를 keystore에 저장
keytool -import -alias root -keystore /usr/local/tomcat/conf/kaka.key -trustcacerts -file /usr/local/tomcat/conf/UTNAddTrustServerCA.crt
8-4 실제 웹 서버 인증서를 keystore에 저장
keytool -import -alias tomcat -keystore /usr/local/tomcat/conf/kaka.key -trustcacerts -file /usr/local/tomcat/conf/kaka.crt
8-5 server.xml configuration
[root@hostway ~]# vi /usr/local/tomcat/conf/server.xml
<Connector port="443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat/conf/kaka.key"
keystorePass="12345"/>
* port 는 443 으로 변경하고 keystore 의 경로를 적는다.
* keystorePass 는 csr 생성 시 입력했던 암호를 넣어준다.
8-6 tomcat stop & start & apache restart
[root@hostway ~]# shutdown.sh
[root@hostway ~]# startup.sh
[root@hostway ~]# /usr/local/apache2/bin/apachectl restart
8-7 인증서 확인
인터넷 익스플로러 7에서는 상단에 자물쇠 마크가 있다. 자물쇠 마크가 올바르게 표시되면 암호화 통신이 되고 있음을
의미한다. 이것을 클릭하면 인증서 정보를 볼 수 있다.
'unix' 카테고리의 다른 글
리눅스 자바 설치시 실행 우선순위 수정하기 (1) | 2012.07.18 |
---|---|
리눅스 방화벽 iptables 설정 (0) | 2012.06.27 |
리눅스 계정관리 (0) | 2010.08.25 |
vmstat 사용하기 (0) | 2010.06.14 |
시스템 모니터링 명령어 : vmstat, iostat, free, top, sar Linux :: 명령어 (0) | 2010.06.14 |