* Linux에 apache + php + perl + tomcat + mysql + postgres 설치 연동
1. 다운로드
MySQL 다운받기
http://www.mysql.com/downloads/
제일 하단의 Source downloads에서 받는다.
PHP 다운받기
http://www.php.net/downloads.php
Apache 다운받기
http://httpd.apache.org/dist/httpd/binaries/win32/
jdk 다운로드
http://java.sun.com/j2se/
가장 최신 버전을 다운받는다.
Tomcat 4 다운받기
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/
Tomcat connector 다운받기
http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk/release/v1.2.4/src/jakarta-tomcat-connectors-jk-1.2.4-src.tar.gz
mod_jk.conf 와 workers.properties 파일을 복사하기 위해 Tomcat 3.3 다운로드
http://jakarta.apache.org/builds/jakarta-tomcat/
postgres 다운받기
http://www.postgresql.org 에서 download의 한국 미러사이트
source에서 최신버전을 다운 받는다.
ant 다운받기
http://ant.apache.org
mod_perl 다운받기
http://perl.apache.org 또는 http://apache.kr.net/dist/module
2. jdk설치
① rpm으로 받은 jdk를 설치한다.
# sh j2sdk-1_4_2_01-linux-i586-rpm.bin
계속 읽다가 라이센스 부분에서 yes를 입력하고 엔터
# rpm --install j2sdk-1_4_2_01-linux-i586-rpm
/usr/java/j2sdk1.4.2_01 밑에 설치된다.
② 사용 편의를 위해 링크를 만든다.
# ln -s /usr/java/j2sdk1.4.2_01 /usr/local/java
③ PATH 와 CLASSPATH를 잡아준다.
# vi /etc/profile
... 젤 밑에 추가
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib/tool.jar:$JAVA_HOME/jre/lib/rt.jar
# source /etc/profile
④ 테스트
command 상에서 java 라고 쳤을때
# java
bash: java: command not found
위와 같이 나오면 안되고
# java
Usage: java [-options] class [args...]
.... 쭉~ 생략
이렇게 나와야 된다.
3. ant 설치
ant 는 postgres설치 시 --with-java 옵션을 주려면 설치가 되어 있어야 한다.
① apache-ant-1.5.4-bin.tar.gz 를 다운받았다.
② tar zxf apache-ant-1.5.4-bin.tar.gz 로 압축을 푼다.
③ mv apache-ant-1.5.4 /usr/local/ant 로 이동시킨다.
④ PATH 와 CLASSPATH를 잡아준다.
# vi /etc/profile
... 젤 밑에 추가
export ANT_HOME=/usr/local/ant
export PATH=$PATH:$ANT_HOME/bin
export CLASSPATH=$CLASSPATH:$ANT_HOME/lib/ant.jar
# source /etc/profile
4. postgres 설치
① postgersql7.3을 다운 받았따.
② tar zxf postgresql-7.3.tar.gz 로 압축을 푼다.
③ cd postgresql-7.3
④ 환경설정을 한다.
환경설정 옵션 몇 개만 설명(나머지는 나도 모름)
--with-mb=EUC_KR 한글 사용을 위해
--with-java JDBC 드라이버 및 관련 자바 패키지를 생성한다. "ANT" 가 미리 설치되어 있어야 한다.
# ./configure --enable-multibyte --enable-locale --with-tcl --with-perl --with-mb=EUC_KR --with-java
⑤ 컴파일
# make
⑥ postgres 설치 인스톨
# make install
⑦ postgres 맨 페이지, HTML 문서파일 설치
# cd ./doc
# make install
⑧ 라이브러리 추가
# vi /etc/ld.so.conf
...
/usr/local/pgsql/lib <= 마지막 라인에 추가하고 저장한 후 빠져나온다.
# /sbin/ldconfig
⑨ PATH 설정
# vi /etc/profile
... 젤 밑에 추가
...
PATH=$PATH:/usr/local/pgsql/bin
PGLIB=/usr/local/pgsql/lib
PGDATA=/usr/local/pgsql/data
MANPATH=$MANPATH:/usr/local/pgsql/man
export PATH PGLIB PGDATA MANPATH
# source /etc/profile
⑩ postgres 계정 생성
# useradd postgres -p postgres
⑪ postgres 계정으로 사용할 수 있게 owner와 group을 바꾼다.
# chown -R postgres:postgres /usr/local/pgsql
이제 postgres 계정으로 작업을 한다.
# su - postgres
$
⑫ 데이타베이스가 저장될 장소를 생성하고, 데이타베이스를 운영하고 관리하는데 필요한 여러 값들을 생성하고 초기화한다.
$ initdb -E EUC_KR
⑬ postmaster 데몬 뛰운다.
$ postmaster -i &
⑭ "template1" 데이타베이스에 PL/pgSQL 모듈을 등록한다.
template1 에 등록된 후 이후 생성되는 데이타베이스에는 자동적으로 PL/pgSQL 모듈이 등록된다.
$ createlang plpgsql template1
⑮ 테스트 데이터 베이스 생성
$ createdb test
$ psql test
...
test=# \q ==> 빠저나오기
....
$
5. mysql 설치
설치전 주의사항
- mysql 사용자가 없으면 생성해야 한다.
- 설치할 때나 혹은 mysql에 접속할 때 mysql.sock 에러가 발생할 수 있다.
이 경우 /etc/my.cnf 파일이 있을 경우 mysql이 설치 할 때 참조하여
/usr/local/mysql/bin/safe_mysqld 로 실행할 때 mysql.sock파일을
/tmp/mysql.sock 로 생성하여야 하나 /var/lib/mysql/ 밑에 생성을 하므로
발생하는 에러이다.
그러므로 /etc/my.cnf 이 파일을 삭제 후 설치하여야 한다.
그래도 에러가 발생하면 http://www.tood.net/ 의 리눅스 설치/ mysql설치를 참조하고
아니며 http://DATABASE.SARANG.NET 을 참조한다.
① mysql-3.23.28.tar.gz 을 다운받았다.
② # tar zxf mysql-3.23.28.tar.gz
③ # cd mysql-3.23.8
④ 환경 설정
#./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/usr/local/mysql/data \
> --with-unix-socket-path=/tmp/mysql.sock
옵션설명
--prefix=/usr/local/mysql : 설치 디렉토리를 /usr/local/mysql 여기로 한다.
--with-charset=euc_kr : 한글을 지원한다.
--localstatedir=/usr/local/mysql/data : 데이터 디렉토리를 /usr/local/mysql/data 여기로 한다.
--with-unix-socket-path=/tmp/mysql.sock 이 옵션으로 위에서 발생하는 socket에러를 없엘수 있따.
혹시 실수로 환경설정을 다시 해야할 경우 make distclean 명령을 한다.
Thank you for choosing MySQL! 이라는 메시지가 뜰것이다.
⑤ 컴파일 및 설치
# make
# make install
⑥ mysql 설치 디렉토리로 이동한다.
# cd /usr/local/mysql
⑦ 기본 디비 설치
# bin/mysql_install_db
mysql_install_db MySQL의 데이터를 관리할 기초정보인 테이블 6개를 생성시킨다.
주의할 점은 mysql_install_db은 반드시 한번만 실행시켜야 한다.
⑧ mysql 서버 시작
# chown -R mysql.mysql /usr/local/mysql/data
# bin/safe_mysqld --language=korean &
==> mysql 4.0.14에서는 safe_mysqld 가 mysqld_safe로 바뀌었다.
==> --language=korean 이 옵션에서 /usr/local/mysql/share/mysql 밑에 해당 언어의 폴더가 있을 때 사용가능하다.
# ps ax | grep mysqld 로 확인할 수 있다.
※ mysql 서버 실행 시 /usr/local/mysql/data 디렉토리의 owner가 mysql이 아닐경우 mysqld ended 에러가 나면서 실행되지 않을 수 있다.
⑨ mysql의 root 비밀번호 주기
# bin/mysqladmin -u root password '비밀번호'
⑩ root 패스워드 분실시 방법:
# killall mysqld (데몬을 모조리 죽임)
# bin/safe_mysqld --skip-grant &
# mysql> UPDATE user SET Password=PASSWORD('새로운 비밀번호') WHERE user='root';
# mysql> FLUSH PRIVILEGES;
6. php와 perl의 apache 연동 설치
지금부터의 작업은 반드시 root의 권한으로 해야 한다.
apache_1.3.28.tar.gz
php-4.3.3.tar.gz
ZendOptimizer-2.1.0b-Linux_glibc21-i386.tar.gz
mod_perl-1.26.tar.gz
를 다운 받았다.
① RPM으로 설치된 패키지 제거하기
#/etc/rc.d/init.d/httpd stop 아파치 데몬을 종료시킨다.또는 killall httpd
#ps -ef | grep httpd httpd 데몬이 없는 것을 확인하자.
#rpm -qa | grep apache 설치된 아파치 패키지를 검색한다.
apache-1.3.14-3
apache-devel-1.3.14-3
#rpm -qa | grep php 설치된 php패키지를 검색한다.
#rpm -e apache
error: removing these packages would break defendencies:
webserver is needed by mod_perl-1.24-6
webserver is needed by mod_php-4.0.3pl1-1
webserver is needed by mod_ssl-2.7.1-3
webserver is needed by mod_dav-1.0.2-2
아파치를 제거한다. 에러메시지가 뜨면 의존성이 있는 패키지를 먼저 제거한다.
#rpm -e mod_perl
#rpm -e php (php를 지울 때 의존성 문제가 뜨는 패키지도 같은 방법으로 지운다)
#rpm -e mod_ssl
#rpm -e mod_dav
② Apache, PHP4 바이너리 파일 압축풀기
#tar zxvf apache_1.3.28.tar.gz
#tar zxvf php-4.3.3.tar.gz
#tar zxvf mod_perl-1.26.tar.gz
③ Apache Configure(1)
# cd /root/download/apache_1.3.28 초기에 아파치소스 압축을 풀어놓은 곳으로 이동.
# ./configure --prefix=/usr/local/apache
④ PHP4설치
# cd ..
# cd php-4.3.3
# ./configure --prefix=/usr/local/php --enable-shared --enable-inline-optimization \
>--with-apache=../apache_1.3.28 --enable-pic --enable-sysvsem --enable-sysvshm \
>--enable-track-vars --enable-yp --enable-ftp --with-mysql=/usr/local/mysql \
>--with-xml --with-pgsql=/usr/local/pgsql
# make 컴파일을 하고,
# make install 인스톨을 한다.
⑤ perl 설치
# cd ..
# cd mod_perl-1.26
# perl Makefile.PL APACHE_SRC=../apache_1.3.28/src \
>DO_HTTPD=1 USE_APACI=1 PREP_HTTPD=1 EVERYTHING=1
# make 컴파일을 하고,
# make install 인스톨을 한다.
⑥ Apache Configure(2), 컴파일
# cd ../apache_1.3.28
# ./configure --prefix=/usr/local/apache \
>--activate-module=src/modules/php4/libphp4.a \
>--activate-module=src/modules/perl/libperl.a \
>--enable-module=so
위 옵션중 src/modules/php4/libphp4.a 이것과 src/modules/perl/libperl.a 이것이 해당 폴더에 없다.
그래도 폴더에 있는 다른것을 입력하지 말고 위 처럼 libphp4.a 이대로 이름을 준다.
--enable-module=so : tomcat을 위한 옵션이다.
# make 아파치를 컴파일한다.
# make install 아파치 인스톨
⑦ Zend Optimizer 설치
#cd /root/download
#tar -zxf ZendOptimizer-2.1.0b-Linux_glibc21-i386.tar.gz
#mkdir /usr/local/Zend
#mv ZendOptimizer-2.1.0b-Linux_glibc21-i386 /usr/local/Zend/lib
⑧ php 환경설정 파일 편집
# cp /root/download/php-4.3.3/php.ini-dist /usr/local/apache/conf/php.ini
#cd /usr/local/apache/conf
#vi php.ini php.ini 파일을 열어서 맨 마지막에 다음과 같이 Optimizer를 위한 설정을 추가한다.
...
zend_optimizer.optimization_level=7
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"
#vi httpd.conf 아파치의 환경설정 파일을 열어서 다음과 같은 설정을 한다.
360라인쯤에 Default 시작페이지 설정을 해 준다
<IfModule mod_dir.c>
DirectoryIndex index.php index.php3 index.htm index.html
</IfModule>
마지막 라인에 다음 내용을 추가한다.
AddType application/x-httpd-php .php .php3 .ph
AddType application/x-httpd-php-source .phps
⑨ perl 환경설정 파일 편집
#cd /usr/local/apache/conf
#vi httpd.conf 아파치의 환경설정 파일을 열어서 다음과 같은 설정을 한다.
php와 달리 perl은 귀찮게 설정이 더 있다.
마지막 라인에 다음 내용을 추가한다.
# /home/apache/perl/ 폴더에 있는 모든 파일을 perl 컴파이러에 넘김
Alias /perl/ /home/apache/perl/
PerlModule Apache::Registry
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
allow from all
PerlSendHeader On
</Location>
이렇게 하거나
# 특정 디렉토리에서 확장자가 .pl로된 파일만 골라서 perl 컴파일러로 넘김
<IfModule mod_perl.c>
Alias /blast/ /var/www/html/blast
<Directory /var/www/html/blast>
<FilesMatch ".(pl)$">
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
PerlSendHeader On
</FilesMatch>
</Directory>
</IfModule>
⑩ apache 시작과 종료
apache 데몬의 시작, 종료, 재시작을 편하게 하기 위하여 다음 작업을 한다.
#cd /usr/local/apache/bin
#cp -p * /usr/bin/
httpd -t 엔터를 두드리고 아무런 에러메세지가 없으면 아파치 환경이 잘 설정되었다.
# killall httpd 아파치 데몬을 모두 죽인다.
# apachectl start
/usr/bin/apachectl start: httpd started 이런 메세지가 보인다면 아파치가 정상적인 실행이 된 것이다.
⑪ php Test 하기
#vi /usr/local/apache/htdocs/test.php
에디터 창에서 다음 내용을 입력한다.
<?
phpinfo()
?>
브라우져로 http://localhost/test.php 페이지를 보았을때 php 정보가 나오면 된다.
혹 phpinfo()는 이상이 없이 실행이 되나 php 페이지에서 request 값을 받지 못하는 경우 php.ini 파일이 정위치에 있는지 한번 확인준다.
확인은 phpinfo()에서 나오는 위치와 동일하게 마추준다.
그리고 php.ini파일을 열어서 register_global = On으로 바꿔준다. 아마 Off되 있을겁니다.
그리고 apache를 restart 한다.
⑫ perl Test 하기
#vi /usr/local/apache/htdocs/hello.pl
==> 여기서 /usr/local/apache/htdocs/ 이 폴더는 위 ⑨ perl 환경설정 파일 편집 에서 httpd.conf에
지정한 폴더이어야 한다.
지정하지 않은 폴더에 hello.pl을 만들고 웹에서 보면 소스 그대로 보인다.
에디터 창에서 다음 내용을 입력한다.
#!/usr/local/bin/perl
print “Content-type: text/plain\r\n\r\n”;
print “Hello World!\n”;
브라우져로 http://localhost/hello.pl 페이지를 보았을때 Hello World! 가 나오면 된다.
# chmod 755 /usr/local/apache/htdocs/hello.pl
==> 이렇게 하지 않으면 permission 에러가 난다. 그래서 실행 권한을 준다.
혹, 그래도 계속 에러가 나면
# vi /usr/local/apache/conf/httpd.conf
....
LoadModule perl-module libexec/libperl.so
AddModule mod_perl.c
이렇게 추가해 줘 본다.
혹 그래도 계속 에러가 나면 "6. php와 perl의 apache 연동 설치"를 다시 처음
부터 차근차근 다시 해 보거나 perl 연동을 포기한다. 요즘 perl 쓰는 곳은 별로 없다.
⑬ 시스템 부팅시 자동으로 아파치 데몬과 MySQL데몬 실행하기
# vi /etc/rc.d/rc.local 파일을 열어서 마지막 줄에 다음 명령을 입력한다.
/usr/local/apache/bin/apachectl start
/usr/local/mysql/share/mysql/mysql.server &
혹은,
# cp -p /usr/bin/apachectl /etc/rc.d/init.d/httpd
# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysql
# cd /etc/rc.d/rc3.d
# ln -s /etc/rc.d/init.d/httpd S85httpd
# ln -s /etc/rc.d/init.d/mysql S85mysqld
혹 서버를 xwindow로 부팅되도록 해두었다면 /etc/rc.d/rc5.d 디렉토리에 같은 방법으로 설정해 두면 된다.
#reboot 리부팅을 시켜 잘 실행이 되는지 확인하자.
7. tomcat 설치
Tomcat 4 다운받기
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/
Tomcat connector 다운받기
http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk/release/v1.2.4/src/jakarta-tomcat-connectors-jk-1.2.4-src.tar.gz
mod_jk.conf 와 workers.properties 파일을 복사하기 위해 Tomcat 3.3 다운로드
http://jakarta.apache.org/builds/jakarta-tomcat/
주의 :
이미 아파치 1.3.28 버전이 이미 설치되어 있고 아파치 모듈중에서 mod_so 모듈(--enable-module=so)이 이미 정적으로 httpd에 추가되어 있다
아파치가 이미 설치되어 있고 또한 mod_so가 이미 정적으로 컴파일되어 있기 때문에 jakarta tomcat connectors 중에서 JK 커넥터를 아파치의 DSO 모듈로 설치함.
jdk1.4 가 이미 설치되어 있다.
① 환경변수 추가
# vi /etc/profile
...
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
source /etc/profile
② Jakarta Tomcat 4.1.24 설치
jakarta-tomcat-4.1.24.tar.gz를 다운 받았다.
# tar zxvf jakarta-tomcat-4.1.24.tar.gz
# mv jakarta-tomcat-4.1.24 /usr/local/tomcat
#
# cd /usr/local/tomcat/bin
# ./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/jsdk
#
# ps -ef
...
#
# ./shutdown.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/jsdk
#
#
③ mod_jk.conf 파일과 workers.properties 파일을 tomcat_3.3.1a에서 복사한다.
# tar zxf jakarta-tomcat-3.3.1a.tar.gz
#
# cd jakarta-tomcat-3.3.1a/conf/jk
# cp mode_jk.conf /usr/local/tomcat/conf
# cp workers.properties /usr/local/tomcat/conf
#
④ 다음으로 mod_jk.conf 파일을 열어서 아래와 같이 수정한다.
ajp12 는 모두 ajp13 으로 한다.
jk.log 파일의 위치는 apache가 설치된 디렉토리의 logs 디렉토리 아래이다.
-----------------------------------------------------------------------------------------
/usr/local/tomcat/conf/mod_jk.conf
-----------------------------------------------------------------------------------------
LoadModule jk_module libexec/mod_jk.so
<IfModule mod_jk.c>
JkWorkersFile "/usr/local/tomcat/conf/workers.properties"
JkLogFile logs/jk.log
JkLogLevel error
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkMount /examples/* ajp13
</IfModule>
-----------------------------------------------------------------------------------------
*****************************
servelt은 /에 존재 할 수 없다.
JkMount /* ajp13 이렇게 하면 /에서도 servlet를 사용할 수 있지만 php가 작동하지 않는다.
그러므로 가상 경로를 만들어서 그 안에 servlet를 넣어주어야 한다.
*****************************
⑤ tomcat 이 실행될 환경을 지정하는 workers.properties 파일을 수정한다.
다음과 같은 곳을 수정해준다.
필요에 따라 localhost 를 도메인으로 바꿔주면 된다.
주석(#)을 잘 보면서 설정을 한다.
-----------------------------------------------------------------------------------------
/usr/local/tomcat/conf/workers.properties
-----------------------------------------------------------------------------------------
...
workers.tomcat_home=/usr/local/tomcat
...
workers.java_home=/usr/local/java
...
worker.list=ajp12, ajp13
...
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
...
-----------------------------------------------------------------------------------------
⑥ Jakarta Tomcat 4.1.24 connector 설치
# tar zxf jakarta-tomcat-connectors-1.2.4-src.tar.gz
# cd jakarta-tomcat-connectors-1.2.4-src/jk/native
#
# ./buildconf.sh
# ./configure --with-apxs=/usr/local/apache/bin/apxs
# make
# make install
# cd /usr/local/apache/libexec
# ls
... mod_jk.so ... 이 파일이 있으면 됨
#
※ 혹 아파치를 리눅스 설치 시 같이 깔았으면 /usr/lib/apache/ 밑에 mod_jk.so 를 옮겨 놓으면 된다.
⑦ httpd.conf 파일 수정
# vi /usr/local/apache/conf/http.conf
... 잴 마지막에 추가한다.
include /usr/local/tomcat/conf/mod_jk.conf
⑧ 테스트
# /usr/local/apache/bin/apachectl stop 아파치가 구동중이면 중지
#
# /usr/local/tomcat/bin/startup.sh 톰켓 구동
#
# /usr/local/apache/bin/apachectl start 아파치 구동
브라우저를 띄워 아래와 같이 테스트 한다.
http://localhost:8080/
http://localhost:8080/examples/jsp/snp/snoop.jsp
http://localhost/
http://localhost/examples/jsp/snp/snoop.jsp
⑨ 사용자의 8080포트 막기
# vi /usr/local/tomcat/conf/server.xml
....
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<!-- ==> 추가
<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" />
--> ==> 추가
<!-- Note : To disable connection timeouts, set connectionTimeout value to -1 -->
....
⑩ ROOT 디렉토리 변경
-----------------------------------------------------------------------------------------
/usr/local/tomcat/conf/servlet.xml
-----------------------------------------------------------------------------------------
...
<!-- Define properties for each web application. This is only needed
if you want to set non-default properties, or have web application
document roots in places other than the virtual host's appBase
directory. -->
<!-- Tomcat Root Context -->
<Context path="" docBase="/www_root" debug="0" reloadable="true" /> ==> docBase의 원하는 위치로 바꾸주면 된다.
<!-- Tomcat Examples Context -->
<Context path="/examples" docBase="examples" debug="0"
reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_examples_log." suffix=".txt"
timestamp="true"/>
...
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
/usr/local/apache/conf/http.conf
-----------------------------------------------------------------------------------------
...
DocumentRoot "/www_root"
...
<Directory "/www_root">