관리 메뉴

Second Life

CentOS 5.2 + Apache + MySQL + PHP + JDK + Tomcat + proFTP 설치와 설정 본문

리눅스/CentOS

CentOS 5.2 + Apache + MySQL + PHP + JDK + Tomcat + proFTP 설치와 설정

터프키드. 2009. 1. 22. 18:52

본 문서는 루나헌터™ (http://blog/naver.com/june8th98) 님의

"[한방설치] 최신 linux(centos5) + DNS + JDK + MySQL + apache + tomcat + php + ftp"

를 토대로 제 시스템에 맞도록 재수정/추가 한 문서입니다.

대부분의 문서형태는 루나헌터™ 님의 형태를 따르고있습니다.

 

CentOS 5.2 + APACHE + MySQL + PHP + JDK + Tomcat + proFTP

 

필요한 패키지 및 소스

(wget 또는 web상에서 준비하고 /home/tuffkid 디렉토리에 있다는 전제하에 설명)

[1] httpd-2.2.6(apache)
    wget http://ftp.kaist.ac.kr/pub/Apache/httpd/httpd-2.2.6.tar.gz
[2] tomcat(5.5.23)
    wget http://ftp.kaist.ac.kr/pub/Apache/tomcat/tomcat-5/v5.5.23/bin/apache-tomcat-5.5.23.tar.gz
[3] connectors-jk2
    wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk2/jakarta-tomcat-connectors-jk2-src-current.tar.gz
[4] native(1.1.10)
    wget http://archive.apache.org/dist/tomcat/tomcat-connectors/native/tomcat-native-1.1.10-src.tar.gz
[5] apr(1.2.8) 
    wget http://archive.apache.org/dist/apr/apr-1.2.8.tar.gz 
[6] java(JDK1.6.0_02)
    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.4)
    http://kr2.php.net/get/php-5.2.4.tar.gz/from/this/mirror

[10] re2c(0.12.1)
    wget http://downloads.sourceforge.net/re2c/re2c-0.12.1.tar.gz

[11] Mcrypt(2.5.7)

    wget ftp://ftp.superuser.co.kr/etc/libmcrypt-2.5.7.tar.gz

 

[12] Zend(3.3.0)

    wget http://downloads.zend.com/optimizer/3.3.0/ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz

(서버에 계정 생성)

[root@localhost ~]# useradd tuffkid
[root@localhost ~]# passwd tuffkid
Changing password for user tuffkid.
New UNIX password:            
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:             
passwd: all authentication tokens updated successfully.

 

[root@localhost ~]# yum install yum-fastestmirror

(생략...)

Added 238 new packages, deleted 0 old in 1.00 seconds
Parsing package install arguments
Nothing to do

 

[root@localhost ~]# yum update

(생략...)

Transaction Summary
=============================================================================
Install      1 Package(s)        
Update      34 Package(s)        
Remove       0 Package(s)        

Total download size: 54 M
Is this ok [y/N]: y

(생략...)

(GPG키를 미리 업데이트 했다면 아래 메세지는 나오지 않을것입니다(아마도...;;))

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
Importing 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!
[root@localhost ~]# yum groupinstall "Development Tools"

(생략...)

Install     95 Package(s)        
Update       0 Package(s)        
Remove       0 Package(s)        

Total download size: 100 M
Is this ok [y/N]: y

 

Complete!

 

(생성된 /home/tuffkid 디렉토리의 권한을 부여한다.)
[root@localhost ~]#

[root@localhost ~]# cd /home
[root@localhost home]# ls
lost+found  tuffkid
[root@localhost home]# chown -R tuffkid:tuffkid tuffkid
[root@localhost home]# chmod -R 777 tuffkid
[root@localhost home]# cd tuffkid/

 

(proftp 설치)

[root@localhost tuffkid]# wget ftp://ftp1.at.proftpd.org/ProFTPD/distrib/source/proftpd-1.3.1.tar.gz
--13:51:20--  ftp://ftp1.at.proftpd.org/ProFTPD/distrib/source/proftpd-1.3.0a.tar.gz
           => `proftpd-1.3.0a.tar.gz'
Resolving ftp1.at.proftpd.org... 193.170.194.26
Connecting to ftp1.at.proftpd.org|193.170.194.26|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /ProFTPD/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    191K/s   in 11s   

13:51:36 (169 KB/s) - `proftpd-1.3.0a.tar.gz' saved [1858160]

[root@localhost tuffkid]# tar zxvf proftpd-1.3.1.tar.gz
[root@localhost tuffkid]# cd proftpd-1.3.1
[root@localhost proftpd-1.3.0a]# ./configure -prefix=/usr/local/proftpd -enable-autoshadow
[root@localhost proftpd-1.3.0a]# make && make install

(proftp 서버의 환경 설정 파일을 일부 변경한다. 변경후 저장. 수동으로 ftp서버 가동)

[root@localhost 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

"/usr/local/proftpd/etc/proftpd.conf" 62L, 1861C written

(SFTP (포트 22번)으로 접속못하게 하는법)
#vi /etc/passwd
tuffkid:.............................:bin/bash
tuffkid:.............................:sbin/nologin 으로 변경
(유저 추가할때마다 이래야하는가?)


(FTP접속시 상위루트 못가게 하기)
# nano /usr/local/proftpd/etc/proftpd.conf
----- 내용에서 ------
# DefaultRoot ~ 부분의 주석을 지운다.
DefaultRoot ~ !root // root 이외에 상위 접근 금지
DefaultRoot ~ !group1,group2 //group1, group2 이외에 상위 접근금지

[root@localhost proftpd-1.3.0a]# /usr/local/proftpd/sbin/proftpd

 

(부팅시 proftp 활성화)

[root@localhost 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


(SFTP (포트 22번)으로 접속못하게 하는법)
#vi /etc/passwd
tuffkid:.............................:bin/bash
tuffkid:.............................:sbin/nologin 으로 변경
(유저 추가할때마다 이래야하는가?)

(FTP접속시 상위루트 못가게 하기)
# nano /usr/local/proftpd/etc/proftpd.conf
----- 내용에서 ------
# DefaultRoot ~ 부분의 주석을 지운다.
DefaultRoot ~ !root // root 이외에 상위 접근금지
DefaultRoot ~ !group1,group2 //group1, group2 이외에 상위 접근금지 

(MySQL 설치 : 파일명이 다르면 파일명과 디렉토리명만 수정하면된다.)

[root@localhost libmcrypt-2.5.8]# cd /home/tuffkid/

[root@localhost tuffkid]# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz/from/ftp://mysql.byungsoo.net/pub/mysql/

 

--12:04:39--  http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.41-linux-i686-icc-glibc23.tar.gz/from/http://mysql.byungsoo.net/
Resolving dev.mysql.com... 213.136.52.29
Connecting to dev.mysql.com|213.136.52.29|:80... connected.
HTTP request sent, awaiting response... 404 Not found
12:04:49 ERROR 404: Not found.

[root@localhost tuffkid]# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz/from/ftp://mysql.byungsoo.net/pub/mysql/
--12:28:13--  http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz/from/ftp://mysql.byungsoo.net/pub/mysql/
Resolving dev.mysql.com... 213.136.52.29
Connecting to dev.mysql.com|213.136.52.29|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: ftp://mysql.byungsoo.net/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz[following]
--12:28:15--  ftp://mysql.byungsoo.net/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz
           => `mysql-5.1.30-linux-i686-icc-glibc23.tar.gz'
Resolving mysql.byungsoo.net... 218.234.17.87
Connecting to mysql.byungsoo.net|218.234.17.87|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /pub/mysql/Downloads/MySQL-5.1 ... done.
==> SIZE mysql-5.1.30-linux-i686-icc-glibc23.tar.gz ... 118404943
==> PASV ... done.    ==> RETR mysql-5.1.30-linux-i686-icc-glibc23.tar.gz ... done.
Length: 118404943 (113M)

100%[=========================================================================================================================================>] 118,404,943  554K/s   in 3m 12s

12:31:27 (603 KB/s) - `mysql-5.1.30-linux-i686-icc-glibc23.tar.gz' saved [118404943]

 

[root@localhost tuffkid]# mv mysql-5.1.30-linux-i686-icc-glibc23.tar.gz /usr/local/.
[root@localhost tuffkid]# cd /usr/local
[root@localhost local]# tar zxvf mysql-5.0.41-linux-i686-icc-glibc23.tar.gz

[root@localhost local]# groupadd mysql
[root@localhost local]# useradd -g mysql mysql
[root@localhost local]# ln -s /usr/local/mysql-5.1.30-linux-i686-icc-glibc23 mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# chown -R mysql .
[root@localhost mysql]# chgrp -R mysql .
[root@localhost mysql]# scripts/mysql_install_db --user=mysql

[root@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql data

[root@localhost mysql]# bin/mysqld_safe --user=mysql &
[root@localhost mysql]# cd /usr/local
[root@localhost local]# rm -rf mysql-5.0.41-linux-i686-icc-glibc23.tar.gz

 

(MySQL도 부팅시 자동 가동되도록 설정한다.)

[root@localhost local]# cd /usr/local/mysql/support-files/
[root@localhost support-files]# cp ./mysql.server /etc/init.d
[root@localhost support-files]# ln -s /etc/init.d/mysql.server /etc/rc3.d/S99mysql
[root@localhost support-files]#
ln -s /etc/init.d/mysql.server /etc/rc0.d/K01mysql

 

(MySQL 환경파일을 설정한다. 한글 UTF-8 환경으로 설정. 수정은 항상 파일 끝부터 라인번호 혼동 우려될까봐 ^^)

[root@localhost support-files]# cp ./my-medium.cnf /etc/my.cnf
[root@localhost 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

"/etc/my.cnf" 164L, 5187C written

 

 

(JDK를 설치한다.)
[root@ns support-files]# cd /home/tuffkid

[root@localhost tuffkid]# wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u11-linux-i586-rpm.bin?BundledLineItemUUID=hRVIBe.md4kAAAEeX4RX3PJJ&OrderID=0sxIBe.mHI8AAAEeR4RX3PJJ&ProductID=abtIBe.ovJUAAAEdeDBGb7Et&FileName=/jdk-6u11-linux-i586-rpm.bin

[root@localhost tuffkid]# mv http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u11-linux-i586-rpm.bin?BundledLineItemUUID=hRVIBe.md4kAAAEeX4RX3PJJ&OrderID=0sxIBe.mHI8AAAEeR4RX3PJJ&ProductID=abtIBe.ovJUAAAEdeDBGb7Et&FileName=/jdk-6u11-linux-i586-rpm.bin jdk-6u11-linux-i586-rpm.bin

[root@localhost tuffkid]# chmod a+x jdk-6u11-linux-i586-rpm.bin

[root@localhost tuffkid]# ./jdk-6u11-linux-i586-rpm.bin

Do you agree to the above license terms? [yes or no]
y
Unpacking...
Checksumming...
Extracting...

 

done.

[root@localhost tuffkid]# 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_11"
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@localhost tuffkid]# source /etc/profile

[root@localhost tuffkid]# java -version
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)

 

(mysql-connector-java-5.1.7.tar.gz 설치)

[root@localhost tuffkid]# wget ftp://ftp.eenet.ee/pub/FreeBSD/distfiles/mysql-connector-java-5.1.7.tar.gz
--13:46:03--  ftp://ftp.eenet.ee/pub/FreeBSD/distfiles/mysql-connector-java-5.1.7.tar.gz
           => `mysql-connector-java-5.1.7.tar.gz'
Resolving ftp.eenet.ee... 193.40.0.5
Connecting to ftp.eenet.ee|193.40.0.5|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /pub/FreeBSD/distfiles ... done.
==> SIZE mysql-connector-java-5.1.7.tar.gz ... 8640154
==> PASV ... done.    ==> RETR mysql-connector-java-5.1.7.tar.gz ... done.
Length: 8640154 (8.2M)

100%[=========================================================================================================================================>] 8,640,154    598K/s   in 17s   

13:46:24 (508 KB/s) - `mysql-connector-java-5.1.7.tar.gz' saved [8640154]

[root@localhost tuffkid]# tar zxvf mysql-connector-java-5.1.7.tar.gz

[root@localhost tuffkid]# cd mysql-connector-java-5.1.7
[root@localhost mysql-connector-java-5.1.7]# cp mysql-connector-java-5.1.7-bin.jar /usr/java/jdk1.6.0_11/jre/lib/ext/
[root@localhost mysql-connector-java-5.1.7]#

(apache를 설치한다. 주의:아래 ./configure 명령어는 두줄이 한 라인임. 한꺼번에 복사할것)

[root@localhost tuffkid]# cd /home/tuffkid

[root@localhost tuffkid]# wget http://ftp.kaist.ac.kr/pub/Apache/httpd/httpd-2.2.11.tar.gz

[root@localhost tuffkid]# tar zxvf httpd-2.2.11.tar.gz

[root@localhost tuffkid]# cd httpd-2.2.11
[root@localhost httpd-2.2.6]# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-modules=so --enable-headers --enable-cgi --enable-cgid --enable-so -enable-proxy -enable-proxy-html -enable-proxy-balancer -enable-cache

[root@localhost httpd-2.2.6]# make

[root@localhost httpd-2.2.6]# make install

[root@localhost httpd-2.2.6]# echo "/usr/local/apache2/lib" >> /etc/ld.so.conf
[root@localhost httpd-2.2.6]# echo "/usr/local/apache2/modules" >> /etc/ld.so.conf
[root@localhost httpd-2.2.6]# /sbin/ldconfig
[root@localhost httpd-2.2.6]# cd /usr/local/apache2/bin
[root@localhost bin]# ./httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c
[root@localhost bin]#

 

(apache환경 파일을 수정 한다. 역시 파일의 끝에서부터 수정. 라인번호 혼동 우려 해서)

[root@localhost bin]# vi /usr/local/apache2/conf/httpd.conf

 

<IfModule dir_module>
    DirectoryIndex index.html index.htm (213라인 추가)
</IfModule>
---------------------------------------------------------------------------------------
#ServerName www.example.com:80 (145라인 아래에 4줄 추가)
#ServerName www.tuffkid.net:80 (주석건다.)

<IfModule mod_header.c>

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

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

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

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

#Group daemon

User nobody

Group nobody

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

:wq

"/usr/local/apache/conf/httpd.conf" 460L, 15671C written

[root@localhost bin]#

[root@localhost home]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

NameVirtualHost *:80

#tuffkid.net
<VirtualHost *:80>
    ServerAdmin tuffkid@tuffkid.net
    DocumentRoot /home/tuffkid/www/
    ServerName tuffkid.kr
    ServerAlias www.tuffkid.net tuffkid.net
</VirtualHost>


:wq


 

(홈페이지가 위치할 곳에 권한을 줄것, httpd.conf에서 설정한 VirtualHost의 Web Directory 모두를 생성(생성하지 않으면 apache 기동시 ERROR 발생)

[root@localhost home]# cd /home/tuffkid

[root@localhost tuffkid]# mkdir www

[root@localhost tuffkid]# chmod -R 707 www/

[root@localhost tuffkid]# cd /usr/sbin

[root@localhost sbin]# mv apachectl back_apachectl

 

(conf 파일 검사)

[root@localhost tuffkid]# cd /usr/local/apache2/bin/
[root@localhost bin]# ./apachectl configtest
Syntax OK
[root@localhost bin]#

 

 

(유저 생성시 해당 디렉토리 자동생성하기.. index.html파일같은것을 넣어두면 해당파일도 같이 생성된다.)

[root@localhost bin]# cd /etc/skel/
[root@localhost skel]# mkdir www
[root@localhost skel]# chmod -R 707 www/

 

(tomcat을 설치하고 환경파일 수정)

[root@localhost local]# cd /home/tuffkid/
[root@localhost tuffkid]# wget http://ftp.kaist.ac.kr/pub/Apache/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz

[root@localhost skel]# cd /usr/local

[root@localhost local]# mv /home/tuffkid/apache-tomcat-6.0.18.tar.gz .
[root@localhost local]# tar zxvf apache-tomcat-6.0.18.tar.gz

[root@localhost local]# ln -s apache-tomcat-6.0.18 tomcat
[root@localhost 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_11"
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@localhost local]# source /etc/profile

(apr과 jni-native를 설치한다. *주의 : ./configure 라인은 두줄이므로 한번에 복사)
[root@localhost local]# cd /home/tuffkid

[root@localhost tuffkid]# wget http://archive.apache.org/dist/apr/apr-1.3.3.tar.gz

[root@localhost tuffkid]# cd /usr/local
[root@localhost local]# mv /home/tuffkid/apr-1.3.3.tar.gz .
[root@localhost local]# tar zxvf apr-1.3.3.tar.gz

[root@localhost local]# cd apr-1.3.3
[root@localhost apr-1.3.3]# ./configure
[root@localhost apr-1.3.3]# make && make install

[root@localhost apr-1.3.3]# cd /usr/local
[root@localhost local]# wget http://www.urlstructure.com/apache/tomcat/tomcat-connectors/native/1.1.15/source/tomcat-native-1.1.15-src.tar.gz

[root@localhost local]# tar zxvf tomcat-native-1.1.15-src.tar.gz

[root@localhost local]# cd /usr/local/tomcat-native-1.1.15-src/jni/native/
[root@localhost native]# sh buildconf --with-apr=/usr/local/apr-1.3.3
[root@localhost native]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-java-home=/usr/java/jdk1.6.0_11/
[root@localhost native]# make && make install

(apr과 jni-native를 설치후 path 걸기)

[root@localhost 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
/usr/local/apache2/lib   
/usr/local/apache2/modules

 

:wq

 

(apr의 파일을 jdk에 귀속시켜 준다.)

[root@localhost native]# /sbin/ldconfig
[root@localhost native]# cd /usr/java/jdk1.6.0_11/jre/lib/i386/
[root@localhost i386]# ln -s /usr/local/apr/lib/libtcnative-1.so libtcnative-1.so
[root@localhost i386]# ln -s /usr/local/apr/lib/libtcnative-1.a libtcnative-1.a
[root@localhost i386]# ln -s /usr/local/apr/lib/pkgconfig/ pkgconfig

 

(jk2를 설치한다)

[root@localhost i386]# cd /usr/local/

[root@localhost i386]# wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk2/jakarta-tomcat-connectors-jk2-src-current.tar.gz

[root@localhost local]# tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz

[root@localhost local]# cd /usr/local/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
[root@localhost native2]# ./buildconf.sh

[root@localhost native2]# ./configure --with-apxs2=/usr/local/apache2/bin/apxs
[root@localhost native2]# make
[root@localhost 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@localhost conf]# cd /usr/local/tomcat/conf/

[root@localhost conf]# vi jk2.properties

handler.list=apr,channelSocket,request

channelSocket.port=8009

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

apr.jniModeSo=inprocess

 

:wq

 

(apache 에서 tomcat 연결하는 환경을 만든다. 아래 파일을 생성한다.)

[root@localhost conf]# cd /usr/local/apache2/conf/

[root@localhost 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

 

(tomcat의 server.xml 파일을 수정)

[root@ns conf]# cd /usr/local/tomcat/conf
[root@ns conf]# vi server.xml
 

 

(수정시 라인혼동 우려하여 아랫줄부터 위로 수정)
(369라인에 아래의 노란색 부분 추가한다.)
        </Host>
   <!-- tuffkid.net -->
        <Host name="tuffkid.net">

            <Context path=""

                docBase="/home/tuffkid/www"

                reloadable="true"/>

            <Alias>www.tuffkid.net</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

 


(tomcat의 web.xml 파일을 수정해 준다.)

[root@localhost conf]# cd /usr/local/tomcat/conf/
[root@localhost 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>  // false를 true로
        </init-param>
        <load-on-startup>1</load-on-startup>

    </servlet>

 

(아파치 환경 파일 수정)

[root@localhost conf]# cd /usr/local/apache2/conf/
[root@localhost conf]# nano 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

 

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

[root@localhost conf]# nano /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
[root@localhost conf]# /etc/rc.d/tomcat  //테스트
Usage: /etc/rc.d/tomcat {start|stop|restart} // 이 메세지가 나오면 정상

[root@localhost conf]# ln -s /etc/rc.d/tomcat /etc/rc.d/rc3.d/S90tomcat
[root@localhost conf]# ln -s /etc/rc.d/tomcat /etc/rc.d/rc5.d/S90tomcat
[root@localhost conf]# ln -s /etc/rc.d/tomcat /etc/rc.d/rc6.d/K90tomcat


 

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

[root@localhost 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

 

(SELINUX 비활성화)

[root@localhost conf]# vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

:wq

 

(리부팅 권장)

[root@localhost conf]# shutdown -r now

 

(라이브러리 설치)

[root@localhost tuffkid]# yum -y install zlib zlib-devel freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel openssl flex gcc gcc-c++

[root@localhost tuffkid]# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz

[root@localhost tuffkid]# tar zxvf libiconv-1.9.2.tar.gz

[root@localhost tuffkid]# cd libiconv-1.9.2
[root@localhost libiconv-1.9.2]# ./configure --prefix=/usr/local

[root@localhost libiconv-1.9.2]# make

[root@localhost libiconv-1.9.2]# make install

[root@localhost tuffkid]# yum install *gd* *libxml2*

Install     25 Package(s)        
Update       0 Package(s)        
Remove       0 Package(s)        

Total download size: 17 M
Is this ok [y/N]: y

[root@localhost tuffkid]# yum install *libtool-ltdl-devel*

[root@localhost tuffkid]# yum install *mhash*

 

(mcrypt 설치)

[root@localhost proftpd-1.3.0a]# cd /home/tuffkid/

[root@localhost tuffkid]# wget http://heanet.dl.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz

[root@localhost tuffkid]# tar zxvf libmcrypt-2.5.8.tar.gz

[root@localhost tuffkid]# cd libmcrypt-2.5.8
[root@localhost libmcrypt-2.5.8]# ./configure

(생략...)

config.status: executing depfiles commands
config.status: executing default-1 commands
You have mail in /var/spool/mail/root

[root@localhost libmcrypt-2.5.8]# make
[root@localhost libmcrypt-2.5.8]#
make install
make[1]: Leaving directory `/home/tuffkid/libmcrypt-2.5.8'
[root@localhost libmcrypt-2.5.8]# 

 

(ruby on rails 설치)

[root@localhost tuffkid]# cd /home/tuffkid

[root@localhost tuffkid]# yum install *ruby*

[root@localhost tuffkid]# wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz

[root@localhost tuffkid]# tar zxvf rubygems-0.9.4.tgz

[root@localhost tuffkid]# cd rubygems-0.9.4

[root@localhost rubygems-0.9.4]# ruby ./setup.rb
[root@localhost rubygems-0.9.4]# sudo gem install termios --include-dependencies

[root@localhost rubygems-0.9.4]# sudo gem install rails --include-dependencies
[root@localhost rubygems-0.9.4]# sudo gem install mongrel mongrel_cluster --include-dependencies

Select which gem to install for your platform (i386-linux)
 1. mongrel 1.0.1 (mswin32)
 2. mongrel 1.0.1 (ruby)
 3. mongrel 1.0 (mswin32)
 4. mongrel 1.0 (ruby)
 5. Skip this gem
 6. Cancel installation
> 2
Select which gem to install for your platform (i386-linux)
 1. fastthread 1.0 (ruby)
 2. fastthread 1.0 (mswin32)
 3. fastthread 0.6.4.1 (mswin32)
 4. fastthread 0.6.4.1 (ruby)
 5. Skip this gem
 6. Cancel installation
>
1

[root@localhost rubygems-0.9.4]# sudo gem install capistrano --include-dependencies

[root@localhost rubygems-0.9.4]# sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

Select which gem to install for your platform (i386-linux)
 1. mysql 2.7.3 (mswin32)
 2. mysql 2.7.1 (mswin32)
 3. mysql 2.7 (ruby)
 4. mysql 2.6 (ruby)
 5. Skip this gem
 6. Cancel installation
> 3


[root@localhost tuffkid]# cd /home/tuffkid

(PHP 설치)

[root@localhost tuffkid]# wget http://kr2.php.net/get/php-5.2.8.tar.gz/from/this/mirror

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

[root@localhost tuffkid]# tar zxvf re2c-0.12.1.tar.gz

[root@localhost tuffkid]# cd re2c-0.12.1

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

[root@localhost re2c-0.12.1]# make

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

[root@localhost re2c-0.12.1]# make install

[root@localhost re2c-0.12.1]# cd /home/tuffkid/

[root@localhost tuffkid]# tar zxvf php-5.2.8.tar.gz

[root@localhost tuffkid]# cd php-5.2.8

[root@localhost php-5.2.4]# ./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 --enable-mbstring --with-mcrypt --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mhash --with-iconv=/usr/local

[root@localhost php-5.2.8]# make //5~10분 대기

[root@localhost php-5.2.8]# make install

[PEAR] Console_Getopt - installed: 1.2.2
[PEAR] Archive_Tar    - installed: 1.3.2
[PEAR] Structures_Graph- installed: 1.0.2
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
[PEAR] PEAR           - installed: 1.5.4
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
Installing PDO headers:          /usr/local/php/include/php/ext/pdo/

 

 

(PHP 환경 설정)

[root@localhost php-5.2.8]# cp php.ini-dist /etc/php.ini

[root@localhost php-5.2.8]# vi /usr/local/apache2/conf/httpd.conf

 

    (446라인 주석 제거 : 제거 안하면 apache2/htdoc로 연결됨)

    # Vitual hosts

    # Include conf/extra/httpd-vhosts.conf

    Include conf/extra/httpd-vhosts.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 (220라인 추가)

</IfModule>

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

<Directory />

    Options FollowSymLinks

    AllowOverride None

    Order deny,allow

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

    Allow from all

</Directory>

 

:wq

[root@localhost php-5.2.4]#

 

(Zend 설치)

[root@localhost php-5.2.4]# cd /home/tuffkid

[root@localhost tuffkid]# wget http://downloads.zend.com/optimizer/3.3.0/ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz

[root@localhost tuffkid]# tar xvzf ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz

[root@localhost tuffkid]# cd ZendOptimizer-3.3.0-linux-glibc21-i386

[root@localhost ZendOptimizer-3.3.0-linux-glibc21-i386]# ./install.sh

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

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

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

[root@localhost 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

 

(RoR을 Apache와 연동)

[root@localhost extra]# cd /usr/local/apache2/conf/extra/
[root@localhost extra]# vi httpd-vhosts.conf

 

(맨 하단에 추가)
#tuffkid.com (rails)
<VirtualHost *:80>
   ServerName tuffkid.com
   ServerAlias www.tuffkid.com tuffkid.com
   DocumentRoot /home/ossin/www

   RewriteEngine On
   RewriteRule ^/$ /index.html [QSA]
   RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
   RewriteRule $/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]

   <Directory /home/ossin/www>
      AllowOverride all
      Options ExecCGI FollowSymLinks
      Order allow,deny
      Allow from all
   </Directory>
   <Proxy balancer://mongrel_cluster>
      BalancerMember http://127.0.0.1:8000
      BalancerMember http://127.0.0.1:8001
      BalancerMember http://127.0.0.1:8002
   </Proxy>
 </VirtualHost>


:wq

 

 

(설치완료후 방화벽 세팅:설치완료후에 사설아이피로도 접속이 안될경우(web,ftp))

 

[root@localhost tuffkid]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0          
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0          

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:80

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination        
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0          
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0          
ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0          
ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

(위와 같이 나올경우 기본적으로 22번(ssh)포트만 허용하고 있다. 아래와 같이 허용한다)

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

[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -p tcp --dport 21 -j ACCEPT

[root@localhost ~]# /etc/rc.d/init.d/iptables save

(이제 정상적으로 웹과 ftp에 접속할 수 있다.)

만약 iptables이 정상적으로 작동안하면 lokkit 에서 추가 해줌

 

 

MYSQL패스 설정

[root@localhost www]# 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_02"
APACHE2_HOME=/usr/local/apache
CATALINA_HOME=/usr/local/tomcat
MYSQL_HOME=/usr/local/mysql

 

export JAVA_HOME APACHE2_HOME CATALINA_HOME
APACHE_CONF="/usr/local/apache/conf/httpd.conf"
PIDFILE="/usr/local/apache/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:$MYSQL_HOME/bin

 

:wq

 

MYSQL패스 루트 비밀번호 설정

[root@localhost ZendOptimizer-3.2.8-linux-glibc21-i386]# cd /usr/local/mysql/bin/
[root@localhost www]# ./mysqladmin -u root password '새로운암호'
[root@localhost www]# ./mysqladmin -u root -p reload

 

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

!!(아까 없었던 /usr/sbin/apachectl 이 언제 생겼는지 아파치 실행시 중복실행되는듯?)

[root@localhost www]# cd /usr/sbin/

[root@localhost sbin]# mv apachectl apachectl_back

실행이고 뭐고 뒤도안돌아보고 재부팅

 

추가사항))

재부팅후 웹에서 접속하기 위해서 공유기 설정 해줘야한다. 80포트 21포트 22포트 열어주기

find / -name proftpd.conf 찾아서

DefaultRoot 를 ~ 로 해줌 (그래도 안된다.. 이건 모르겠네)

proftpd 데몬은 start, stop 파라메터를 먹지 않는다. 그냥 /usr/local/proftpd/sbin/proftpd 하면 실행됨

공유기 세팅시 NAT설정 - 내부서버 설정에서 아이피만 부여해준다.

Comments