반응형

웹호스팅 환경을 구축하기 위해서는 DNS 서버를 구축해야 하나
사용자 계정을 이용한 JSP서버까지만 구축할 생각이다.
http://ip/~account 식의 도메인이 될것이다.

1. user 생성과 아파치 설정 변경
-- /etc/skel 은 유저 생성시 유저홈에 기본적으로 생성되는 뼈대 디렉토리와 파일 생성..
# cd /etc/skel
# mkdir public_html
# mkdir public_html/WEB-INF
# vi public_html/index.jsp
<HTML>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>GUDA'S SERVER</title>
</head>

 <BODY>
  <h1><h1><% out.print("Welcom GUDA'S SERVER"); %></h1><br /></h1>
  <h1> http://www.pmguda.com <br /></h1>
  <h1> ganziguda@gmail.com<br /></h1>

 </BODY>
</HTML>
2. 사용자 계정 생성 및 비번 설정
# useradd guda
# passwd guda
Changing password for user guda.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
# chmod -R 755 /home/guda
# cd /home/guda/public_html/
# cp index.jsp index.html
# vi index.php
<?='this is test'?>

3. 아파치에서 사용자계정을 사용해서 사용자 디렉토리에 접근할수 있도록 설정
--Include문앞에 주석을 제거한다.

# vi /usr/local/apache2/conf/httpd.conf

Include conf/extra/httpd-userdir.conf


4. 아파치 서버를 재시작한다.
# /usr/local/apache2/bin/httpd -k restart

각 파일들을 웹브라우져로 요청해 보면 php 파일은 정상적으로 출력되는데


jsp, html 파일은 찾지 못하는 것을 볼수가 있다.

PHP 소스를 읽는 것은 httpd.conf 에서
#JkMount /* loadbalancer  이렇게 주석처리 해줫기 때문이다.

5. jsp와 html을 정상적으로 읽도록 하기 위해서는 /usr/local/tomcat/conf/server.xml 을 수정
# vi /usr/local/tomcat/conf/server.xml

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false"> 
     
<Context path="/~guda" docBase="/home/guda/public_html" debug="0" reloadable="true" />

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->

      </Host>
    </Engine>
  </Service>
</Server>


6. 서버를 재시작 하고 확인
# /usr/local/apache2/bin/httpd -k restart
# /usr/local/tomcat/bin/catalina.sh stop
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
# /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

--jsp 파일은 정상 출력되지만 html코드내의 <% %> jsp 코드는 먹히지 않는다.



위에 페이지는 정상적으로 잘 뜨나 한글이 깨니는 것을 볼수 있다.
일단 JSP에서 한글이 깨져 나오는 것은 인코딩 문제이다. 파일 상단에 이렇게 넣어주자.
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
리눅스 서버 자체가 utf-8로 저장을 하니 utf-8로 불러와서 utf-8로 뿌려주게 하면 된다.

이제 오라클 연동 테스트를 하다보면 DB에서 값을 불러오는데 한글이 깨진다.
Character Set이 맞지 않아서 생긴 문제이다.
일단 오라클에 접속해 다음과 같이 변경해 주고 오라클을 재시작 하도록 하자.

update props$ set VALUE$='KO16KSC5601' where name='NLS_CHARACTERSET';

그리고 앞서 아파치 오라클 연동시 설정해줬던 밑 부분에
# vi /usr/local/apache2/bin/envvars

export ORACLE_HOME=/oracle/11g
export ORACLE_SID=oracle
LD_LIBRARY_PATH="/usr/local/httpd/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
--이 아랫부분에 추가해 주도록 하자.
export NLS_LANG=KOREAN_KOREA.KO16KSC5601

이로써 글자가 깨지는 문제는 해결이 될것이다.

그리고 여기까지만 서버 셋팅을 하도록 하겠다. 도메인을 주고 사용자 계정에 도메인을 붙이는
작업도 있지만 DNS 서버를 구축할 예정이 없기 때문에 여기서 완료하도록 하겠다.
글을 작성하면서 수정해야 할 부분이 있거나 안되거나 추가할 부분이 있으면 댓글을 달아주는 센스!!
블로그에 글 하나 작성하는데 너무나 많은 시간이 걸리는것 같다. ㅠㅠ


반응형

앞서 우분투에 Apache + PHP + Oracle 연동설치까지 하였다. 
JSP 연동을 위해 Tomcat 설치 후 연동 과정에 대해서 정리하도록 하겠다.

우선 Tomcat을 구동하기 위해서는 JDK가 설치가 되어 있어야 한다.
우분투 10.04에는 아마도 OpenJDK가 설치 되어 있을것이다. 이를 사용해도 무방하나
본인은 Sun JDK를 오랫동안 사용해 왔으므로 Sun JDK를 설치하도록 하겠다.

우분투 10.04에서는 # apt-get install sun-java6-jdk 하면 설치가 되지 않는다.
source list 에 Sun JDK 1.6 이 포함 되어 있지 않는것 같다.

Sun JDK 1.6 설치

1. Source List에 추가
# add-apt-repository "deb http://archive.canonical.com/ lucid partner"

2. Source List 업데이트
# apt-get update

3. Sun JDK 1.6 설치 
# apt-get install sun-java6-jdk

4. 설치 완료 확인
# 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
....  이런 식으로 출력되면 정상설치 된것이다.

TOMCAT 설치
tomcat 7.0.0 을 다운 받도록 하자.
http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.0-beta/bin/apache-tomcat-7.0.0.tar.gz

이전 설치 과정을 잘 따라왔다면 이후 설치과정중 명령어들이 무슨 명령어인지 알것이다.
# cd /usr/local/src
# wget http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.0-beta/bin/apache-tomcat-7.0.0.tar.gz
# tar xvzf apache-tomcat-7.0.0.tar.gz
# mv apache-tomcat-7.0.0 /usr/local/tomcat
# cd /usr/local

톰캣 관련 환경변수를 셋팅해 준다. /etc/profile 파일 마지막에 추가
# vi /etc/profile
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/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://localhost:8080 으로 접속해보자.


위와 같은 화면이 뜨면 정상설치가 된것이다. 여기서 뒤에 8080은 톰캣포트이다.
여기서 더 나아가 아파치와 톰캣의 연동 부분까지 진행해 나가도록 하겠다.

APACHE-TOMCAT CONNECTOR
1. 다운로드
# cd /usr/local/src
# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/source/jk-1.2.30/tomcat-connectors-1.2.30-src.tar.gz 
2. 압축 해제
# tar xvzf tomcat-connectors-1.2.30-src.tar.gz
# cd tomcat-connectors-1.2.30-src
# cd native/
3. 컴파일 및 설치
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make && make install
4. 설치 확인
# ls /usr/local/apache2/modules/mod_jk.so
/usr/local/apache2/modules/mod_jk.so  <== 파일이 존재하면 정상 설치 완료.

5. 아파치와 톰캣 연동 설정을 위하여 httpd.conf 와 workers.properties 파일을 수정 생성한다.
# vi /usr/local/apache2/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 맨뒤에 위와같이 추가한다.

6. workers.properties파일을 새로 생성한다.
# vi /usr/local/apache2/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

7. 아파치와 톰캣을 재시동하고 8080포트를 빼고 접속한다.
-- 아파치와 톰캣 재시동..
# /usr/local/apache2/bin/apachectl restart
# /usr/local/tomcat/bin/catalina.sh stop  
# /usr/local/tomcat/bin/catalina.sh start 

http://localhost  로 접속


아파치와 톰캣의 연동이 정상적으로 완료되었다.
이제 톰캣이 자동 실행 되도록 셋팅하도록 하자.
/etc/init.d 에서   tomcat 파일을 생성

# vi /etc/init.d/tomcat


위와 같이 작성하고 실행 권한을 주도록 하자

내용작성후 실행권한을 부여하고 시작프로세스에 등록한다.  재시작하면 자동 실행 된다.

하지만 이전에 설치한 PHP는 인식하지 못하고 해당 페이지를 다운로드 받게 된다.
이 부분에 대한 셋팅에 방법에 대해서 기술 하도록 하겠다.

앞서 추가한 httpd.conf 에 추가한 부분에서
#JkMount /* loadbalancer
이 부분을 주석처리(앞에 #) 하거나 삭제하고 재가동 하면 JkMount부분에서 지정하지 않은 확장자는
모두 본래의 아파치 디렉토리에서 정상적으로 읽게 된다.
이정도에서 더 나아가 웹호스팅 처럼 웹서버를 활용하고자 한다면 더 추가해야 할 부분이 있다.
그냥 단일 웹서버로 사용하고자 한다면 여기까지 설정하고 사용하길 바란다.

서버에서 각 계정들에게 도메인을 개인 도메인을 할당하고 사용할수 있게 해보자.
이부분에 대한 포스팅도 다음으로 넘어가도록 하겠다 글이 너무 길어지기 때문에.





반응형
아파치 설치
공식 사이트:  http://httpd.apache.org

1. 아파치 최신 버전을 내려받도록 한다.
      본인은  httpd-2.2.15.tar.gz 를 대상으로 설치

2. 컴파일 및 설치 (root권한으로)

/usr/local/src 에 다운 받아 놓은 파일의 압축을 해제한다.

# tar xvzf httpd-2.2.15.tar.gz
# cd httpd-2.2.15

--컴파일 실행 및 설치 과정
# ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-so
# make && make install

3. 아파치의 설치 과정이 끝났다.  아파치가 자동 시작 되도록 설정하자.
-- 서비스 등록
# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
# chkconfig -add httpd

-- 서비스 확인
# chkconfig --list|grep httpd
-- httpd                     0:off  1:off  2:on   3:on   4:on   5:on   6:off
 
PHP 설치
공식사이트 : http://www.php.net

-- 아래 두 패키지를 먼저 설치하자.
# apt-get install libxml2-dev libxslt-dev libjpeg62-dev libpng12-dev  libcurl4-openssl-dev

1. /usr/local/src 에 php-5.2.13.tar.gz 를 다운 받도록 하자.

2. 컴파일 및 설치 (root권한으로) 
# tar xvzf php-5.2.13.tar.gz
# cd php-5.2.13

#  ./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs  \
--with-config-file-path=/usr/local/apache2/conf   \
--with-zlib-dir=/usr/local/  \
--with-gd=shared \
--with-xmlrpc \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-curl=/usr/lib \
--with-zlib \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--enable-mbstring \
--with-libxml-dir=/usr/local/ \
--with-xsl=/usr/local/ \
--with-iconv \
--enable-sockets \
--enable-pdo \
--with-pdo-oci=$ORACLE_HOME  \
--with-oci8=$ORACLE_HOME  \
--enable-sigchild \
--with-openssl  \
--with-mysql=/usr/local/mysql

# make && make install

3. php.ini  파일을 복사해서 넣자.
# cp php.ini-dist /usr/local/apache2/conf/php.ini

4. httpd.conf 파일에 다음 내용을 삽입한다.

# vi /usr/local/apache2/conf/httpd.conf

-- 아래 빨간 부분이 추가할 부분들이다.

ServerName localhost

306  AddType application/x-compress .Z
307  AddType application/x-gzip .gz .tgz
-- 아래 부분에  추가하도록 하자.--

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


-- 그리고 맨 하단 php.ini 파일 경로를 삽입
PHPIniDir "/usr/local/apache2/conf/"

LoadModule php5_module modules/libphp5.so   <<= httpd.conf에 잘 들어가있는지 확인

5. 아파치에서 오라클 연동시에 사용하는 환경 변수 값을 셋팅해 준다.
(오라클 설치시 셋팅했던것과 동일하게 설정해주도록 한다.)

# vi /usr/local/apache2/bin/envvars

export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/11g
export ORACLE_SID=oracle

--이 윗부분에 추가해 주도록 하자.
LD_LIBRARY_PATH="/usr/local/httpd/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH

6. 웹서비스 루트 경로에 phpinfo 파일을 만들어 확인하자.
# vi /usr/local/apache2/htdocs/test.php

 <? phpinfo(); ?>

아래와 같이 OCI 연동 부분을 확인 할 수 있다.


오라클과의 연동확인 코드는 testOra.php 파일을 작성해 확인해 보자.

# vi testOra.php

<?

    $conn = oci_connect("scott", "tiger", "127.0.0.1/oracle");

    $stid = oci_parse($conn, "SELECT * FROM EMP");
    oci_execute($stid);

    $nrows = oci_fetch_all($stid, $results);

    echo "<html><head><title>Oracle PHP Test</title></head><body>";
    echo "<center><h2>Oracle PHP Test</h2><br>";
    echo "<table border=1 cellspacing='0' width='50%'>\n<tr>\n";
    echo "<td><b>Name</b></td>\n<td><b>Salary</b></td>\n</tr>\n";

    for ($i = 0; $i < $nrows; $i++ ) {
      echo "<tr>\n";
      echo "<td>".$results["EMPNO"][$i]."</td>";
      echo "<td>".$results["ENAME"][$i]."</td>";
      echo "</tr>\n";
    }

    echo "<tr><td colspan='2'> Number of Rows: $nrows</td></tr></table>";
    echo "<br><em>If you see data, then it works!</em><br></center></body></html>\n";

?>



ZendOptimizer 설치
공식사이트 :  http://www.zend.com

ZendOptimizer는 PHP의 속도를 향상시켜준다.

1. ZendOptimizer을 내려받도록 한다.
      본인은  ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz 를 대상으로 설치

2. 압축해제 및 설치 (root권한으로)

/usr/local/src 에 다운 받아 놓은 파일의 압축을 해제한다.

# tar xvzf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
# cd ZendOptimizer-3.3.9-linux-glibc23-i386

3. 프로그램 설치
3.3.3 이전 버전은 install명령어를 제공하여 설치 되었지만 3.3.9 버전부터는 제공되지 않는다.
(참고: 3.3.9 버전은 php 5.3.0 이상은 제공하지 않는다.)

3-1 일단 설치된 php 버전을 확인하자
# /usr/local/php/bin/php -v
PHP 5.2.13 (cli) (built: Jun 30 2010 18:49:52)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

3-2 php 버전에 따른 Zend 모듈을 복사 하도록 하자.
# cd data
# cp 5_2_x_comp/ZendOptimizer.so  /usr/local/php/lib/

3-3 php.ini 파일에 Zend 관련 설정
# vi /usr/local/apache2/conf/php.ini

[Zend]
 zend_optimizer.version=3.3.9
 zend_extension=/usr/local/php/lib/ZendOptimizer.so

4. 설치 확인
# /usr/local/php/bin/php -v

PHP 5.2.13 (cli) (built: Jun 30 2010 18:49:52)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies   <== 정상설치 확인.

이로써 Ubuntu 10.04 + APACHE + PHP + ORACLE 연동에 대한 포스팅이 완료 되었다.
우분투에 오라클과 PHP 연동 관련 자료가 없어서 삽질해가며 설치 하였다.
고생한 만큼 자료를 정리하면 다음에도 수월하게 작업할수 있기에 시간은 좀 걸렸지만 나름 만족한다.
이후 포스팅에서는 여기에 JSP용 언어 서버를 구성하도록 하겠다.

+ Recent posts