2003년 4월 9일 수요일

Mysql+PHP+APACHE 연동해서 깔기(설치, install)

----------------
FreeBSD에서
(모든 것은 ports로 설치하면 된다.)
----------------
mysql server와 client을 먼저 설치하고 (/usr/ports/databases/mysql블라블라)
mod_php4를 설치한다. (/usr/ports/www/mod_php)
(아마도 apache를 같이 깔아 줄 것이다.)
apache를 설치한다. (/usr/ports/www/apache블라블라)

여기에 gd도 설치해서 연동하고 싶다면.
gd를 설치한다. (/usr/ports/graphics/gd)
mod_php4를 재설치한다. (/usr/ports/www/mod_php) - make reinstall

----------------
Linux에서
----------------
http://apache.kr.net/documents/dbphp.html

[중급이상 개발자를 위한 매뉴얼]  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

댓글 없음:

댓글 쓰기