기존 설치 파일 삭제
먼저 설치되어있던 아파치, mysql, php 를
# yum remove httpd
# yum remove mysql
# yum remove php 로 제거
아파치 설치
가. 소스코드로 apache만 설치
http://httpd.apache.org 사이트에서 아파치 다운로드
httpd-2.2.15.tar.gz 다운
# tar zxvf httpd-2.2.15.tar.gz
# cd httpd-2.2.15
#./configure --prefix=/usr/local/apache-2.2.15 --enable-so --enable-rewrite --with-mpm=worker \
--enable-headers
인터넷에서 접할 수 있는 여러 apache 설치 문서에서 -–bindir, --sbindir, --enable-layout 등을
사용하여 리눅스 공용 bin, sbin dir로 옮기는 경우가 있는데, 관리상 불편을 초래하므로
절대 권장하지 않는다.
--prefix
설치경로에 몰아 넣는 디폴트 설정에 따르도록 하자.
--enable-so
옵션은 동적공유객체(DSO) 사용 옵션으로 설치 당시의 공유객체들을 정적으로 사용하고 나중에 추가 될 공유객체들의 httpd.conf 에서 추가할 수 있게 한다. (httpd –l 로 확인)
--with-mpm=worker
다중처리모듈을 worker로 설정한다. worker 방식은 쓰레드를 사용하여 많은 사용자수에 유연하게 대응할 수 있는 높은 확장성(scalability)이 특징이다.
리눅스에서 설치 시 기본값은 prepork 인데, 쓰레드를 사용하지 않으며 MaxClient 256 제한이라는 단점이 있다. worker 옵션을 적용하면 더 적은 메모리를 사용하여 더 빠른 속도를 낼 수 있다 --enable-rewrite
정규표현식을 사용하여 URI를 포워딩 해주는 유용한 모듈로써 파라미터를 숨겨서 깔끔한 URI 처리가 가능하다.
--enable-headers
IE6 버전에서 각각의 프레임에서 쿠키를 구울 수 없는 것을 헤더를 직접 컨트롤함으로써 사용 가능하게 하는 목적으로 쓰인다.
# make
# make install
심볼릭 링크를 만든다.
# ln -s /usr/local/apache-2.2.15 /usr/local/apache
환경설정
# vi /etc/profile
다음을 추가한다.
# Apache 2.2.15
export APACHE_HOME=/usr/local/apache
export PATH=$PATH:$APACHE_HOME/bin
/etc/profile을 저장한 후
# source /etc/profile
Apache 실행
apachectl start
iptables 에서 80 추가
# service iptables stop
# vi /etc/sysconfig/iptables
…
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
…
# service iptables start
입력 후 브라우저에서 http://localhost/ 입력 후 내용이 뜨면 성공.
확인 후 아파치 종료
# apachectl stop
아파치 자동실행을 위해 /etc/rc.d/rc.local 제일 마지막 줄에 다음 내용 추가
# vi /etc/rc.d/rc.local
/bin/sh -c '/usr/local/apache/bin/apachectl start'
저장 후 빠져나옴
나. 소스코드로 apache와 openssl 설치 (update 2011.5.24)
설치 버전
Apache - httpd.2.2.19.tar.gz
openssl - openssl-1.0.0d.tar.gz
설치 순서
openssl 설치 -> 개인키와 인증서 생성 -> -> apache 설치(mod_ssl는 apache 2.x 설치 시 포함)
설치 방법
1. openssl 설치
시스템에 openssl이 설치 되어 있는지 확인한다.
# rpm -qa | grep openssl
만약 설치 되어 있다면 다음 단계로 개인키와 인증서를 생성한다.
http://www.openssl.org에서 openssl-1.0.0d.tar.gz 를 다운 받아 설치한다.
# tar xvfz openssl-1.0.0d.tar.gz
# cd openssl-1.0.0d
# ./config --prefix=/usr/local/openssl
# make; make install
2. 개인키와 인증서 생성
openssl 을 이용하여 인증서를 만든다.
인증서를 보관할 디렉토리를 정하고 해당 위치에서 명령어를 입력한다.
Root 인증서(self-signed certificate)를 발행(issue)한다.
# openssl req -new -x509 -days 3650 -sha1 -newkey rsa:1024 \
-nodes -keyout server.key -out server.crt \
-subj '/O=company/OU=dev/CN=www.company.com'
Generating a 1024 bit RSA private key
....................++++++
......++++++
writing new private key to 'server.key'
-----
server.key는 개인키이므로 root만 읽을 수 있도록 한다.
# chmod 600 server.key
옵션 내용을 살펴보자
- -x509 는 인증서가 요청(request)되었다는 의미보다는 인증서가 요구(required)된다는 것을 언급한다. 즉 인증서를 직접 생성한다는 것이다. server.crt 와 함께 self-signed 발행의 가장 큰 특징의 옵션이다.
- -days 365 는 인증서가 일년 후에 만료된다는 것이다. 기간을 확장할 수 있다. 만료기간을 늘리고 싶다면 만료시점을 기억했다가 필요할 때 갱신(renew)하면 될 것이다.
- -sha1 SHA1 암호방법을 사용했음을 의미한다.
- rsa: 1024 RSA의 키 길이를 1024 bit로 두었다는 뜻이다(역자주: 요즘은 1024bit의 안정성 때문에 2048bit로 가고 있는 추세이다. 하지만 암호화 연산 시간이 3~4배 늘어난다).
- -nodes 암호문을 쓰지 않음을 의미한다.
- -keyout, -out private 키(server.key) 와 인증서(server.crt)의 저장위치를 지정한다. 키는 반드시 root 권한만이 읽을 수 있어야 한다. 반면, 인증서는 누구라도 읽을 수 있게 한다. 즉 Apache를 사용하는 유저가 읽을 수 있어야 한다.
- -subj 이 플래그는 회사 이름, 부서 이름, 웹 사이트 주소를 설정한다. 이것을 그냥 두면 프롬프트로부터 입력을 받게 된다. CN은 여러분이 적은 웹 사이트의 주소와 반드시 일치해야 한다. 그렇지 않으면 인증서가 일치하지 않게 되고 사용자가 접속할 때 경고 메시지를 받게 된다. 접속암호를 사용하지 않았나 다시 한 번 확인해 보자.
3. apache 설치
http://www.apache.org에서 httpd-2.2.17.tar.gz를 다운받는다.
설치하기 에 서버에 접속하는 클라이언트의 수를 256 에서 8192 로 늘려주자.
이렇게 하면, 설치 후 httpd.conf 파일에 기본값 256 으로 설정되어 있는데 8192 까지 조절할 수 있다.
# tar xvfz httpd-2.2.19.tar.gz
# cd httpd-2.2.19
# vi ./server/mpm/prefork/prefork.c
#ifndef DEFAULT_SERVER_LIMIT
#define DEFAULT_SERVER_LIMIT 256
#endif
부분을 찾아 256을 8192로 바꿔준다.
openssl 설치 여부 및 아파치의 mod_ssl을 확인한다.
# rpm -qa | grep openssl
openssl 을 rpm 설치하였다면 다음 처럼 컴파일 한다.
# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-ssl
# make; make install
위와 같이 컴파일 하면 다음과 같이 핵심 모듈 들만 static하게 컴파일 되고
나머지 기본 모듈들은 /usr/local/apache2/modules/ 에 *.so모듈로 dynamic 하게 컴파일 된다.
단, mod_ssl.so는 기본으로 생성이 되지 않아 --enable-ssl 옵션을 해 줘야 한다.
그리고 httpd.conf 설정에서 LoadModule로 포함 되어 필요 시 dynamic하게 링크 하게 된다.
httpd -l명령으로 static 모듈 들을 확인 할 수 있다.
# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
*.c 로 끝나는 것들이 static 하게 컴파일 된 것이다.
mod_so.c는 DSO방식으로 설치된 것을 말한다.
동적으로 추가 된 모듈들을 확인한다.
# ls /usr/local/apache2/modules
또는
아래와 같으나 대부분의 옵션이 1.x 에서 사용하는 것이다.
# ./configure --prefix=/usr/local/apache2 --enable-rule=SHARED_CORE --enable-module=so --enable-shared=max --enable-ssl
# make; make install
위와 같이 컴파일 하면 모듈들이 대부분 코어와 함께 static하게 설치가 된다.
따라서 httpd.conf 설정에는 LoadModule로 포함 되어 있지 않다.
또는
openssl을 소스코드로 설치하였다면 ssl의 설치 경로를 지정하여 설치한다.
# ./configure --prefix=/usr/local/apache2 --with-ssl=/usr/local/openssl --enable-mods-shared=most --enable-ssl
# make; make install
옵션 설명
--prefix=/usr/local/apache2
부분에는 아파치가 설치될 경로를 입력
--enable-rule=SHARED_CORE
아파치 코어를 DSO방식으로 컴파일 하는 옵션이다.
아파치 2.x에서는 enable-so 라는 옵션으로 mod_so 모듈을 올려준다. 즉, --enable-rule=SHARED_CORE는
더 이상 필요치 않는 옵션이다.
--enable-module=so
동적(DSO)가 아닌 정적으로 mod_so 모듈을 올리겠다는 말이다. mod_so는 아파치 core 와 함께 반드시
정적으로 올라가야 하는 모듈이다.
mod_so는 차후 DSO방식으로 모듈들을 추가하여 사용 하기 위해서 반드시 필요한 모듈이고 DSO로 컴파일 할 수 없는 모듈이다.
이 옵션을 주지 않아도 mod_so 모듈은 기본 값으로 정적으로 mod_so.c로 컴파일 된다.
이 옵션도 2.0 부터 enable-so 라는 옵션으로 대체되어
쓸모가 없어졌다고 볼 수 있다.
--enable-shared=max
아파치 핵심 모듈들을 DSO방식으로 컴파일 하라는 옵션이다.
src/modules/standard 밑에 모든 so 모듈을 DSO로 올림
1점대 DSO에서는 enable-module과 enable-shared는 쌍으로 와야 한다
이 옵션은 2점대에서는 --enable-mods-shared=most로 써야지 맞다.
--enable-so
아파치 2.0 부터는 DSO를 사용하기 위해 --enable-so 만 붙여 주면 된다
즉 아파치 1.x 의 옵션 --enable-module=so가 --enable-so로 변경 되었다.
--enable-ssl
mod_ssl 모듈을 생성해 준다. 따라서 --enable-module=so 옵션과 함께 또는 아무런 옵션
없이 --enable-ssl 만 사용하면 ssl 모듈도 mod_ssl.c로 정적으로 추가 되고,
--enable-mods-
shared=most과 함께 사용되면 mod_ssl.so로 동적으로 모듈이 추가 된다.
--enable-setenvif
일부 Internet Explorer와의 호환을 위한 것
--enable-mods-shared=most
enable-so가 없느냐? 그건 간단하다. --enable-mods-shared=most 옵션(동적으로 올릴 거 지정해준다.)을
붙이면 --enable-so 가 자동으로 붙기 때문이다. 즉, --enable-mods-shared=most 하나면 다 해결
되는 것이다.
DSO란 LoadModule를 이용해서 동적으로 모듈을 올리는걸 말한다. --enable-mods-shared=most 이
옵션을 적어 주면, 대부분의 apache 옵션들이 LoadModule 문법에 의해 동적으로 올라가 있다.
(httpd.conf 를 확인해 보자.)
참고 사항
apache 2.x 버전에는 기본적으로 mod_ssl 모듈을 기본적으로 포함하고 있다.
apache 1.x를 계속 사용한다면 mod_ssl을 설치가 필요하다.(www.modssl.org)
하지만 apache 2.x을 설치 하였기 때문에 컴파일 시 ssl 모듈을 설정해 주면 된다.
apache 1.x에서는 DSO로 컴파일 하려면 다음 세 옵션이 필요하고
--enable-module=so
--enable-rule=SHARED_CORE
--enable-shared=max
httpd -l 명령을 입력하면 그 결과 중 mod_so.c라는 것이 출력되면 DSO방식으로 설치된 것이다.
apache 2.x 에서는 DSO로 컴파일 하려면 다음 옵션만 필요하다.
--enable-mods-shared=most
이 옵션은 선택한 기능 중 모듈로 처리 가능한 모듈은 모두 so(shared object)로 처리 할 것을 지정하는 것이며, 이를 통해 아파치 웹 서버를 동적으로 구현할 수 있다. 일반적으로 아파치 웹 서버는 개별 기능(모듈)을 httpd라는 데몬 파일에 모두 집어 넣는 형태를 취한다. 이럴 경우 개별 기능을 다시 변경하려면 컴파일을 통해 httpd를 다시 생성하여야 하는 번거로움이 있다. 이러한 문제점을 해결하기 위하여 최소한의 기능(모듈)만 httpd에 포함시키고, 나머지 개별 기능(모듈)은 개별 파일(so 파일)로 처리하여 웹 서버를 구동할 때 참조하는 설정 파일인 httpd.conf에서 사용여부를 지정하는 방식으로 컴파일 할 것이다.
하지만 위 옵션들을 주지 않으면 핵심 모듈들이 기본적으로 정적으로 컴파일 된다.
공통적으로 enable-ssl 하여야 mod_ssl.so가 동적으로 추가가 된다.
재설치 할 때는 make clean 하여 기존 configure를 삭제한다.
4. 환경 설정
# vi /etc/profile
다음을 추가한다.
# for Apache
export APACHE_HOME=/usr/local/apache2
export PATH=$PATH:$APACHE_HOME/bin
/etc/profile을 저장한 후 적용
# source /etc/profile
iptables 에서 80 추가
# service iptables stop
# vi /etc/sysconfig/iptables
…
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
…
# service iptables start
library PATH 잡아주기
# echo "/usr/local/apache2/lib" >> /etc/ld.so.conf
# echo "/usr/local/apache2/modules" >> /etc/ld.so.conf
# ldconfig
명령어나 프로그램에서 라이브러리가 필요할 때 찾는 PATH를 기록 해 줘야 한다. 기존에는 /usr/local/apache/lib 라는 경로가 지정되어 있지 않기 때문에 못 찾는 수가 발생한다. 미연에 방지 하기 위해서 적어주는 습관을 들이는 게 좋다. APM 설치 시에는 발생하지 않지만, 실질적으로 그러한 문제가 발생하고 있다. 프로그램 설치 후 꼭 ld 에 library 경로를 적어주기 바란다.
5. apache 설정
httpd.conf 파일 수정
# vi /usr/local/apache2/conf/httpd.conf
# mod_ssl.so 모듈이 동적으로 추가가 되도록 주석을 해제한다.(기본으로 해제 되어 있음)
LoadModule ssl_module modules/mod_ssl.so
# httpd-ssl.conf 설정이 포함 되도록 주석을 해제한다.
Include conf/extra/httpd-ssl.conf
# SSL Contents와 일반 Contents을 구분하기 위해 SSL 접근 Directory를 별도 설정한다.
<Directory "/usr/local/apache2/htdocs_ssl">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
httpd-ssl.conf 파일 수정
ssl은 가상호스트로 동작한다.
# vi /usr/local/apache/conf/extra/httpd-ssl.conf
# SSL Contents와 일반 Contents을 구분하기 위해 SSL 접근 Directory를 별도 설정한다.
DocumentRoot "/usr/local/apache2/htdocs_ssl"
# 개인키와 인증서를 다음 경로로 복사한다.
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
6. 테스트하기
# /usr/local/apache/bin/apachectl start
https://localhost 했을 때 인증서 및 아파치 첫 화면이 보여야 함.
7. 기타
하나의 웹 서버로 암호화 및 기존의 방법을 모두 지원 하는 방법
보통 대부분의 사람들은 브라우저에서 https:// 같은 것을 거의 입력하지 않기 때문에
최초의 페이지는 http://로 하고 링크에다 https://를 넣는 것이 좋음.
이를 위해서 apache의 VirtualHost 기능을 이용.
-------------------httpd.conf ----------------------------------------
NameVirtualHost 206.67.100.194:80
Listen 80
Listen 443
Port 80
SSLDisable
Port 80
SSLDisable
ServerAdmin cbrahmer@realpower.com
DocumentRoot /www/realpower/public_html
ServerName www.realpower.com
ServerAlias *.realpower.com
ErrorLog /www/logs/www.realpower.com-error_log
CustomLog /www/logs/www.realpower.com-access_log combined
CustomLog /www/logs/bigdog combined
SSLEnable
Port 443
SSLCertificateFile /usr/local/ssl/certs/new.cert.cert
SSLCertificateKeyFile /usr/local/ssl/certs/new.cert.key
ServerAdmin cbrahmer@realpower.com
DocumentRoot /www/realpower/public_html
ServerName www.realpower.com
ServerAlias *.realpower.com
ErrorLog /www/logs/www.realpower.com-error_log
CustomLog /www/logs/www.realpower.com-access_log combined
CustomLog /www/logs/bigdog combined
다. RPM으로 apache와 openssl 설치
일단 설치 환경을 만듭니다.
# yum install openssl
# yum install httpd
* yum으로 설치할때에는 -y 옵션을 가급적이면 주지 않도록 합니다. (초보자는 더욱!)
1. mod_ssl 설치. yum의 세계는 어찌나 다양한지 .. -0-;
# yum install mod_ssl
2. 설정 파일이 잘 위치하고 있는가 확인.
# ls
/etc/httpd/conf.d/ssl.conf
* 여기까지 했으면 99% 완료한 것임.
3. 자~ 이제 귀찮은 설치를 진행하러 가볼까요? ㅋ
* 보안키가 설치될 곳은 /etc/httpd/conf 로 하겠습니다.
(일반적으로 다른곳에서 생성 후, 복사를 하는 게 보통입니다.:))
* .key 파일을 생성할때에는 두번의 phrases를 입력받습니다. 잘 기억해야 합니다.
# cd
/etc/httpd/conf
# openssl genrsa -des3 -out ssl.key
1024
Generating RSA private key, 1024 bit long modulus
...++++++
............++++++
e is 65537 (0x10001)
Enter pass phrase for ssl.key:
Verifying - Enter pass phrase for ssl.key:
# openssl req -new -key
ssl.key
-out ssl.csr // name.csr 에도 역시 적당한 이름.
* csr 생성할때에 이것저것 물어봅니다. 순서는 아래와 같습니다.
국가
시/도
구/군
회사명
부서명
도메인 주소
관리자 이메일
*A challenge password와 An optional company name은 입력하지 않습니다. 걍~ Enter gogo!
실제로 운영하는 경우에는 만들어진 ssl.csr 파일을 보내서 crt 파일을 받아야 하지만,
테스트용으로는 아래와 같이 crt를 만들면 됩니다.
# openssl x509 -in
ssl.csr -out ssl.crt -req -signkey ssl.key
-days 3650
Signature ok
subject=/C=KR/L=Seoul/O=Cemlin/OU=Tech/CN=Fedora14/emailAddress=admin@cemlin.ip.ne.kr
Getting Private key
Enter pass phrase for ssl.key:
* -days 의 옵션은 개발하는 기간동안 운영하도록 날짜를 조절합니다. (1년의 경우는 365로 수정)
/etc/httpd/conf 파일을 확인하여 ssl.key, ssl.crt, ssl.csr 3개의 파일이 생성되었는지 확인.
그리고! httpd의 Start!
# /etc/rc.d/init.d/httpd start
# Password 를 물어보면 입력합니다.
이상 끝!
MySQL 설치 (update 2011.05.25)
1. 설치
www.mysql.com 에서 mysql-5.4.2-beta 다운로드
# tar zxvf mysql-5.4.2-beta
# cd mysql-5.4.2-beta
# ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=utf8 --with-extra-charsets=all
# make
# make install
여기서 --prefix는 설치할 경로를 말하며 charset은 mysql에서 기본으로 utf8을 사용하겠다는 것이다.
2. 환경 설정
라이브러리를 등록하기 위해서 ldconfig를 사용하면 편리하다. 라이브러리기 있는 디렉토리를
지정. /etc/ld.so.conf를 수정하여 제일 아래 줄에 /usr/local/mysql/lib/mysql 를 추가 한다
# vi /etc/ld.so.conf
/usr/local/mysql/lib/mysql
그후 이를 적용시키기 위해
# ldconfig
시작 스크립트 파일 복사
mysql 서비스를 하기 위해서 아래와 같은 시작 스크립트 파일을 해당 위치에 복사 한다.
# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
MySQL 실행 디렉토리를 PATH에 추가
재시작시에도 PATH적용하기 위해 /etc/profile을 수정하여 PATH를 추가한다.
# vi /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
바로 적용
# source /etc/profile
부팅시 자동 시작 되도록 등록 후 서비스 시작
# chkconfig mysqld on
…
mysqld 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
…
3. MySQL 서버의 초기 DB생성
# /usr/local/mysql/bin/mysql_install_db
Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h CentOS5-Fujitsu.ustd.ip.or.kr password 'new-password'
Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/local/mysql/bin/mysqlbug script!
The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/
# ls -l /usr/local/mysql/data
-> mysql, test가 보임
rpm으로 설치 하였다면 /var/lib/mysql 경로에 설치 된다.
이것은 mysql 계정 시 설정 되므로 /etc/passwd에서 확인 할 수 있다.
# grep mysql /etc/passwd
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
4. MySQL 그룹 및 사용자 생성 후 초기 DB 소유권을 줌
# groupadd mysql
# useradd -M -d /usr/local/mysql -g mysql -s /bin/false -r mysql
# chown -R mysql.mysql /usr/local/mysql/data
-> -s /bin/false 옵션을 사용해서 유저의 로그인쉘을 사용할 수 없게 하게 함.
즉 mysql이라는 유저는 mysql 데몬을 실행하기 위한 유저일 뿐이라는 것이죠.
서버의 보안강화 측면에서 외부에셔 mysql 유저로 쉘 로그인은 할 필요가 없겠죠.
5. 데몬 구동 및 중지
# service mysqld start
or
# /etc/rc.d/init.d/mysqld start
Starting MySQL.[ OK ]
# ps -ef | grep mysql
root 7763 1 0 22:13 pts/2 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/CentOS5-Fujitsu.ustd.ip.or.kr.pid
mysql 7818 7763 0 22:13 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=/usr/local/mysql/data/CentOS5-Fujitsu.ustd.ip.or.kr.err --pid-file=/usr/local/mysql/data/CentOS5-Fujitsu.ustd.ip.or.kr.pid
# netstat -anpt | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7818/mysqld
※ root 계정으로 mysqld_safe 실행, mysql 계정으로 mysqld가 실행 이유 확인하기???
socket은 mysql 계정으로 mysqld가 open 하고 있다.
mysql을 구동시키는 권장방법 : /usr/local/mysqld_safe --user=mysql &
데몬 중지
# /etc/rc.d/init.d/mysqld stop
Shutting down MySQL[ OK ]
6. MySQL 계정 패스워드 적용
# mysql -u 계정 -p
하면 시스템에 없는 계정도 패스워드 없이 로그인 되지만 DDL 명령 등은 root 계정만 가능하다.
따라서 root 계정에 대한 password를 설정한다.
# /usr/local/mysql/bin/mysqladmin -u root password 'xxxx'
mysql를 접속할 수 있는 계정은 반드시 패스워드를 설정한다.
※ 아래와 같은 버그 발생시 대처
checking for termcap function library... configure: ~~~~
nucurses-devel을 설치한다.
# yum install ncurses-devel
make중 g++을 못 찾아 중단 됬을 경우
#yum install gcc-c++
g++을 설치했는데도 g++오류가 났을경우
make clean
make distclean
하고 다시 ./configure부터....
PHP 설치 (2011.06.03 update)
http://www.php.net 에서 php-5.3.6.tar.gz 다운로드
또한 php 설치 전에 설정 옵션에 포함하는 프로그램을 설치 한다. -> php 설치 매뉴얼 참조
사용된 옵션에 대한 짧은 설명
apxs2 - apache2 extension
mysqli - MySQLi is an improved version of the older PHP MySQL driver
라이브러리들이 rpm으로 설치 되어있다면 라이브러리 설치 위치 확인 후 다음과 같이 진행한다.
# tar zxvf php-5.3.6.tar.gz
# cd php-5.3.6
# ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/bin \
--with-mysqli=/usr/lib/mysql/mysql_config \
--with-gd=/usr/lib \
--with-zlib-dir=/lib \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-freetype-dir=/usr/lib \
--with-mcrypt=/usr/local/include \
--with-libxml-dir=/usr/lib \
--enable-mbstring
or
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/bin --with-mysqli=/usr/lib/mysql/mysql_config --with-gd=/usr/lib --with-zlib-dir=/lib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/lib --with-mcrypt=/usr/local/include --with-libxml-dir=/usr/lib --enable-mbstring
or mysql를 소스코드로 설치 했다면
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-gd=/usr/lib --with-zlib-dir=/lib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/lib --with-mcrypt=/usr/local/include --with-libxml-dir=/usr/lib --enable-mbstring
# make
# make install
./configure 수행 시 에러 해결책
configure: error: libjpeg.(a|so) not found.
해결방법
# wget ftp://ftp.superuser.co.kr/etc/jpegsrc.v6b.tar.gz
# tar xvfz jpegtsrc.v6b.tar.gz
# cd jpegsrc-b6
# ./configure --enable-shared --enable-static
# make
# make install
/usr/bin/install: cannot create regular file `/usr/local/man/man1/cjpeg.1': 그런 파일이나 디렉토리가 없음
# mkdir -p /usr/local/man/man1
# make install
또는
# yum install libjpeg-devel
configure: error: libpng.(a|so) not found.
해결책 :
# yum install libpng-devel
Configure: error: freetype.h not found.
해결책 :
#yum install freetype-devel
configure: error: Unable to find gd.h anywhere under /usr/lib
해결책 :
[root@fedora14 php-5.3.6]# rpm -ql gd-devel
ln -s /usr/include/gd.h /usr/lib/gd.h
--with-gd 가 맞으며 --with-gd-dir 이란 옵션은 없다.
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
해결책 :
rpm으로 설치한 libmcypt를 지우고 소스코드로 재 설치한다.
# yum remove libmcrypt
# wget http://ftp.linux.co.kr/pub/etc/libmcrypt-2.5.7.tar.gz
# tar zxvfp libmcrypt-2.5.7.tar.gz
# cd libmcrypt-2.5.7
# ./configure && make && make install
또는
# yum install libmcrypt-devel
--with-mcrypt 가 맞으며 --with-mcrypt-dir 이란 옵션은 없다.
Configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!
해결책 :
# yum install mysql-devel
make install 시 문제점
chmod: cannot access `/usr/local/apache2/modules/libphp5.so': No such file or directory
해결책 :
libphp5.so 파일을 생성할 권한이 없어서 생긴 문제입니다. 물론 root 권한으로 컴파일 하셨을 테지만 php configure시 에러 후 필요한 라이브러리를 설치했을 경우 가끔 발생하더군요. ./configure시 아무런 이상없이 넘어 가신다면 기존 php폴더를 삭제후 새로 압축 풀어서 컴파일 하시면 설치가 될 것 입니다.
즉, 소스코드 소유권을 root로 하여 처음부터 다시 시작한다.
php.ini 복사
# cp php.ini-dist /usr/local/lib/php.ini -> 5.2.x 버전인 경우
# cp php.ini-production /usr/local/lib/php.ini -> 5.3.x 버전인 경우
or
# cp php.ini-development /usr/local/lib/php.ini
다음은 아파치 설정 확인 또는 변경
libphp5.so 모듈이 제대로 입력되어있는지 확인 후 없으면 추가
# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule php5_module modules/libphp5.so -> 추가
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
AddType application/x-httpd-php .php .phtml .htm .html .inc .php5 .php4 .php3 -> 추가
AddType application/x-httpd-php-source .phps -> 추가
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
저장 후 종료
아파치 재시작
# /usr/local/apache/bin/apachectl restart 혹은 start
만약 다음과 같은 에러가 발생 할 수 있다.
httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
해결 방법은
1. /etc/sysconfig/selinux 파일에서 다음과 같이 수정하여 SElinux의 사용을 해제
SELINUX=disabled
2. # restorecon -R -v /usr/local/apache/modules -> 에러 발생한다. 원인 아직 모름. 3번 사용
3. # chcon -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
Test
제대로 설치되었는지 확인하기 위해 phpinfo.php 파일 작성
# cd /usr/local/apache2/htdocs/
# vi phpinfo.php
내용 작성
<? phpinfo() ?>
저장 후 종료
브라우져 실행 후 localhost/phpinfo.php 입력
phpinfo 내용이 보이면 성공
JDK + Tomcat + Tomcat Connectors 설치 (Update 2011.07.10)
아파치(Apache-2.x)에 톰캣(Tomcat-6.0.20)을 설치하는 방법입니다.
(JSP 페이지 가능하도록... 해준다능..)
가. JDK 설치 (Java SE Development Kit)
우선 JDK 가 필요하므로 아래 주소에서 다운로드 받습니다.
http://java.sun.com/javase/downloads/index.jsp
Sun 사이트에서는 wget 으로 받지 못하므로 직접 다운로드해서 FTP 로 서버에 올려줍니다.
다운받은 JDK 파일에 실행 권한을 주고 설치를 진행합니다.
jdk-6uxx-linux-i586-rpm.bin 파일의 경우 rpm 파일을 만들고 설치까지 완료 합니다.
# chmod +x jdk-6u26-linux-i586.bin
# ./jdk-6u26-linux-i586.bin
Sun Microsystems, Inc. Binary Code License Agreement
for the JAVA SE DEVELOPMENT KIT (JDK), VERSION 6
SUN MICROSYSTEMS, INC. ("SUN") IS WILLING TO LICENSE THE
SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE CONDITION
THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY
CODE LICENSE AGREEMENT AND SUPPLEMENTAL LICENSE TERMS
(COLLECTIVELY "AGREEMENT"). PLEASE READ THE AGREEMENT
CAREFULLY. BY USING THE SOFTWARE YOU ACKNOWLEDGE THAT
YOU HAVE READ THE TERMS AND AGREE TO THEM. IF YOU ARE
AGREEING TO THESE TERMS ON BEHALF OF A COMPANY OR OTHER
LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE LEGAL
AUTHORITY TO BIND THE LEGAL ENTITY TO THESE TERMS. IF
YOU DO NOT HAVE SUCH AUTHORITY, OR IF YOU DO NOT WISH
TO BE BOUND BY THE TERMS, THEN YOU MUST NOT USE THE
SOFTWARE ON THIS SITE OR ANY OTHER MEDIA ON WHICH THE
SOFTWARE IS CONTAINED.
................
................
Do you agree to the above license terms? [yes or no]
위의 라이센스에 동의하고 넘어가게 되면 현재 디렉토리에 압축이 풀어집니다.
압축이 풀어진 후 아래 메세지가 나오며 엔터를 눌러 빠져 나옵니다.
Java(TM) SE Development Kit 6 successfully installed.
Product Registration is FREE and includes many benefits:
* Notification of new versions, patches, and updates
* Special offers on Sun products, services and training
* Access to early releases and documentation
Product and system data will be collected. If your configuration
supports a browser, the Sun Product Registration form for
the JDK will be presented. If you do not register, none of
this information will be saved. You may also register your
JDK later by opening the register.html file (located in
the JDK installation directory) in a browser.
For more information on what data Registration collects and
how it is managed and used, see:
http://java.sun.com/javase/registration/JDKRegistrationPrivacy.html
Press Enter to continue.....
압축이 풀린 디렉토리를 원하는 곳으로 이동시킵니다.
# mv jdk1.6.0_26 /usr/local/jdk1.6
# ls -al /usr/local/jdk1.6
합계 19028
drwxr-xr-x 10 root root 4096 9월 20 18:20 .
drwxr-xr-x 17 root root 4096 9월 20 18:23 ..
-r--r--r-- 1 root root 3767 7월 31 22:42 COPYRIGHT
-r--r--r-- 1 root root 17179 7월 31 22:42 LICENSE
-r--r--r-- 1 root root 28329 7월 31 22:42 README.html
-r--r--r-- 1 root root 25390 7월 31 22:42 README_ja.html
-r--r--r-- 1 root root 20768 7월 31 22:42 README_zh_CN.html
-r--r--r-- 1 root root 249556 7월 31 22:42 THIRDPARTYLICENSEREADME.txt
drwxr-xr-x 2 root root 4096 8월 1 00:39 bin
drwxr-xr-x 7 root root 4096 8월 1 00:39 db
drwxr-xr-x 10 root root 4096 8월 1 00:39 demo
drwxr-xr-x 3 root root 4096 8월 1 00:39 include
drwxr-xr-x 7 root root 4096 9월 20 18:19 jre
drwxr-xr-x 3 root root 4096 9월 20 18:19 lib
drwxr-xr-x 4 root root 4096 8월 1 00:39 man
-r--r--r-- 1 root root 5299 9월 20 18:20 register.html
-r--r--r-- 1 root root 5731 9월 20 18:20 register_ja.html
-r--r--r-- 1 root root 4909 9월 20 18:20 register_zh_CN.html
drwxr-xr-x 9 root root 4096 8월 1 00:39 sample
-rw-r--r-- 1 root root 19029023 7월 31 22:42 src.zip
/etc/profile 환경설정 파일 맨 아래에 PATH 를 추가 해줍니다.
# vi /etc/profile
#Java Setting
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
export PATH=$PATH:$JAVA_HOME/bin
# source /etc/profile
나. 톰캣 설치
톰캣을 아래 주소에서 다운로드 합니다.
http://tomcat.apache.org/
apache-tomcat-7.x.x와 apache-tomcat-7.x.x-src
반드시 구분한다.
apache-tomcat-7.x.x-src는 소스 설치 버전이고,
여기선 binary(apache-tomcat-7.x.x) 설치를 설명한다.
압축을 푼 후 원하는 곳으로 이동시켜 줍니다.
# mkdir /usr/local/apache-tomcat
# mkdir /usr/local/tomcat
# mv apache-tomcat-7.0.16 /usr/local/apache-tomcat
# cd /usr/local
# ln -s apache-tomcat/apache-tomcat-7.0.16 tomcat
/usr/local/apache-tomcat 밑에 tomcat의 소스를 두고...
심볼릭링크로 /usr/local/tomcat 경로를 만들어서 접근한다...
이렇게 하면 tomcat 버젼을 바꿀 때마다 환경설정을 바꿀 필요도 없으면서..
현재 설치된 톰캣의 버젼을 바로 확인할 수 있어서 자주 이용한다.
[출처]
CentOS 5.3에서 Java와 Tomcat 설치 - Tomcat을 서비스로 관리하기..|작성자
하늘우니
/etc/profile 환경설정 파일 맨 아래에 PATH 를 추가 해줍니다.
# vi /etc/profile
# Tomcat Setting
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
저장 후 완료
환경설정을 적용시켜 줍니다.
# source /etc/profile
# echo $JAVA_HOME
/usr/local/jdk1.6
# echo $CATALINA_HOME
/usr/local/tomcat
로그 디렉토리, catalina.out 를 생성 해줍니다.
# mkdir $CATALINA_HOME/logs <- 현재 설치 버전에선 생성 되어 있다.
# chmod 777 $CATALINA_HOME/logs <- 777 퍼미션이 필요한지 검증 필요
쉘 스크립트에 실행 권한을 줍니다.
# chmod u+x $CATALINA_HOME/bin/* <- 현재 설치 버전에선 일부 적용 되어 있음
톰캣을 실행 해줍니다.
# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.6
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar
톰캣 실행을 위해서 tomcat 파일을 만든다.
# vi /etc/rc.d/init.d/tomcat
#!/bin/sh
# Startup script for Tomcat
#
# chkconfig: 35 85 15
# description: apache tomcat 6.x
#
# processname: tomcat
#
# Source function library.
. /etc/rc.d/init.d/functions
export JAVA_HOME=/usr/local/jdk1.6
export CATALINA_HOME=/usr/local/tomcat
export TOMCAT_HOME=/usr/local/tomcat
export CLASSPATH="."
PRGDIR="$TOMCAT_HOME/bin"
EXECUTABLE=startup.sh
UNEXECUTABLE=shutdown.sh
# Check that target executable exists
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
echo "Cannot find $PRGDIR/$EXECUTABLE"
echo "This file is needed to run this program"
exit 1
fi
# See how we were called.
case "$1" in
start)
echo -n "Starting Tomcat service: "
echo
daemon "$PRGDIR"/"$EXECUTABLE"
;;
stop)
echo -n "Shutting down Tomcat service: "
echo
daemon "$PRGDIR"/"$UNEXECUTABLE"
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
echo
exit 0
##
만들어진 tomcat 파일은 /etc/rc.d/init.d/ 로 이동한다.
# mv tomcat /etc/rc.d/init.d/
# chmod 755 /etc/rc.d/init.d/tomcat
tomcat 서비스 등록하고 서비스 시작
# chkconfig --add tomcat
-> runlevel 3, 5번에 자동 등록 된다.
# service tomcat start
다. 톰캣 커넥터 mod_jk 모듈 설치
아파치와 연동하기 위한 mod_jk 모듈 설치
소스 코드 다운로드 : http://tomcat.apache.org/download-connectors.cgi
# tar xzvf tomcat-connectors-1.2.32-src.tar.gz
# cd tomcat-connectors-1.2.32/native
# chmod +x buildconf.sh <- 현재 설치 버전은 적용 되어 있음
# ./buildconf.sh
rm autom4te.cache
libtoolize --force --automake --copy
aclocal
autoheader
automake -a --foreign --copy
autoconf
rm autom4te.cache
#./configure \
--with-apxs=/usr/local/apache2/bin/apxs --with-java-home=$JAVA_HOME
# make && make install
※ configure 옵션
[root@fedora14 native]# ./configure --help
`configure' configures this package to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--datadir=DIR read-only architecture-independent data [PREFIX/share]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--infodir=DIR info documentation [PREFIX/info]
--mandir=DIR man documentation [PREFIX/man]
Program names:
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET configure for building compilers for TARGET [HOST]
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-shared[=PKGS]
build shared libraries [default=yes]
--enable-static[=PKGS]
build static libraries [default=yes]
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
--enable-netscape=DIR Build Netscape/iPlanet/SunONE nsapi redirector
plugin
--enable-jni DEPRECATED: Build jni_connect.so and enable
jni_worker
--enable-EAPI Enable EAPI support (mod_ssl, Apache 1.3)
--enable-maintainer-mode
Turn on debugging and compile time warnings
--enable-prefork Turn on prefork web server mode (single-threaded)
--disable-trace Exclude trace log code from compilation
--enable-api-compatibility
Only use httpd API functions available in all
production releases. This improves binary
compatibility of module builds with httpd releases
older than the release against we build (only
between minor versions).
--enable-flock Turn on flock for shared locking if present
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-apxs[=FILE] Build shared Apache module.
FILE is the optional pathname to the apxs tool;
defaults to finding apxs in your PATH.
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-tags[=TAGS]
include additional configurations [automatic]
--with-apache=DIR Build static Apache module. DIR is the pathname to
the Apache source directory.
--with-java-home=DIR DEPRECATED: Where is your JDK root directory
--with-java-platform=VAL
DEPRECATED: Force the Java platform (value is 1 for
1.1.x or 2 for 1.2.x or greater)
--with-os-type=SUBDIR DEPRECATED: Where is your JDK os-type subdirectory
Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
CPP C preprocessor
CXX C++ compiler command
CXXFLAGS C++ compiler flags
CXXCPP C++ preprocessor
F77 Fortran 77 compiler command
FFLAGS Fortran 77 compiler flags
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
[root@fedora14 native]#
다음 경로에 mod_jk.so 모듈이 설치 되어 있으면 정상 설치
# ls -al /usr/local/apache2/modules/
…
-rwxr-xr-x. 1 root root 862265 2011-07-10 14:04 mod_jk.so
…
아파치 설정파일 httpd.conf에 내용 추가
# vi /usr/local/apache2/conf/httpd.conf
tomcat 연동 모듈인 mod_jk를 로딩 LoadModule 부분 찾아서 아래 내용 추가
LoadModule jk_module modules/mod_jk.so
인덱스페이지에 JSP 를 사용하도록 설정
DirectoryIndex index.html index.php index.jsp
apache의 root 경로 설정은 운영 상황에 맞게 설정한다.
Tomcat의 웹어플리케이션 기본 디렉토리로 Root 디렉토리를 변경 할 경우
/usr/local/tomcat/webapps/ROOT 밑에 디렉토리를 생성하여 JSP과 서블릿 파일을 저장하면 된다.
DocumentRoot "/usr/local/tomcat/webapps/ROOT"
루트 디렉토리에 접근 할 수 있도록 Deny 해제
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
#Deny from all
Allow from all
</Directory>
jk_module의 환경 설정을 위해 맨 밑에 아래 내용 추가
#JK Connection Configuration
<IfModule jk_module>
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkAutoAlias "/usr/local/tomcat/webapps"
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkUnmount /*.php ajp13
</IfModule>
만약 mod_jk.conf 파일을 별도로 /usr/local/apache/conf/extra에 만들었다면 다음 같이 내용 추가
#JK Connection Configuration
include conf/extra/mod_jk.conf <- 깔끔하므로 되도록 이 방법으로 쓰자.
※ JK Connection Configuration에 대한 설명
tomcat 컨테이너에 웹 루트 어플리케이션 디렉토리가 어디에 탑재되어 있는지 설정파일은 어디에 있는지 기타 설정에 대한 파일은 외부 파일로 따로 작성한다. conf 파일로 만들어 놓는다.
JkWorkersFile : tomcat 컨테이너와 port 통신을 위한 설정 부분으로 연동에 필요한 포트설정 부분
과 가상도메인 등의 기타 설정 파일 위치 지정
JkLogFile : 로그 파일 위치를 지정한다.
JkLogLevel : 로그 라벨을 지정한다. error 있을테고 info 등등
JkAutoAlias : 자동으로 tomcat 컨테이너에 탑재된 웹 어플리케이션 지정한다.
(설정 하지 않아도 차이가 없었다)
JkMount : 어떤url 패턴으로 서버하고 연결시킨 것인지 결정하는 것으로
/*.jsp 를 하게되면 jsp 호출시 아파치가 톰캣서버를 호출하도록한다.
* 이렇게 하게되면 모든 url 호출시 톰캣서버를 호출한다.
(이렇게 하게되면 아파치의 서버를 호출하지 못한다.)
JkUnmount : 해당 url 패턴으로 톰캣서버를 호출하지 못하도록 한다.
아파치 /usr/local/apache/conf 디렉토리에 workers.properties 파일 생성
이것은 Apache 웹서버와 tomcat 컨테이너와 통신을 하기 위한 포트 설정 부분을 별도의 파일로 따로 작성한 것이다.
사용 할 worker 목록을 지정한다. ajp13 대신 local, default 등 원하는 이름으로 지정 할 수 있다.
worker.list=ajp13 처럼 ajp13 worker만 지정하였으며, 여러 개를 지정해야 할 경우 콤마로 구분
ajp13 worker에 대한 설정 시 톰캣 5.x는 ajp13을 기본적으로 제공한다.
# vi /usr/local/apache/conf/workers.properties
workers.tomcat_home=$CATALINA_HOME
workers.java_home=$JAVA_HOME
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
저장 후 종료
아파치 재시작
# /usr/local/apache/bin/apachectl restart
JSP 작동 확인
http://서버IP:8080 <- 이것은 오직 tomcat만 호출한다.
http://서버IP/index.jsp
# netstat -anpt | grep 8009
phpinfo 페이지에서 mod_jk 모듈이 로드 됐는지 확인 [출처]
Apache 2.0.x + php 5.x + mysql 5.x 설치하기 + mod_jk로 톰캣 연동|작성자
작은나무