본문 바로가기
리눅스/유닉스

* Linux에 apache + php + perl + tomcat + mysql + postgres 설치 연동

by 희황 2013. 6. 20.

 

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">