[중급이상 개발자를 위한 매뉴얼] DB(Oracle8.1.6, Mysql)+PHP+Zend Optimizer+APACHE+Tomcat(jsp,servlet)+IMAP+gd
* 최종 작성일자:2000.9.8
* 필자: 임근식 (ICQ: invain 64764075) http://jinri.kmu.ac.kr/~s4238733/ invain@orgio.net
* 참고문서: 온갖 인터넷 문서 통독, 관련 서적들 참고
참고한 문서를 상세하게 설명드리고 싶은데.. 너무 많은 문서들을 참고
하다보니... 일일이 홈주소와 서적을 나열해 드리지 못한점 양해 바랍니다.
* 설치하고 정상적으로 가동되는지 모든 테스트를 끝냈습니다.
* 참고로 중급자 이상만 보시길 바랍니다. 왜냐구요.!! 쉬운내용은 설명을 생략했습니다.
초보자 한테는 죄송합니다.. 그러지만, 후회하는 결과를 낳지 않기위해 ...
* 이렇게 설치하는데 저도 3일동안 이거하고 싸워서 이겼습니다.
(제가 머리가 안좋다 보니, 손발이 고생하게 되는 군요!...)
중간에 포기 하지마시고 꼭 성공하시길 바랍니다. 포기만큼 바보같은게 없죠...
* 퍼포먼스를 위해 php는 DSO(Dynamic Shared Object)하지 않고 컴파일 처리했습니다.
* jakarta-tomcat는 모듈화 설치하였습니다.
* resin,GNU JSP, Jserv 모두 깔아봤는데, 아파치를 쓰는 이상 아파치 프로젝트 팀의
톰캣을 쓰는게 나중에 편할 것 같아서 jarkarta-tomcat를 사용했습니다.
(아무래도 다른 프로그램보다 개발속도가 빠르지 않을까요???)
* 프로그램 다운로드는 천리안 자료실이나 http://www.tuxfinder.com같은 곳을 이용하세요!
설치환경: * Kernel 2.2.14 * CPU: Pentium 466MHZ
* RAM : 64MHZ * HDD: 9Giga
* MainBoard:BX * VGA:Riva-Vanta
* LanCard:RealTek 8139 PCI
* Sound Card: Ess Sound
* OS(Mizi Linux 1.1)
---------------[목 차]-----------------------------------------
1. imap 설치
2. jdk 설치
3. jsdk 설치
4. jre + oracle 8.1.6 설치
5. mysql 설치
6. gd Library 설치
7. apache 임시 해제
8. PHP설치
9. ZEND OPTIMIZER 설치
10.apache 설치(DSO) 설치
11. 서블릿 엔진 설치
11-1. 방법1.
Jakarta Tomcat 설치(Servlet & JSP 지원함)
11-2. 방법2.
Apache-Jserv1.05b &GNU JSP 설치 (http://java.apache.org/)
GNU_jsp 설치
11-3. 방법3.
Resin 1.1.3 설치
------------------------------------------------------------------
****************
1. IMAP설치
****************
다운: imap-4.7c2.tar.Z /
ftp://ftp.cac.washington.edu/imap/
[root@linuxer /tmp]# cd /tmp
shell>zcat imap.tar.Z | tar xvf -
*/usr/local/imap 로 이동
shell>mv ./imap-4.6.BETA /usr/local/imap
shell>cd /usr/local/imap
shell>make slx
shell>cp ipopd/ipop2d /usr/sbin/
shell>cp ipopd/ipop3d /usr/sbin/
shell>cp imapd/imapd /usr/sbin/
shell>vi /etc/inetd.conf
pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
imap stream tcp nowait root /usr/sbin/tcpd imapd
shell>/etc/rc.d/init.d/inet restart
[root@peterpan imap]# killall -HUP inetd
[root@peterpan imap]# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
* OK localhost.localdomain IMAP4rev1 v12.264 server ready
위 같은 화면이 나오면 IMAP 설치는 성공입니다.
[root@peterpan imap]# cp /usr/local/imap/c-client/c- client.a /usr/lib/libc-client.a
[root@peterpan imap]# mkdir /usr/local/include
[root@peterpan imap]# cp /usr/local/imap/c-client/mail.h /usr/local/include
[root@peterpan imap]# cp /usr/local/imap/c-client/rfc822.h /usr/local/include
[root@peterpan imap]# cp /usr/local/imap/c-client/linkage.h /usr/local/include
위의 파일들을 카피하는 것은 아파치 컴파일시 아파치가
IMAP을 인식하여 사용할 수 있도록 하기 위한 파일입니다.
위의 파일들을 카피하지 않은면 아파치 컴파일시 에러가 납니다.
IMAP 설치 끝.
****************
2. Jdk 1.2.2 http://java.sun.com
****************
참고) jdk가 설치되어 있어야. 톰캣에서 서블릿을 가동할수 있슴.
> tar xvfz jdk1_2_2-linux-i386.tar.gz
> mv jdk1_2_2 /usr/local/
> ln -s /usr/local/jdk1_2_2 java
> vi /etc/profile 하시고..
PATH="$PATH:/usr/local/java/bin"
export JAVA_HOME="/usr/local/java"
export CLASSPATH="."
(저장후 종료)
여기까지.. jdk 설치가 끝난겁니다..
잘 되었는지 확인방법은 다시 로그인 하신후에.. java -version 해보세요..
잘되죠?? 그럼 ok!!!!!!!!!
****************
3. Jsdk 2.0 http://java.sun.com
****************
> tar xvfz jsdk20-solaris2-sparc.tar.Z
> mv JSDK20 /usr/local/
> ln -s /usr/local/JSDK20 JSDK
> vi /etc/profile
PATH="$PATH:/usr/local/JSDK"
export CLASSPATH=".:/usr/local/JSDK/lib/jsdk.jar"
(저장후 종료)
****************
4. JRE + ORACLE
****************
1) 파티션 설치환경
/ 2GB
/oracle 1.5GB ( 오라클 프로그램이 설치되는 디렉토리)
/u01 1.5GB(데이타베이스가 저장될 디렉토리)
swap 1GB(램의 3배정도를 설정)
2) jre를 www.blackdown.org에 가서 다운 받아 /usr/local/jre에 설치 또는
링크(ln -s /usr/local/jre1.1.8 jre)를 한다.
참고) 오라클 설치에 jdk는 필요 없지만 최적의 개발환경을 위해서 설치합시다.
오라클 8.1.6은 jre1.1.8이상을 설치해야한다는 것을 잊지 말자.
3) 그룹/사용자 생성 및 오라클 프로그램 다운로드/압축해제 http://technet.oracle.co.kr
groupadd -g 5000 dba
useradd -g dba oracle
passwd oracle
vi /etc/group
-> dba:x:5000:에 dba:x:5000:oracle,root로 고친다.
tar -xvzf oracle8_1_6.tar /orasetup
4) oracle 계정의 .profile or .bash_profile 에 추가할 내용
* 권장사항: 가능한 /etc/profile에 추가하여 계정마다 추가 않도록 할것.
export display=localhost:0.0
export USERNAME BASH_ENV PATH
export ORACLE_OWNER=oracle;export ORACLE_OWNER
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/products/8.1.6
export ORACLE_SID=ORCL
export ORACLE_TERM=vt100
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export
PATH=$PATH:$ORACLE_HOME/bin:/usr/local/jre/bin:$ORACLE_HOME:/usr/local:/usr/local/jdk/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib
export
CLASSPATH=/usr/local/jre/bin:$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib:/usr/local/jre:/usr/local/jdk/lib/classes.zip:/usr/local/jre/bin
umask 022
mesg n
5) root 계정의 .bash_profile or .profile에 추가할 내용
export ORACLE_HOME=/oracle/app/oracle/products/8.1.6
export ORACLE_SID=ORCL
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export TNS_ADMIN=$ORACLE_HOME/network/admin
mesg n
6) 소유권 및 퍼미션 조정
chown -R oracle.dba /usr/local/jre
chown -R oracle.dba /tmp
chown -R oracle.dba /oracle <-안해주면 설치시 인벤토리 위치에서 쓰기 권한없다는 메세지 뜸.
chown -R oracle.dba /u01 <- 안해주면 설치시 데이타베이스 저장화일 위치 셋팅에서
에러메세지 발생함.
chmod -R 755 /oracle
chmod -R 755 /tmp
7) vi /etc/sysconfigg/desktop
->반드시 대문자로 KDE라고 적고 저장
8) oracle 계정으로 로그인후, startx를 실행
참고) 시스템리소스별 윈도우 메니저 우선순위
gnome>windowmaker>tvwm(tvwm이 최상의 퍼포먼스를 유지함)
9) 오라클 설치 프로그램이 있는 디렉토리로 이동/설치
/orasetup/Oracle8iR2/install/linux/runInstaller
........ 중간 설치 상세 설명 생략
........ group -> dba
........ Global Data Base Name -> oracle
........ Directory for DataBase Files -> u01
........ 설치 도중 root권한으로 실행해야 하는 것들이 있음을 기억.
최종적으로 설치완료가 되면 아래와 같은 내용의 작은 창 정보가 나온다.
[데이터베이스가 생성되었습니다.]
<<데이터베이스 정보>>
전역 DB명 : oracle
DBMS 식별자(SID): ORCL
SYS 계정 암호: change_on_install
SYSTEM 계정 암호: manager
10) listener.ora 와 tnsnames.ora 편집
/oracle/app/oracle/products/8.1.5/network/admin/ 디렉토리로
이동해서 위의 화일을 펴집기로 host,port,DB IP Address를 기록
* 오라클 ODBC드라이버는 SQL*NET를 기초로 작동됨
이제 오라클을 실행해보죠..!
먼저 oracle계정으로 접속해야 한다는 것을 잊지 마세요
svrmgrl
connect internal;
startup;
quit
lsnrctl start
SQL> alter user system identified by abc; [Enter]
SQL> grant connect, resource to system;
SQL> alter user sys identified by 123; [Enter]
SQL> exit
* 사용자 등록
[oracle@baram bin]$ sqlplus [Enter]
Enter user-name: system[Enter]
Enter password: manager[Enter]
SQL>connect internal
SQL>create user 사용자ID indentified by 사용자passwd [Enter]
>default tablespace users [Enter]
>temporary tablespace temp [Enter]
>quota unlimited on users; [Enter]
completed
SQL>grant connect to 사용자ID
SQL>select * from tabs;
제가 쉽게 쓴다고 썼지만... 막상 해보시면 많은 문제점이 발생할 것입니다.
그렇다고 포기하지 마시고, 그럴댄 technet.oracle.co.kr의 [질문/답변]란을
참고하시면 될겁니다..
####오라클+php+apache 실행시 주의사항####
에러내용:
Warning: _oci_open_server: Error while trying to retrieve text
for error ORA-12545 in /home/you/public_html/oci.php on line 4
오라클을 스타트하시고, 리스너를 띄우세요.(lsnrctl start)
다음 아파치를 스타팅하시면 됩니다. 간단히 말해서 서버차
원에서 세션을 유지해야 합니다. 글구, 오라클 유저의 환경
셋팅을 아파치를 구동할 수 있는 유저의 환경파일이나 시스템
전역적인 profile에 셋팅을 하는 방법도 있고, apachectl 파일
내에 셋팅을 하는 법도 있습니다.
참고) 실행화일 디렉토리: /oracle/app/oracle/products8.1.5/bin
-> netca명령 : NET8서비스 생성
-> netasst명령: NET8서비스 수정
-> dbassist명령: DB 생성
****************
5. MYSQL
****************
MYSQL 인스톨(소스화일) www.mysql.com
tar xvzf mysql.tar.gz
./configure --prefix=/usr/local/mysql --with-charset=euc_kr
make
make install
./bin/mysql_install_db
./bin/safe_mysqld --language=korean &
(또는 mysql.server를 755로 퍼미션 지정후 /usr/sbin/에 넣고,
이명령어를 사용해도 됩니다.)
./bin/mysqladmin -u root password 'new-pass'[enter]
pstree명령으로 설치확인
* 팁) root 패스워드 분실시 방법:
(1) ./killall mysqld (데몬을 모조리 죽임)
(2) ./bin/safe_mysqld --skip-grant &
(3) mysql> UPDATE user SET Password=PASSWORD('newpasswd') WHERE
user='root';
(4) mysql> FLUSH PRIVILEGES;
****************
6. GD Library 설치
****************
GD -> www.boutell.com/gd에서 다운 받을 것
tar xvzf gd.tar.gz
./make
주의) make명령을 하기 전에 /usr/local/include명령을 삽입해야 컴파일 에러가 발생하지 않음.
./make install
(옵션) mv gd1.8.3 /usr/local/gd
****************
7. 아파치 잠시 풀기 (www.apache.org)
****************
./configure --prefix=/usr/local/apache
****************
8. PHP인스톨 -> www.php.org
****************
./setup <-되도록이면 이 명령을 이용할 것.
OR ./configure
--with-oci8=/oracle/app/oracle/products/8.1.6
--with-oracle=/oracle/app/oracle/products/8.1.6
--with-mysql=/usr/local/mysql
--with-apache=/data/apache
--with-gd=/usr/local(or/usr/local/gd)
--with-imap=/usr/local/imap
--enable-sigchild
--with-language=korean
--with-charset=euc_kr
--with-config-file=/usr/local/lib
--enable-track-vars(GET/POST/Cookies변수를 PHP3에서 내부변수로 사용)
--disable-debug
참고>cp php3.ini-dist /usr/local/lib/php3.ini (용량제한,Sendmail설정)
--enable-sigchild : 오라클-PHP 좀비현상 문제 해결하기위해 필수
make
make install
*******************
9. ZEND OPTIMIZER http://www.php.org
*******************
Optimizer 를 압축해제하면 ZendOptimizer.so 라는 파일이 있습니다.
일단 /usr/local/ 안에.. Zend/lib 라는 디렉토리를 만듭니다.
그리고 이곳에 ZendOptimizer.so 파일을 COPY 합니다..
mkdir /usr/local/Zend
mkdir /usr/local/Zend/lib
cp ZendOptimizer.so /usr/local/Zend/lib
php.ini 파일 수정하기
cd /usr/local/lib
vi php.ini
다음과 같이 적어 줍시다..
[Zend Optimizer]
zend_optimizer.optimization_level=7
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"
여기까지 하면 다 된것입니다....
이제 다음과 같이 파일을 만들어 확인하면 다음과 같은 문구가 나올겁니다...
phpinfo();
?>
This program makes use of the Zend scripting language engine:
Zend Engine v1.0.1, Copyright (c) 1998-2000 Zend Technologies
with Zend Optimizer v0.99, Copyright (c) 1998-2000, by Zend Technologies
************************
10. Apache 인스톨(DSO)
************************
./apache/configure --prefix=/usr/local/apache
--activate-module=src/modules/php4/libphp4.a
--enable-rule=SHARED_CORE
--enable-module=so ==> Java Shared Object
--enable-shared=max => DSO Support(Dynamic Shared Object)
./apache/make
./apache/make install
주의) configure,make,make install을 ./src 상위디렉토리에서 명령할것
test.php에 phpinfo();를 삽입하여 테스트하면 끝남.
********************************
11-방법1. Jakarta Tomcat 설치
********************************
1) http://jakarta.apache.org에서 다운
2) mod_jserv.so를 /usr/local/apache/libexec디렉토리에 이동
download)jakarta.apache.org/builds/tomcat/release/v3.1_beta_1/bin/
3) /usr/local/apache/conf/httpd.conf화일에
Include /usr/local/jakarta-tomcat/conf/tomcat.conf를 추가시킴
4) 끝으로 아파치/톰켓(startup.sh -f) 가동
5) 웹브라우저로 http://host:8080/을 입력하면 고양이 그림이 나와야함.
***************************************************
11-방법2. Apache-Jserv1.05b 설치&GNU JSP 설치 (http://java.apache.org/)
***************************************************
=> Apache-Jserv1.05b 설치
Jserv 는 아파치에서 서블릿을 구동해 주는 것으로써,
Jserv를 이용하여 DB와 연동하는 3Tier방식의 구조를 채택
한다면 매우효과적인 웹 서비스가 가능할 것임.
1)tar xvf Apache-Jserv-1.0b5.tar
2)mv ./Apache-Jserv-1.0b5 ./jserv
3)cd jserv
4)./configure --enable-module=so
--with-apache-install=/usr/local/apache
--enable-apache-conf --prefix=/usr/local/jserv
--with-jsdk=/usr/local/jsdk/lib/jsdk.jar
5)make
6)make install
Jserv의 설치가 끝났다.
=> GNU JSP 설치
이 글은 김태양님의 제공에 의해 www.apache.kr.net에 게시되었습니다.
GNUJSP1.0은 기존의 0.9버젼들과는 달리 JSP 1.0 spec을 지원하여 줍니다.
apache에 jserv를 쓰시는 분들께서 JSP로 개발하려고 하신다면 GNUJSP 1.0을
설치하여 보는 것도 좋을 것 같습니다.
* apache와 jserv는 설치되었다고 가정하겠습니다.( Apache는 1.3.6이상으로
DSO로 설치되어 있어야 합니다. )
* GNUJSP를 /usr/local/gnujsp에 압축을 풀어놓은 상태로 가정하겠습니다.
1. GNUJSP 1.0을 다운로드 받는다. ( http://www.klomg.org/gnujsp )
2. 압축을 푼다. ( tar xvfz gnujsp-1.0.0.tar.Z )
3. GNUJSP를 위한 zone을 하나 생성한다. ( jserv 소스에 보면 example.properties가
있는데 그것을 복사하여 apache의 conf디렉토리에 복사한다. 다른 곳에 복사하여도
상관은 없다.)
4. example.properties를 alph.properties 로 변경한다.
( 다른것으로 하여도 상관없다. gnujsp에서 alph.properties로 하길래 ^^;; )
5. jsp가 servlet으로 변경되므로 서블릿소스와 class가 저장될 디렉토리를 하나
생성한다. ( 여기선 /usr/local/apache/jspcode 로 합니다. )
6. alph.properties 파일을 열어서 아래와 같이 변경한다.
repositories=/usr/local/gnujsp/lib/gnujsp10.jar
repositories=/usr/local/gnujsp/lib/servlet-2.0-plus.jar
...
autoreload.classes=true // 아마 default로 설정되어 있을 꺼예요
autoreload.file=true // 아마 default로 설정되어 있을 꺼예요
...
servlet.gnujsp.code=org.gjt.jsp.JspServlet
servlet.gnujsp.initArgs=checkclass=true,pagebase=/usr/local/apache/htdocs,
scratchdir=/usr/local/apache/jspcode,debug=true,compiler=builtin-javac -classpath %classpath%:%scratchdir%:/usr/local/gnujsp/lib/servlet-2.0-plus.jar:/usr/local/gnujsp/lib/gnujsp10.jar %source%
//잠깐 설명
pagebase는 웹 서버 루트 디렉토리 ( 즉.. index.html 있는곳 )
scratchdir은 5번에서 설정한 servlet파일들이 모여있을곳
compiler는 javac을 쓰겠다는 것이죠.. ( compiler = /usr/local/jdk/bin/javac
이런 식으로 바로 지정해도 됩니다. )
7. jserv.properties의 zone에 alph를 추가해 줍니다.
zone = xxx,xxx,alph
8. 추가로 zone디렉토리의 위치도 추가해 줍니다.
xxx.properties=xxxxxx
alph.properties=/usr/local/apache/conf/alph.properties
9. jserv.conf나 httpd.conf에 다음과 같이 설정해 줍니다. ( 저의 jserv1.05b설치
하기 메뉴얼데로 하신분은 httpd.conf에 하시면 됩니다. ^^;; )
ApJServAction .jsp /alph/gnujsp
ApJServMount /alph /alph
10. 설정이 끝났으니 웹서버의 루트 디렉토리에 test.jsp를 하나 만들어 봅시다.
11. test.jsp
12. 웹 브라우저를 실행하고 http://your host/test.jsp 하면 시간이 약간 흐른후
(컴파일 하므로) 결과를 볼 수 있을 겁니다.
기타 질문이나 서블릿 jsp에 관한 내용들은 http://owd.neonet.co.kr에서 찾아보세요 ^^;;
********************************
11-방법3. RESIN 1.1 설치 http://www.caucho.com
********************************
(1)mod_caucho.so 컴파일링
unix> ./configure --with-apache=/usr/local/apache
unix> make
unix> make install
unix> ./configure --with-apxs=/usr/local/apache/bin/apxs
unix> make
(2)아파치 환경 수기로 설정(주석을 제거)
httpd.conf
LoadModule caucho_module libexec/mod_caucho.so
AddModule mod_caucho.c
<IfModule mod_caucho.c>
CauchoConfigFile <installdir>/resin1.1/conf/resin.conf
<Location /caucho-status>
SetHandler caucho-status
</Location>
</IfModule>
(3)홈계정의 환경설정
in ~/.profile or /etc/profile
# Java Location
JAVA_HOME=/<installdir>/jdk1.2.2
export JAVA_HOME
# Resin location (optional).
RESIN_HOME=/<installdir>/resin1.1
export RESIN_HOME
# If you're using additional class libraries, you'll need to put them
# in the classpath.
CLASSPATH=
(4)resin.conf 환경 설정
<caucho.com>
<http-server
app-dir='/usr/local/apache/htdocs'>
<servlet-mapping url-pattern='/servlets/*'
servlet-name='invoker'/>
<servlet-mapping url-pattern='*.xtp'
servlet-name='com.caucho.jsp.XtpServlet'/>
<servlet-mapping url-pattern='*.jsp'
servlet-name='com.caucho.jsp.JspServlet'/>
</http-server>
</caucho.com>
(5)서블릿 실행
> resin1.1/bin/srun.sh
unix> resin1.1/bin/srun.sh start
unix> resin1.1/bin/srun.sh stop
(6)로드 밸런싱 방법
resin.conf
<caucho.com>
<http-server>
<srun host='211.36.37.78' port='6802'/>
<srun host='211.36.37.79' port='6802'/>
<srun-backup host='backup port='6802'/>
...
</http-server>
</caucho.com>
(7) /usr/local/apache/bin/apachectl start
[이 글은 임근식님의 제공에 Apache.Kr.net 에 게시되었습니다]