oracle 8.1.6 R2
MySQL-3.22.32-1
apache 1.3.12
php 4.0.2
gd 1.8.3(jpeg zlib 필요)
tomcat 3.1(src로 받지 말고 bin으로 된 것을 다운)
모든 설정은 /etc/profile.d/myset.sh에 저장하기로 한다.
/etc/profile.d디렉토리에 놓이는 파일은 실행퍼미션이 있으면 부팅시
실행되게 된다. myset.sh의 권한은 755모드로 해야 한다.
자바설치
이는 /usr/java에 설치된다.
javasoft에서 기존 Blackdown에서 하던 리눅스포팅을 하면서
솔라리스와 같은 방식으로 디렉토리를 생성한다.
설치된 곳은 rpm -ql jdk로 알 수 있다.
(rpm -qf /usr/java/jdk1.3/bin/java로실행파일이 어느 RPM패킷지에서 나온 건지 알 수있다.)
오라클 설치(Oracle for Linux 8i 8.1.6 Release 2)
이 버전은 사실 설치시 버그가 있다.
JRE의 문제가 아닐까 싶은데 UI부분에 있어선 inconsistent하게
core dump가 발생한다. 본인은 Xmanager를 사용해 겨우 어렵게
설치에 성공했다.
루트로 실행
일단 오라클을 풀자
tar xvzf oracle8161_tar.gz -C /usr/local/src/oracle
cd /usr/local/src/oracle/Oracle8iR2
Oracle사의 OFA(Oracle Flexible Architecture)에 따라
/u01을 마운트 포인트로 삼았다.
디스크 하나짜리 리눅스라 u02, u03..식으로 만들진 못했다. 쩝..
cd /
mkdir u01
cd u01
mkdir app
cd app
mkdir oracle
cd oracle
mkdir product
cd product
mkdir 8.1.6
cd 8.1.6
후..
ORACLE_HOME인 /u01/app/oracle/product/8.1.6을 만들었다.
ORACLE_BASE는 /u01/app/oracle로 지정한다.
이 놈을 오라클설치에 관련되 그룹인 oinstall이 소유하게 만든다.
이전에는 oinstall이라는 그룹이 없었는데 오라클 8iR2부터 이 oinstall이라는
그룹이 나타났다. 매뉴얼상으로는 오라클 프로그램의 설치,갱신등을
담당한다고 한다.
오라클 사용자/그룹생성
dba(SYSDBA, OSDBA)와 oinstall그룹을 만들고 dba는 사용자 oracle의 Secondary Group,
oinstall은 사용자oracle의 Primary Group으로 만든다.
oracle사용자의 홈디렉토리를 ORACLE_HOME으로 만들지 말라고 권고하는데
번거롭고해서 그냥 여기로 지정했다.(아무 상관은 없다)
/u01이하 디렉토리를 oracle사용자와 oinstall그룹의 소유로 만든다.
chown -R oracle:oinstall /u01
적기 힘들다. 이하 설명이 필요없다고 생각되면 생략하겠다.
음.. 무지막지하군..
이제 myset.sh에는 다음과 같이 미리 설정해 두자.
myset.sh의 내용
# Java 설정
export JAVA_HOME=/usr/java/jdk1.3/jre
# Oracle 설정
ORACLE_OWNER=oracle
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/8.1.6
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
ORACLE_SID=piruks
ORACLE_DOC=$ORACLE_BASE/doc
LD_LIBRARY_PATH=$ORACLE_HOME/lib
#CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib:$ORACLE_HOME/JRE
CLASSPATH=$JAVA_HOME/jre
TNS_ADMIN=$ORACLE_HOME/network/admin # tnsnames.ora가 위치하는 곳 지정
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
EDITOR=vi
오라클설치하자
cd ~oracle
source /etc/profile.d/myset.sh
./orainstRoot.sh
자바VM에서 실행되는 설치화면 시작
쩝.. 생략할란다.
음.. 맨 처음 나오는 그룹은 oinstall로 지정하고
그 다음 조금 뒤에 나오는 구룹에서는 dba,dba로 지정한다.
참고로 DB생성은 하지 말고 나중에 dbassist로 하는 것이 좋다.
참고:
이 놈의 버전은 버그가 많아서 거의 core dump가 발생한다.
/u01/app/oracle/product/8.1.6/assistants/dbca/jlibe디렉토리 아래에
에러로그가 javacore3613.txt과 같이 기록된다.
어떻게 Xmanager로 설치하니 억지로 되었다.
MySQL설치
다음과 같은 파일을 몽땅 설치
MySQL-3.22.32-1.i386.rpm
MySQL-client-3.22.32-1.i386.rpm
MySQL-devel-3.22.32-1.i386.rpm
MySQL-shared-3.22.32-1.i386.rpm
rpm -ivh MySQL-*
MySQL의 루트암호를 설정
/usr/bin/mysqladmin -u root password 'xxxxxxxx'
아파치, PHP, GD, ..소스풀기
tar xvzf apache_1.3.12.tar.gz -C /usr/local/src
tar xvzf php-4.0.2.tar.gz -C /usr/local/src
tar xvzf gd-1.8.3.tar.gz -C /usr/local/src
tar xvzf jpegsrc.v6b.tar.gz /usr/local/src
tar xvzf jakarta-tomcat.tar.gz -C /usr/local (src에 풀지마!)
GD는 libpng, zlib, jpeg 라이브러리를 요구한다.
libpng, zlib는 rpm으로 설치되어 있었다.
GD의 README파일을 참조해 자알~ 설치한다.
cd /usr/local/src
[root@piruks src]# l -1
apache_1.3.12
gd-1.8.3
jpeg-6b
php-4.0.2
jpeg설치
cd jpeg-6b/
./configure
make
make install
gd설치
make
make install
cp: cannot create regular file `/usr/local/include/gd.h': No such file or directory
chmod: /usr/local/include/gd.h: No such file or directory
make: *** [install] Error 1
에러가 난다. 음.. 없다고 하니 생성하자
mkdir /usr/local/include
make install
myset.sh의 PATH에 아파치의 경로를 등록한다.
export PATH=$PATH:/usr/java/jdk1.3/bin:/usr/local/apache/bin
참고(Configure사용) -------------------------------------
--enable-module
아파치와 함께 배포되어진(아파치 tarball에 동봉된) 모듈을 enable시킴
아파치 tarball에 있는 모듈중에 default로 설치되는 모듈이 있고 default로
설치되지 않는 모듈이 있다.
value로는 mod_perl이라면 mod_를 제외한 perl을 지정해준다.
value에는 위처럼 지정된 모듈명을 정확하게 적지않고 all, most를 적을 수 있다.
all: 아파치배포시 내장한 모든 모듈을 사용하겠다는 의미
most:가용한 모든 모듈을 사용하겠다는 의미
(all에서 OS의존적이모듈등을 제거 예:auth_db, ..)
--enable-shared
shared object support(DSO)를 enable한다는 의미
이 옵션의 사용은 자동적으로 '--enable-module=so'를 사용한다는 의미를 가진다.
max so모듈을 제외한 모든 모듈을 DSO로 하겠음
remain ?(해석이 안됨)
(예제)
--enable-module=rewrite \ // rewrite모듈(mod_rewrite)을 DSO로 설치
--enable-shared=rewrite
(중요)
차후, 아파치의 DSO+APXS메커니즘을 이용해 thiry-party모듈을 설치할 일이 있다면,
반드시 enable-module=so를 해줘야 한다.
MySQL과 연동 테스트
MySQL의 간단한 요약
(도움말은 help를 치면 나오므로 간단히 요약)
[oracle@piruks 8.1.6]$ mysql -u root -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 3.22.32
Type 'help' for help.
mysql> show databases;
'+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)
mysql> use test;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table test
-> (
-> name varchar(10),
-> age int
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values('강명규', 27);
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+--------+------+
| name | age |
+--------+------+
| 강명규 | 27 |
+--------+------+
1 row in set (0.01 sec)
이제 kang이라는 사용자를 만들어 요놈으로 테스트하자.
mysql> use mysql
mysql> insert into user ( host, user, password ) values ( 'localhost', 'kang', password('xxxxxx') );
MySQL설치시 미리 만들어져 있는 test라는 DB를 kang에게 할당하자.
mysql> update db set user='kang' where db='test';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
참고>
새로운 DB를 생성하여 사용자kang에게 할당은 다음과 같다.
%> mysql -u root -p mysql
Enter password:(비밀번호를 입력한다.)
mysql> create database db_chat;
mysql> insert into db values ( '%', 'db_chat', 'chat_user', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y' );
mysql> insert into user ( host, user, password ) values ( 'localhost', 'chat_user', password('chat_pass') );
mysql> FLUSH PRIVILEGES;
mysql> quit
%> mysql -u chat_user -p db_chat
이제 PHP에서 MySQL연동 테스트를 하자 (음.. 지겹군..)
test_mysql.php
<html>
<body>
<?
$connect = mysql_connect( "localhost", "kang", "xxxxxx" ) or die( "Can't access DB" );
mysql_select_db( "test", $connect );
여러개의 row가 존재시 다음과 같이 할 수 있다.
<html>
<body>
<?
$connect = mysql_connect( "localhost", "kang", "xxxxxx" ) or die( "Can't access DB" );
mysql_select_db( "test", $connect );
# Oracle 설정
ORACLE_OWNER=oracle
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/8.1.6
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
ORACLE_SID=piruks
ORACLE_DOC=$ORACLE_BASE/doc
LD_LIBRARY_PATH=$ORACLE_HOME/lib
#CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib:$ORACLE_HOME/JRE
CLASSPATH=$JAVA_HOME/jre
TNS_ADMIN=$ORACLE_HOME/network/admin # tnsnames.ora가 위치하는 곳 지정
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
EDITOR=vi
# Tomcat 설정
export TOMCAT_HOME=/usr/local/jakarta-tomcat
export CLASSPATH=$CLASSPATH:/usr/local/jakarta-tomcat/lib/servlet.jar
export PATH=$PATH:/usr/java/jdk1.3/bin:/usr/local/apache/bin:/usr/local/jakarta-tomcat/bin
# MySQL JDBC 추가
export CLASSPATH=$CLASSPATH:/usr/local/mm.mysql.jdbc-1.2c/:.
alias l='ls -l'
alias ll='ls -la'
그럼 아무 디렉토리에서 DBTest.java를 만들고 다음과 같이 작성하자
import org.gjt.mm.mysql.*;
import org.gjt.mm.mysql.Connection;
import org.gjt.mm.mysql.Statement;
import org.gjt.mm.mysql.Driver;
import java.sql.*;
public class DBTest
{
final static String strConn = "jdbc:mysql://localhost:3306/test";
final static String strDbId = "kang";
final static String strDbPass = "xxxxxx";
public static void main(String args[])
{
Connection con;
Statement stmt;
java.sql.ResultSet rs;
String sql = "select name, age from test";