본문 바로가기

Server

NAME SERVER + JAVA(JDK1.6.0u1) + MySQL(5.0.41) + APACHE(2.2.4) + tomcat(5.5.23) + PHP(5.2.3) + FTP(proftpd 1.3.0a)


필요한 패키지 및 소스

     (wget 또는 web상에서 준비하고 /home/lunar 디렉토리에 있다는 전제하에 설명)
[1] httpd-2.2.4(apache)
   http://ftp.kaist.ac.kr/pub/Apache/httpd/httpd-2.2.4.tar.gz
[2] tomcat(5.5.23)
   http://ftp.kaist.ac.kr/pub/Apache/tomcat/tomcat-5/v5.5.23/bin/apache-tomcat-5.5.23.tar.gz
[3] connectors-jk2
   http://archive.apache.org/dist/tomcat/tomcat-connectors/jk2/jakarta-tomcat-connectors-jk2-src-current.tar.gz
[4] native(1.1.10)
   http://archive.apache.org/dist/tomcat/tomcat-connectors/native/tomcat-native-1.1.10-src.tar.gz
[5] apr(1.2.8)
   http://ftp.kaist.ac.kr/pub/Apache/apr/apr-1.2.8.tar.gz
[6] java(JDK1.6.0_01)
   http://java.sun.com/javase/downloads/index.jsp (Linux RPM in self-extracting file)
[7] MySQL(5.0.41)
   http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.41-linux-i686-icc-glibc23.tar.gz/from/http://mysql.byungsoo.net/
[8] MySQL Connector/J(5.0.6)
   http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.0.6.tar.gz/from/http://mysql.byungsoo.net/
[
9] PHP(5.2.3)

   http://kr2.php.net/get/php-5.2.3.tar.gz/from/this/mirror
[10] re2c(0.12.1)
   wget http://downloads.sourceforge.net/re2c/re2c-0.12.1.tar.gz

[11] Zend(3.2.8)

   http://www.zend.org/free_download/download?product=optimizer&version=3.2.8&binary=ZendOptimizer-3.2.8-linux-glibc21-i386.tar.gz

(서버에서 로그인한다.)
CentOS release 5 (Final)
Kernel 2.6.18.el5 on an i686

ns login: root
Password:      

(서버에서 계정 하나를 생성한다.)
[root@ns ~]# useradd lunar
[root@ns ~]# passwd lunar
Changing password for user lunar.
New UNIX password:      
Retype new UNIX password:      
passwd: all authentication tokens updated successfully.

(서버에서 작업하는 것 보다 원격으로 접속을 해서 하는게 편하다. TELNET은 보안 문제로 쓰지 않으므로 SSH2로 연결한다. 개인적으로 secureCRT 5.5를 선호한다. 이하 원격접속.필수아님)
(원격에서는 바로 root 접속이 안되므로, 서버에서 만든 계정으로 접속후 "su -"명령으로 root 접속 한다. 패스워드는 root 암호임)

Last login: Thu May 17 20:17:23 2007 from 192.168.2.13
[lunar@ns ~]$ su -
Password:      
[root@ns ~]# yum install yum-plugin-fastestmirror
(생략)
Added 106 new packages, deleted 0 old in 0.43 seconds
Parsing package install arguments
Nothing to do

[root@ns ~]# yum update
(생략)

Transaction Summary
=============================================================================
Install      2 Package(s)        
Update      41 Package(s)        
Remove       0 Package(s)        

Total download size: 124 M
Is this ok [y/N]: y
(생략)
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
Import!ing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <centos-5-key@centos.org>" from http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
Is this ok [y/N]: y
(생략)
Complete!
You have new mail in /var/spool/mail/root

[root@ns ~]# yum groupinstall 'Development Tools'
(생략)
No packages in any requested group available to install or update
[root@ns ~]#

(설치시 생성된 /home/lunar 디렉토리의 권한을 부여한다.)
[root@ns ~]# cd /home
[root@ns home]# ls
lost+found  lunar
[root@ns home]# chown -R lunar:lunar lunar
[root@ns home]# chmod -R 777 lunar

(필자는 proftpd FTP서버를 선호하므로, 서버 기본 ftp 설치를 하지 않았다. proftpd 서버를 wget명령으로 인터넷에서 다운로드 한다. 현재 상태는 인터넷이 연결 되는 상태 이어야 한다. 왠만한 서버 장비는 설치 과정을 본인의 환경에 맞게 설치하였다면, 무리없이 연결될 것이다)
(혹시라도 다운로드가 되지 않는다면, proftpd 다운로드 주소가 변경 또는 버전업되었을 것이다. www.proftpd.org 사이트에 접속하여 찾아보고 최신 버전을 설치해도 무방하다.)

[root@ns home]# cd lunar
[root@ns lunar]# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0a.tar.gz
--20:24:15--  ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0a.tar.gz
          => `proftpd-1.3.0a.tar.gz'
Resolving ftp.proftpd.org... 81.223.20.36
Connecting to ftp.proftpd.org|81.223.20.36|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /distrib/source ... done.
==> SIZE proftpd-1.3.0a.tar.gz ... 1858160
==> PASV ... done.    ==> RETR proftpd-1.3.0a.tar.gz ... done.
Length: 1858160 (1.8M)

100%[=======================================>] 1,858,160    216K/s   in 10s    

20:24:34 (182 KB/s) - `proftpd-1.3.0a.tar.gz' saved [1858160]

(압축을 풀고, 환경설정하고, 설치 진행)
[root@ns lunar]# tar xvzf proftpd-1.3.0a.tar.gz
[root@ns lunar]# cd proftpd-1.3.0a
[root@ns proftpd-1.3.0a]# ./configure -prefix=/usr/local/proftpd -enable-autoshadow
[root@ns lunar]# make && make install

(proftpd 서버의 환경 설정 파일을 일부 변경 한다. 변경후 저장. 수동으로 ftp서버 가동)
[root@ns proftpd-1.3.0a]# vi /usr/local/proftpd/etc/proftpd.conf
# Set the user and group under which the server will run.
User                            nobody
Group                           nobody          (27라인 nogroup --> nobody로 변경)
:wq

[root@ns lunar]# /usr/local/proftpd/sbin/proftpd

(서버 리부팅이 되면 자동으로 ftp서버가 가동 되도록 해준다.)
[root@ns proftpd-1.3.0a]# vi /etc/rc.d/rc.local

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/proftpd/sbin/proftpd
 
:wq

[root@ns proftpd-1.3.0a]#

(name server 설치를 하기 위하여 yum명령으로 설치 명령하고, 설치 완료 되면 설치확인한다.)
[root@ns proftpd-1.3.0a]# cd /home/lunar
[root@ns lunar]# yum install bind*
(생략)
Install      5 Package(s)        
Update       0 Package(s)        
Remove       0 Package(s)        

Total download size: 4.2 M
Is this ok [y/N]: y
[root@ns lunar]# yum list bind*
Loading "installonlyn" plugin
Setting up repositories
Reading repository metadata in from local files
Installed Packages
bind.i386                                30:9.3.3-8.el5         installed      
bind-chroot.i386                         30:9.3.3-8.el5         installed      
bind-devel.i386                          30:9.3.3-8.el5         installed      
bind-libbind-devel.i386                  30:9.3.3-8.el5         installed      
bind-libs.i386                           30:9.3.3-8.el5         installed      
bind-sdb.i386                            30:9.3.3-8.el5         installed      
bind-utils.i386                          30:9.3.3-8.el5         installed

[root@ns lunar]#

(Network 설정확인하고 수정한다.)
[root@ns lunar]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=ns
GATEWAY=192.168.2.1
:wq

[root@ns lunar]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BROADCAST=192.168.2.255
HWADDR=00:0C:29:FB:89:D0
IPADDR=192.168.2.2
IPV6ADDR=
IPV6PREFIX=
GATEWAY=192.168.2.1
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes
:wq

[root@ns lunar]#

(hosts파일, resolv.conf파일 편집을 한다. 자신의 도메인/IP에 맞게 설정)
(아래는 도메인 두 개 보유, 라우터를 통한 내부IP 사용 예, 공인IP는 모두 공인IP로 쓰면됨)

[root@ns lunar]# vi /etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               ns localhost.localdomain localhost
192.168.2.2             ns.lunarhunter.com.
192.168.2.2             ns.eval!unar.com.
:wq


[root@ns lunar]# vi /etc/resolv.conf
search     lunarhunter.com
nameserver  192.168.2.2
nameserver  168.126.63.1
nameserver  168.126.63.2
:wq
[root@ns lunar]#

(named.conf 파일 편집. 아래 대로 복사해서 넣으면 된다. 단,IP/도메인은 본인에 맞게)
[root@ns lunar]# cd /var/named/chroot/etc
[root@ns etc]# vi named.conf
options {
        directory "/etc/namedb";
        version "UnKnown!!";
};

include         "/etc/rndc.key";

zone   "." IN {

     type hint;

     file "named.ca";
};
 
zone   "localhost" IN {
      type master;
      file "localhost.zone";
      allow-update { none; };
};

zone   "0.0.127.in-addr.arpa" IN {
      type master;
      file "named.local";
      allow-update { none; };
};

zone   "105.101.211.in-addr.arpa" IN {
      type master;
      file "lunarhunter.rev";
      allow-update { none; };
};
zone   "lunarhunter.com" IN {
      type master;
      file "lunarhunter.zone";
      allow-update { none; };
};
     
zone   "eval!unar.com" IN {
      type master;
      file "lunarhunter.zone";
      allow-update { none; };
};

logging {
       category lame-servers { null; };
};
:wq

[root@ns etc]#

(name server 구성시 필요한 파일 설치)
[root@ns etc]# mkdir namedb
[root@ns etc]# cd namedb
[root@ns namedb]# cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root ./named.ca
[root@ns namedb]# cp /usr/share/doc/bind-9.3.3/sample/var/named/named.local .

(localhost.zone 파일 생성. 아래 내용 변경없이 복사해도 됨)
[root@ns namedb]# vi localhost.zone
;
$TTL    86400
@       IN      SOA     localhost. root.localhost. (
         200705181    ; Serial
         604800       ; Refresh
         86400        ; Retry
         2419200      ; Expire
         604800 )     ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
:
:wq

[root@ns namedb]#

(lunarhunter.rev 파일 생성. named.conf에서 정의한 이름(lunarhunter.rev)로 생성하고 도메인은 본인의 대표 도메인으로 지정할것. 도메인 대행업체에 등록한 대표(NS)도메인)
[root@ns namedb]# vi lunarhunter.rev
$TTL    86400
@       IN     SOA    ns.lunarhunter.com. webmaster.lunarhunter.com.  (
                             200705181  ; Serial
                             28800      ; Refresh
                             14400      ; Retry
                             3600000    ; Expire
                             86400 )    ; Minimum
             IN      NS      ns.lunarhunter.com.
1             IN      PTR     ns.lunarhunter.com.
:wq

[root@ns namedb]#

(lunarhunter.zone 파일 생성. named.conf에서 정의한 이름(lunarhunter.zone)로 생성하고 도메인은 본인 보유 도메인으로 지정. 도메인 모두 이곳에 등록하여야 하는데. 본인의 경우 lunarhunter.com 으로 eval!unar.com이 오게 되면 아래 줄 맨밑에 해당 아이피로 오는 등록된 도메인 모두 lunarhunter.com 서버로 가라고 정의 하였기에 별도 설정 하지 않았음. 공인IP로 지정 할것. 물론 연계해야 할 sub도메인의 경우는 내부IP)
[root@ns namedb]# vi lunarhunter.zone
$TTL    86400
@       IN      SOA     ns.lunarhunter.com.  root.lunarhunter.com. (
               200705181  ; Serial
               28800      ; Refresh
               14400      ; Retry
               3600000    ; Expire
               86400 )    ; Minimum
;
       IN      NS      ns.lunarhunter.com.
       IN      NS      lunarhunter.com.
       MX      10      mail.lunarhunter.com.
       IN      A       211.101.105.100
ns      IN      A       211.101.105.100
www     IN      A       211.101.105.100
ftp     IN      A       211.101.105.100
*       IN      A       211.101.105.100
 
:wq

[root@ns namedb]#

(설정이 완료 되었으면 /etc로 링크 걸어 주고 네임서버 기동 시켜, nslookup으로 테스트. 아래와 같이 출력 되면 정상)
[root@ns namedb]# ln -s /var/named/chroot/etc/namedb /etc/namedb
[root@ns namedb]# ln -s /var/named/chroot/etc/named.conf /etc/named.conf
[root@ns namedb]# service named start
Starting named:                                            [  OK  ]
[root@ns namedb]# nslookup
> lunarhunter.com
Server:         192.168.2.2
Address:        192.168.2.2#53

Name:   lunarhunter.com
Address: 211.101.105.100
> exit

[root@ns namedb]#

(service 설정 프로그램을 실행시켜 name server가 부팅될 때 자동으로 기동 되도록 한다.)
[root@ns namedb]# ntsysv

(MySQL을 설치 한다. 아래 내용 대로 따라 한다. 파일명이 다르다면 파일명과 디렉토리명만 수정하면 된다.)
[root@ns namedb]# cd /home/lunar
[root@ns lunar]# mv mysql-5.0.41-linux-i686-icc-glibc23.tar.gz /usr/local/.
[root@ns lunar]# cd /usr/local
[root@ns local]# tar xvzf mysql-5.0.41-linux-i686-icc-glibc23.tar.gz
[root@ns local]# groupadd mysql
[root@ns local]# useradd -g mysql mysql
[root@ns local]# ln -s /usr/local/mysql-5.0.41-linux-i686-icc-glibc23 mysql
[root@ns local]# cd mysql
[root@ns mysql]# chown -R mysql .
[root@ns mysql]# chgrp -R mysql .
[root@ns mysql]# scripts/mysql_install_db --user=mysql
[root@ns mysql]# chown -R root .
[root@ns mysql]# chown -R mysql data
[root@ns mysql]# bin/mysqld_safe --user=mysql &
[root@ns mysql]# cd /usr/local
[root@ns local]# rm -rf mysql-5.0.41-linux-i686-icc-glibc23.tar.gz

(MySQL도 부팅 될 때 자동으로 가동 되도록 설정한다.)
[root@ns local]# cd /usr/local/mysql/support-files
[root@ns support-files]# cp ./mysql.server /etc/init.d
[root@ns support-files]# ln -s /etc/init.d/mysql.server /etc/rc3.d/S99mysql
[root@ns support-files]# ln -s /etc/init.d/mysql.server /etc/rc0.d/K01mysql

(MySQL 환경 파일을 설정한다. 한글 UTF-8 환경으로 설정. 수정은 항상 파일 끝부터 라인번호 혼동 우려될까봐 ^^)
[root@ns support-files]# cp ./my-medium.cnf /etc/my.cnf
[root@ns support-files]# vi /etc/my.cnf
[mysql]
no-auto-rehash                      (139라인 아래에 추가)
default-character-set = utf8
# Remove the next comment character if you are not familiar with SQL
#safe-updates
---------------------------------------------------------------------------------------
[mysqldump]
quick
max_allowed_packet = 16M            (136라인 아래에 추가)
default-character-set = utf8
---------------------------------------------------------------------------------------
# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M        (37라인 아래에 추가)
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
---------------------------------------------------------------------------------------
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock    (21라인 아래에 추가)
default-character-set = utf8
---------------------------------------------------------------------------------------

:wq
[root@ns support-files]#

(java(JDK)를 설치 한다.)
[root@ns support-files]# cd /home/lunar
[root@ns lunar]# chmod a+x jdk-6u1-linux-i586-rpm.bin

[root@ns lunar]# ./jdk-6u1-linux-i586-rpm.bin
(생략) [설치중 --More-- 가 나오면 space bar 로 넘길것]
For inquiries please contact: Sun Microsystems, Inc., 4150
Network Circle, Santa  Clara, California 95054, U.S.A.
 
Do you agree to the above license terms? [yes or no]
yes
(생략)

[root@ns lunar]# vi /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
export LD_LIBRARY_PATH

JAVA_HOME="/usr/java/jdk1.6.0_01"
export JAVA_HOME
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin

pathmunge () {
       if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
          if [ "$2" = "after" ] ; then
             PATH=$PATH:$1
:wq
[root@ns lunar]# source /etc/profile
[root@ns lunar]# java -version
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
[root@ns lunar]# (위와 같이 출력이 되면 java가 정상적으로 설치된 상태)

(Connector-J를 복사한다. 주의:아래 cp 명령어는 두줄이 한 라인임 한꺼번에 복사 할것.)
[root@ns lunar]# tar xvzf mysql-connector-java-5.0.6.tar.gz

[root@ns lunar]# cd mysql-connector-java-5.0.6
[root@ns mysql-connector-java-5.0.6]# cp mysql-connector-java-5.0.6-bin.jar /usr/java/jdk1.6.0_01/jre/lib/ext/
[root@ns mysql-connector-java-5.0.6]#

(apache를 설치한다. 주의:아래 ./configure 명령어는 두줄이 한 라인임. 한꺼번에 복사할것)
[root@ns mysql-connector-java-5.0.6]# cd /home/lunar
[root@ns lunar]# tar xvzf httpd-2.2.4.tar.gz
[root@ns lunar]# cd httpd-2.2.4
[root@ns httpd-2.2.4]# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-modules=so --enable-headers --enable-cgi --enable-cgid --enable-so
[root@ns httpd-2.2.4]# make
[root@ns httpd-2.2.4]# make install
[root@ns httpd-2.2.4]# echo "/usr/local/apache2/lib" >> /etc/ld.so.conf
[root@ns httpd-2.2.4]# echo "/usr/local/apache2/modules" >> /etc/ld.so.conf
[root@ns httpd-2.2.4]# /sbin/ldconfig
[root@ns httpd-2.2.4]# cd /usr/local/apache2/bin
[root@ns httpd-2.2.4]# ./httpd -l

Compiled in modules:

  core.c

  prefork.c

  http_core.c

  mod_so.c
[root@ns httpd-2.2.4]#

(apache환경 파일을 수정 한다. 역시 파일의 끝에서부터 수정. 라인번호 혼동 우려 해서)
[root@ns httpd-2.2.4]# vi /usr/local/apache2/conf/httpd.conf
(수정시 라인혼동 우려하여 아랫줄부터 위로 수정)
(맨 끝 라인에 아래 노란색 부분 추가)
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
 
NameVirtualHost 192.168.2.2
 
## lunarhunter.com
<VirtualHost 192.168.2.2>
   ServerName lunarhunter.com
   DocumentRoot /home/webs/lunarhunter/
   ServerAlias  www.lunarhunter.com lunarhunter.com
</VirtualHost>
 
## eval!unar.com
<VirtualHost 192.168.2.2>
   ServerName eval!unar.com
   DocumentRoot /home/webs/eval!unar/
   ServerAlias www.eval!unar.com eval!unar.com
</VirtualHost>
---------------------------------------------------------------------------------------
<IfModule dir_module>
   DirectoryIndex index.html index.htm index.jsp  (207라인 추가)
</IfModule>
---------------------------------------------------------------------------------------
#ServerName www.example.com:80 (138라인 아래에 4줄 추가)
ServerName ns.lunarhunter.com:80

<IfModule mod_header.c>

Header add P3P "CP='CAO PSA CONi OTR OUR DEM ONL'"

</IfModule>
---------------------------------------------------------------------------------------
#ServerAdmin you@example.com (129라인 # 처리하고 아래줄 추가)
ServerAdmin lunar@lunarhunter.com
---------------------------------------------------------------------------------------

#User daemon  (108라인 두줄을 # 처리하고 아래 세줄 추가)

#Group daemon

User nobody

Group nobody

DefaultLanguage UTF-8
---------------------------------------------------------------------------------------

:wq
[root@ns httpd-2.2.4]#

(홈페이지가 위치할 곳에 권한을 줄것, httpd.conf에서 설정한 VirtualHost의 Web Directory 모두를 생성(생성하지 않으면 apache 기동시 ERROR 발생)
[root@ns httpd-2.2.4]# cd /home
[root@ns home]# mkdir webs
[root@ns home]# mkdir webs/lunarhunter
[root@ns home]# mkdir webs/eval!unar
[root@ns home]# chmod -R 755 webs
---------------------------------------------------------------------------------------

(PATH가 걸려 있어 apache2/bin이 아닌곳에서 아파치를 기동하면 엉뚱한게 실행되는 것 방지)

[root@ns home]# cd /usr/sbin

[root@ns sbin]# mv apachectl back_apachectl
[root@ns home]# cd /usr/local/apache2/bin
[root@ns bin]# ./apachectl configtest
Syntex OK                       (httpd.conf 파일이 이상없이 수정 됨)
[root@ns bin]#


(tomcat을 설치하고 환경파일을 수정한다.)
[root@ns bin]# cd /usr/local
[root@ns local]# mv /home/lunar/apache-tomcat-5.5.23.tar.gz .
[root@ns local]# tar xvzf apache-tomcat-5.5.23.tar.gz
[root@ns local]# ln -s apache-tomcat-5.5.23 tomcat
[root@ns local]# vi /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
export LD_LIBRARY_PATH

JAVA_HOME="/usr/java/jdk1.6.0_01"

APACHE2_HOME=/usr/local/apache2
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME APACHE2_HOME CATALINA_HOME
APACHE_CONF="/usr/local/apache2/conf/httpd.conf"
PIDFILE="/usr/local/apache2/logs/httpd.pid"
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/common/lib/servlet-api.jar
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$APACHE2_HOME/bin
 
pathmunge () {
       if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then

 
:wq
[root@ns local]# source /etc/profile

(apr과 jni-native를 설치한다. *주의:./configure 라인도 두줄이므로 한꺼번에 복사 할것)
[root@ns local]# mv /home/lunar/apr-1.2.8.tar.gz .
[root@ns local]# tar xvzf apr-1.2.8.tar.gz
[root@ns local]# cd apr-1.2.8
[root@ns apr-1.2.8]# ./configure
[root@ns apr-1.2.8]# make && make install
[root@ns apr-1.2.8]# cd /usr/local
[root@ns local]# mv /home/lunar/tomcat-native-1.1.10-src.tar.gz .
[root@ns local]# tar xvzf tomcat-native-1.1.10-src.tar.gz
[root@ns local]# cd /usr/local/tomcat-native-1.1.10-src/jni/native
[root@ns native]# sh buildconf --with-apr=/usr/local/apr-1.2.8
[root@ns native]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-java-home=/usr/java/jdk1.6.0_01
[root@ns native]# make && make install

(apr과 jni-native를 설치후 PATH를 걸어 준다.)
[root@ns native]# vi /etc/ld.so.conf
include ld.so.conf.d/*.conf

/usr/local/lib

/usr/local/apr/lib
/usr/local/apache2/lib
/usr/local/apache2/modules

 
:wq
[root@ns native]# /sbin/ldconfig

(apr의 파일을 jdk에 귀속시켜 준다.)
[root@ns native]# cd /usr/java/jdk1.6.0_01/jre/lib/i386
[root@ns i386]# ln -s /usr/local/apr/lib/libtcnative-1.so libtcnative-1.so
[root@ns i386]# ln -s /usr/local/apr/lib/libtcnative-1.a libtcnative-1.a
[root@ns i386]# ln -s /usr/local/apr/lib/pkgconfig/ pkgconfig

(jk2를 설치한다. *주의:cp 명령어 라인 두줄 모두 한꺼번에 복사 후 실행)
[root@ns i386]# cd /usr/local
[root@ns local]# mv /home/lunar/jakarta-tomcat-connectors-jk2-src-current.tar.gz .
[root@ns local]# tar xvzf jakarta-tomcat-connectors-jk2-src-current.tar.gz
[root@ns local]# cd /usr/local/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
[root@ns native2]# ./buildconf.sh
[root@ns native2]# ./configure --with-apxs2=/usr/local/apache2/bin/apxs
[root@ns native2]# make
[root@ns native2]# cp /usr/local/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2/mod_jk2.so /usr/local/apache2/modules/

(tomcat 환경을 만든다. 아래 파일을 생성한다.)
[root@ns native2]# cd /usr/local/tomcat/conf
[root@ns conf]# vi jk2.properties
handler.list=apr,channelSocket,request

channelSocket.port=8009

shm.file=/usr/local/apache2/logs/jk2.shm

apr.jniModeSo=inprocess

:wq
[root@ns conf]#

(apache에서 tomcat 연결하는 환경을 만든다. 아래 파일을 생성한다.)
[root@ns conf]# cd /usr/local/apache2/conf
[root@ns conf]# vi workers2.properties

[shm]

file=/usr/local/apache2/logs/shm.file

size=1048576

[channel.socket:localhost:8009]

port=8009

host=127.0.0.1

[ajp13:localhost:8009]

channel=channel.socket:localhost:8009

[status:status]

[uri:/jsp-examples/*]

worker=ajp13:localhost:8009

[uri:/servlets-examples/*]

worker=ajp13:localhost:8009

[uri:/servlet/*]

worker=ajp13:localhost:8009

[uri:/tomcat-docs/*]

worker=ajp13:localhost:8009

[uri:/*.jsp]

worker=ajp13:localhost:8009

[uri:/status/*]

worker=status:status

:wq
[root@ns conf]#

(tomcat의 server.xml 파일을 수정 해 준다. 이 역시 파일 끝부터 수정)
[root@ns conf]# cd /usr/local/tomcat/conf
[root@ns conf]# vi server.xml
(수정시 라인혼동 우려하여 아랫줄부터 위로 수정)
(369라인에 아래의 노란색 부분 추가한다.)
       </Host>
  <!-- lunarhunter.com -->
       <Host name="lunarhunter.com">
           <Context path=""
               docBase="/home/webs/lunarhunter/"
               reloadable="true"/>
           <Alias>www.lunarhunter.com</Alias>
       </Host>
  <!-- eval!unar.com -->
       <Host name="eval!unar.com">
           <Context path=""
               docBase="/home/webs/eval!unar/"
               reloadable="true"/>
           <Alias>www.eval!unar.com</Alias>
       </Host>

    </Engine>
---------------------------------------------------------------------------------------
   <!-- Define an AJP 1.3 Connector on port 8009 -->
   <Connector port="8009"
              enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
              (윗부분(103라인)을 아래와 같이 고친다.)
              enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
              URIEncoding="UTF-8" />
---------------------------------------------------------------------------------------


   <Connector port="8080" maxHttpHeaderSize="8192"
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups="false" redirectPort="8443" acceptCount="100"
              connectionTimeout="20000" disableUploadTimeout="true" />
              (윗부분(80라인)을 아래와 같이 고친다.)
              connectionTimeout="20000" disableUploadTimeout="true"

              URIEncoding="UTF-8" />
---------------------------------------------------------------------------------------

:wq
[root@ns conf]#

(tomcat의 web.xml 파일을 수정 해 준다. 이 역시 파일 끝부터 수정)
[root@ns conf]# cd /usr/local/tomcat/conf
[root@ns conf]# vi web.xml


   <servlet>
       <servlet-name>default</servlet-name>
       <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
       <init-param>        
           <param-name>debug</param-name>
           <param-value>0</param-value>
       </init-param>        
       <init-param>                                                        
           <param-name>listings</param-name>
           <param-value>true</param-value>  (80라인 false를 true로 변경)
 
       </init-param>                                                      
       <load-on-startup>1</load-on-startup>
   </servlet>

:wq
[root@ns conf]#

(tomcat 설치후 apache 환경 파일 수정. 라인혼동 우려하여 아랫줄부터 위로 수정)

[root@ns conf]# cd /usr/local/apache2/conf
[root@ns conf]# vi httpd.conf

#DocumentRoot "/usr/local/apache2/htdocs"       (153라인 #표시, 아래 라인 추가)
DocumentRoot "/usr/local/tomcat/webapps/ROOT"
---------------------------------------------------------------------------------------
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule jk2_module modules/mod_jk2.so         (98라인에 추가)
---------------------------------------------------------------------------------------

:wq
[root@ns conf]#

(tomcat 리부팅시 자동 실행 만들기)

[root@ns conf]# vi /etc/rc.d/tomcat
#!/bin/sh
# Source function library.
. /etc/rc.d/init.d/functions

source /etc/profile
export TOMCAT_HOME=/usr/local/tomcat

# See how we were called.
case "$1" in
start)
echo -n "Starting tomcat EXPERIMENTAL: "
daemon $TOMCAT_HOME/bin/startup.sh
echo
;;
stop)
echo -n "Shutting down tomcat EXPERIMENTAL: "
daemon $TOMCAT_HOME/bin/shutdown.sh
echo
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac

exit 0


:wq

[root@ns conf]# chmod 755 /etc/rc.d/tomcat

[root@ns conf]# /etc/rc.d/tomcat                   (실행테스트)
Usage : /etc/rc.d/tomcat {start|stop|restart}       (Usage 멧시지가 나오면 정상)

[root@ns conf]# ln -s /etc/rc.d/tomcat /etc/rc.d/rc3.d/S90tomcat

[root@ns conf]# ln -s /etc/rc.d/tomcat /etc/rc.d/rc5.d/S90tomcat

[root@ns conf]# ln -s /etc/rc.d/tomcat /etc/rc.d/rc6.d/K90tomcat

(apache 리부팅시 자동 실행 만들기)

[root@ns conf]# vi /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/proftpd/sbin/proftpd
/usr/local/apache2/bin/apachectl start
 
:wq

[root@ns conf]#

(리부팅 권장)

[root@ns sbin]# shutdown -r now

(위의 자동 실행 만들기를 하였다면 리부팅 후 자동으로 실행 됨. 만약, 수동 실행 해야 할 경우는 아래와 같이 하면 됨)

[root@ns ~]# catalina.sh start     (stop 도 가능함)

[root@ns ~]# apachectl start        (stop/restart 도 가능함)

(해당 홈페이지 디렉토리에 index.html 또는 index.jsp를 넣고 접속 해볼것)

(PHP 설치:설치할 파일은 두 개)

[root@ns sbin]# yum install *gd*

[root@ns sbin]# cd /home/lunar

[root@ns lunar]# wget http://kr2.php.net/get/php-5.2.3.tar.gz/from/this/mirror

[root@ns lunar]# wget http://downloads.sourceforge.net/re2c/re2c-0.12.1.tar.gz

[root@ns lunar]# tar xvzf re2c-0.12.1.tar.gz

[root@ns lunar]# cd re2c-0.12.1

[root@ns re2c-0.12.1]# ./configure

[root@ns re2c-0.12.1]# make

[root@ns re2c-0.12.1]# rm -f scanners.cc

[root@ns re2c-0.12.1]# make install

[root@ns re2c-0.12.1]# cd /home/lunar

[root@ns lunar]# tar xvzf php-5.2.3.tar.gz

[root@ns lunar]# cd php-5.2.3

[root@ns php-5.2.3]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-gd --with-zlib-dir=/usr/lib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-xpm-dir=/usr/lib --with-freetype-dir=/usr/lib --enable-track-vars=yes --with-mod-charset --with-language=korean --with-charset=UTF-8 --disable-debug --without-sqlite

[root@ns php-5.2.3]# make

[root@ns php-5.2.3]# make install

(PHP 환경 설정)

[root@ns php-5.2.3]# cp php.ini-dist /etc/php.ini

[root@ns php-5.2.3]# vi /usr/local/apache2/conf/httpd.conf

   AddType application/x-compress .Z

   AddType application/x-gzip .gz .tgz (362라인 아래에 두줄 추가)

   AddType application/x-httpd-php .php .php4 .php3 .html .htm .phtml .ph .php5

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

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

<IfModule dir_module>

   DirectoryIndex index.html index.php index.phtml index.jsp (220라인 추가)

</IfModule>

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

<Directory />

   Options FollowSymLinks

   AllowOverride None

   Order deny,allow

#   Deny from all (172라인 # 마크 하고 아래에 추가)

  Allow from all

</Directory>


:wq

[root@ns php-5.2.3]#

(Zend 설치 http://www.zend.org 사이트에서 가입하면 무료로 최신 버전을 받을수 있다.)

(* 링크가 길어서 다운로드 생략, PC로 받아서 FTP로 올려도 됨. /home/lunar에 있다는 가정)

[root@ns php-5.2.3]# cd /home/lunar

[root@ns lunar]# tar xvzf ZendOptimizer-3.2.8-linux-glibc21-i386.tar.gz

[root@ns lunar]# cd ZendOptimizer-3.2.8-linux-glibc21-i386

[root@ns ZendOptimizer-3.2.8-linux-glibc21-i386]# ./install.sh

(메뉴창이 나오면서 선택형 질문이 나온다. 각 PATH 잘 확인하고 진행을 시킨다.)

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

(완료 되었으면 php환경파일을 열어서 최하단에 다음과 같이 Zend관련 환경이 자동 설정 되었는지 확인하고 이상 없으면 정상적으로 설치됨)

[root@ns ZendOptimizer-3.2.8-linux-glibc21-i386]# vi /etc/php.ini

; Local Variables:

; tab-width: 4

; End:

[Zend]

zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.2.8

zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.2.8

zend_optimizer.version=3.2.8

zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so

zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so