레드헷 리눅스에서 Apache + Oracle + PostgreSQL + MySQL + PHP + Tomcat + JAVA 서버구성2
기본적 APM과 Oracle,PostgreSQL까지 구성이 끝났다. 지금 상태에서도 왠만한 사이트와 프로젝트는 수행할 능력이 된다. Oracle과 PostGreSQL을 제외한 APM만으로도 충분히 웹서버의 기능을 할수있다. Do you agree to the above license terms? [yes or no] Java(TM) SE Development Kit 6 successfully installed. Product Registration is FREE and includes many benefits: Product and system data will be collected. If your configuration For more information on what data Registration collects and Press Enter to continue..... -cp <class search path of directories and zip/jar files> # System wide environment and startup programs, for login setup pathmunge () { # ksh workaround # Path manipulation # No core files by default if [ -x /usr/bin/id ]; then HOSTNAME=`/bin/hostname` if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC for i in /etc/profile.d/*.sh ; do unset i export JAVA_HOME=/usr/local/jdk 100%[=======================================================================================================================================================================>] 5,998,298 1.32M/s in 4.3s 00:03:57 (1.33 MB/s) - `apache-tomcat-6.0.20.tar.gz' saved [5998298/5998298] [root@localhost Desktop]#
한동안 웹용 언어(CGI)로서 인기가 많았던 PHP의 경우 인기가 시들어가고 있다. 물론 지금도 PHP소스는 강력하다. 전세계용 웹어플리케이션인 Moodle이나 우리나라 웹사이트들이 많이 사용하는 제로보드,그누보드,테터툴즈,설치형 블로그등은 모두 PHP로 작성된 언어들이다. APM은 설치법이 다른 서버류보다 많이 일반화 되어 있고 한번에 설치해주는 툴도 많이 나와있다. 또한 리눅스,유닉스,윈도우즈 버젼으로 대개의 운영체제로 지원되기 때문에 유포형 웹솔루션으로서는 APM용 솔루션이 가장 적합하다.
그만큼 PHP는 나름 대중화 되어 있는 웹언어라고 할수 있다.
C를 약간 접한 사람이라면 PHP가 매우 친숙하다. PHP는 문법의 틀이 C의 구조와 매우 비슷하기 때문이다.
ASP는 MicroSoft사에서 개발한 웹용언어이다. ASP는 일단 Windows NT용이라는 생각이 머리에 꽂히게 된다. 보통의 APM이 Windows나 Linux와 유닉스에서도 모두 쓸수있다는 장점이 있지만, NT를 사용하지 않는 유져들은 ASP를 접할 기회가 드물다. 물론 Windows XP에서도 ASP는 돌릴수는 있다. 하지만 개인용 XP에 웹서버를 운영한다는것이 바로 자원의 낭비라는것을 곧바로 알게될것이다.
MS용 웹어플리케이션으로는 Apache에 대응하는 IIS가 있고, MySQL에 대응하는 MSSQL이 있다. ASP는 IIS와 MSSQL에 연동해 많이 쓰인다.
각설하고, 이 포스팅은 레드헷 계열(CentOS, Fedora, RHE)에서 서버구성의 발자취..즉 노트를 만드는 일이다.
그럼 지금 쓰는 포스팅.. JSP는 무엇인가?
JSP는 PHP와 ASP와 같은 스크립트 언어이다.
PHP가 C를 따르고 ASP가 비주얼베이직을 따랐다면, JSP는 Java를 따르고 있다.
제작사도 Java를 만드는 Sun사이다.
JSP는 PHP로 코딩하는것보다 더 어렵다. 많은 사람이 이치만 깨우치면 쉽다라고 하지만, 모든 표현을 객체화하여 표현하기 때문에 라이브러리 중심의 PHP보다 참조나 변형이 어렵다는것을 금방 알게된다. 또한 서블릿이라는 java로 컴파일한 객체를 사용할수 있다고 하는데 이분야는 좀더 연구를 해봐야겠다. 연구를 하면서 서블릿에 대한 포스팅도 시작하여야 겠다.
이제 그만 잡소리하고..설치를 해보도록 하자.
JAVA (jdk)
다운로드:
http://www.snowrice.com/freepds/1103
http://java.sun.com/javase/downloads/
jdk-6u14-linux-i586-rpm.bin
jdk는 jdk와 jre로 구성되어있다. jdk는 한마디로 개발툴이고 jre는 자바용 프로그램들을 시스템에서 구현해주는 툴이라고 보면 된다. jdk설치로 두 가지다 설치된다.
[root@localhost Desktop]# chmod +x jdk-6u14-linux-i586-rpm.bin
[root@localhost Desktop]# ./jdk-6u14-linux-i586-rpm.bin
2. LICENSE TO USE. Subject to the terms and conditions of
this Agreement, including, but not limited to the Java
yes
엔터계속
물음에 모두 yes로 답한다
Unpacking...
Checksumming...
Extracting...
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).
inflating: jdk-6u14-linux-i586.rpm
inflating: sun-javadb-common-10.4.2-1.1.i386.rpm
inflating: sun-javadb-core-10.4.2-1.1.i386.rpm
inflating: sun-javadb-client-10.4.2-1.1.i386.rpm
inflating: sun-javadb-demo-10.4.2-1.1.i386.rpm
inflating: sun-javadb-docs-10.4.2-1.1.i386.rpm
inflating: sun-javadb-javadoc-10.4.2-1.1.i386.rpm
준비 중... ########################################### [100%]
1:jdk ########################################### [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
plugin.jar...
javaws.jar...
deploy.jar...
Installing JavaDB
준비 중... ########################################### [100%]
1:sun-javadb-common ########################################### [ 17%]
2:sun-javadb-core ########################################### [ 33%]
3:sun-javadb-client ########################################### [ 50%]
4:sun-javadb-demo ########################################### [ 67%]
5:sun-javadb-docs ########################################### [ 83%]
6:sun-javadb-javadoc ########################################### [100%]
* Notification of new versions, patches, and updates
* Special offers on Sun products, services and training
* Access to early releases and documentation
supports a browser, the Sun Product Registration form for
the JDK will be presented. If you do not register, none of
this information will be saved. You may also register your
JDK later by opening the register.html file (located in
the JDK installation directory) in a browser.
how it is managed and used, see:
http://java.sun.com/javase/registration/JDKRegistrationPrivacy.html
Done.
이것으로 Java의 설치는 끝이다.
확인을 위해서 아래의 사항을 점검한다.
[root@localhost Desktop]# rpm -qa | grep jdk
java-1.6.0-openjdk-1.6.0.0-0.25.b09.el5
jdk-1.6.0_14-fcs
[root@localhost Desktop]# java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions with specified granularity
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions with specified granularity
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
See http://java.sun.com/javase/reference for more details.
jdk의 설치는 무난히 끝났다. 모두 그렇지만 윈도우 프로그램처럼 setup.exe만 실행시킨후 모든게 끝나면 얼마나 좋겠냐만은, 작은 설정이 필요하다.
[root@localhost Desktop]# ls /usr/java
default jdk1.6.0_14 latest
[root@localhost Desktop]# ln -s /usr/java/jdk1.6.0_14 /usr/local/jdk
[root@localhost Desktop]# vi /etc/profile
# /etc/profile
# Functions and aliases go in /etc/bashrc
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
if [ -z "$EUID" -a -x /usr/bin/id ]; then
EUID=`id -u`
UID=`id -ru`
fi
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
HISTSIZE=1000
INPUTRC=/etc/inputrc
fi
if [ -r "$i" ]; then
. $i
fi
done
unset pathmunge
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib/tools.jar:.
[root@localhost Desktop]# ls -la /etc/profile
-rw-r--r-- 1 root root 1049 7월 16 00:07 /etc/profile
[root@localhost Desktop]# chmod 755 /etc/profile(실행권한설정)
[root@localhost Desktop]# /etc/profile (갱신된 profile을 적용)
[root@localhost Desktop]# javac (설치가 잘되었나 확인)
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
-classpath <path> Specify where to find user class files and annotation processors
-cp <path> Specify where to find user class files and annotation processors
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-endorseddirs <dirs> Override location of endorsed standards path
-proc:{none,only} Control whether annotation processing and/or compilation is done.
-processor <class1>[,<class2>,<class3>...]Names of the annotation processors to run; bypasses default discovery process
-processorpath <path> Specify where to find annotation processors
-d <directory> Specify where to place generated class files
-s <directory> Specify where to place generated source files
-implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files
-encoding <encoding> Specify character encoding used by source files
-source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version
-version Version information
-help Print a synopsis of standard options
-Akey[=value] Options to pass to annotation processors
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system
APACHE-TOMCAT
jdk만으로 설정이 끝나느냐? 아니다. jsp를 구현하기 위해서는 apache-tomacat을 설치해 주어야 한다.
다운로드
http://www.snowrice.com/freepds/1108
http://mirror.apache-kr.org/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
[root@localhost Desktop]# wget http://mirror.apache-kr.org/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
--00:03:52-- http://mirror.apache-kr.org/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
Resolving mirror.apache-kr.org... 211.174.58.187
Connecting to mirror.apache-kr.org|211.174.58.187|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5998298 (5.7M) [application/x-gzip]
Saving to: `apache-tomcat-6.0.20.tar.gz'
wget을 통해서 apache-tomacat을 다운받았다.
[root@localhost Desktop]# tar -xvf apache-tomcat-6.0.20.tar.gz
[root@localhost Desktop]# mv apache-tomcat-6.0.20 /usr/local/tomcat
[root@localhost Desktop]# cd /usr/local
[root@localhost local]# ls
bin etc games httpd include jdk lib libexec mysql pgsql php sbin share src tomcat
[root@localhost local]# vi /etc/profile
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
[root@localhost local]# source /etc/profile
[root@localhost local]# system-config-securitylevel-tui (system-config-firewall-tui)
8080:tcp 8080번 포트를 열어준다.
[root@localhost bin]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
로칼에서 http://ip:8080으로 접속하여 보자
설치는 제대로 잘되었다. 여기서 확실히 개념을 잡아야 할것은..
일반 http://domain으로 접속을 하였을때는 apache의 본래의 기능으로 접속을 하고
http://ip:8080으로 접속을 하면 위의 고양이 나오는 그림과 같이 jsp페이지가 떠야한다는것이다.
여기서 개념을 잡아야 할것이 있다.
일반 html으로 접속한것은 아파치의 본래의 기능으로 접속하고 jsp로 접속한것은 tomcat을 이용하여 8080번으로 접속을 한다는 이야기다.
톰캣과 아파치를 연동하면 http://domain을 연결하면 /usr/local/tomcat/webapps의 index.jsp나 index.html을 찾는다. 그러나 이렇게 하면 아파치의 고유기능인 virtual hosting과 어떻게 적절히 움직일수 있느냐 하는 의문점이 남는다.
자 그럼, 우선 계정 사용자를 염두해두지 않고, http://ip식으로 접속하면 루트 사용자만을 위한 /usr/local/httpd/htdocs가 아닌 /usr/local/tomcat/webapps에 접속하는 아파치-톰캣 연동을 하자.
APACHE-TOMCAT CONNECTOR
다운로드
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz
[root@localhost Desktop]# wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz --01:26:20-- http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz Resolving www.apache.org... 140.211.11.130 Connecting to www.apache.org|140.211.11.130|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1541956 (1.5M) [application/x-gzip] Saving to: `tomcat-connectors-1.2.28-src.tar.gz' 100%[=============================================================>] 1,541,956 588K/s in 2.6s 01:26:23 (588 KB/s) - `tomcat-connectors-1.2.28-src.tar.gz' saved [1541956/1541956] [root@localhost Desktop]# tar -xvf tomcat-connectors-1.2.28-src.tar.gz |
연동 설정을 위하여 httpd.conf와 workers.properties파일을 수정 생성하자.
[root@localhost native]# vi /usr/local/httpd/conf/httpd.conf LoadModule jk_module modules/mod_jk.so #Tomcat-connector JkWorkersFile conf/workers.properties JkLogFile logs/jk.log JkLogLevel info JkLogStampFormat "[%a %b %d %H:%M:%S %y]" JkMount /*.jsp loadbalancer JkMount /*.do loadbalancer JkMount /*.html loadbalancer JkMount /servlet/* loadbalancer JkMount /* loadbalancer JkMount /*.gif loadbalancer #Load Module 맨뒤에 위와같이 추가한다. ServerName 192.168.123.132 # # |
workers.properties파일을 새로 생성하고 위와 같이 삽입한다.
[root@localhost conf]# vi /usr/local/httpd/conf/workers.properties worker.list=loadbalancer worker.tomcat1.type=ajp13 worker.tomcat1.host=127.0.0.1 worker.tomcat1.port=8008 worker.tomcat1.lbfactor=1 worker.tomcat2.type=ajp13 worker.tomcat2.host=127.0.0.1 worker.tomcat2.port=8009 worker.tomcat2.lbfactor=1 worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=tomcat1,tomcat2 |
[root@localhost conf]# /usr/local/httpd/bin/httpd -k restart [root@localhost conf]# /usr/local/tomcat/bin/catalina.sh stop [root@localhost conf]# /usr/local/tomcat/bin/catalina.sh start |
아파치와 톰캣을 재시동한다.
http://ip로 접속
아파치와 톰캣의 연동이 성공적으로 끝났다.
하지만.. 앞서 설치한 PHP는 이제부터 쓸수없게 된다!
예로 <?php phpinfo(); ?> php태그를 이용하여 test.php를 작성하여 읽어보자..
웹서버는 test.php를 출력하지 않고 브라우져는 해당파일을 웹페이지로 인식못하고 다운로드 받게 된다.
그러므로 jsp이외의 php파일은 정상적으로 tomcat의 영향을 받지 않고 출력해줘야 한다.
httpd.conf에서
JkMount /* loadbalancer
이부분을 지우고 웹서버를 재가동하면 JkMount부분에서 지정하지 않은 확장자는 모두 본래의 아파치디렉토리에서 정상적으로 읽게된다.
웹호스팅을 기획하지 않고 단일 웹서버로 쓰이는 머신은 여기까지 세팅하면 된다.
작은 사이트의 경우, 거의 모든 플랫폼이 APM에 맞춰있기 때문에 jsp까지 세팅하지 않고 APM+Oracle서버로도 매우 훌륭하다.
하지만 기필코 jsp와 php 모두 웹호스팅에 적용하고 싶으면 다음 포스팅 +3에서 이어진다.
'manabu & Linux' 카테고리의 다른 글
CentOS Flash plugin 10 설치하기 (0) | 2009.07.23 |
---|---|
레드헷 리눅스에서 Apache + Oracle + PostgreSQL + MySQL + PHP + Tomcat + JAVA 서버구성3 (버추얼호스팅 Virtual hosting) (1) | 2009.07.16 |
레드헷 리눅스에서 Apache + Oracle + PostgreSQL + MySQL + PHP + Tomcat + JAVA 서버구성1 (1) | 2009.07.15 |
레드헷 계열 리눅스에서 MySQL설치 (0) | 2009.07.15 |
레드헷계열 리눅스에서 PostgreSQL의 설치 (0) | 2009.07.15 |