아림이의 라이프~~~~!!!
리눅스 서버 본문
리눅스에서 PHP, JSP, Servlet설치 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패킷지에서 나온 건지 알 수있다.) chmod 755 j2sdk-1_3_0-linux-rpm.sh ./j2sdk-1_3_0-linux-rpm.sh rpm -ivh j2sdk-1_3_0-linux.rpm myset.sh에 자바를 추가하자 export PATH=$PATH:/usr/java/jdk1.3/bin 오라클 설치(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으로 만들지 말라고 권고하는데 번거롭고해서 그냥 여기로 지정했다.(아무 상관은 없다) groupadd dba groupadd oinstall useradd -d /u01/app/oracle/product/8.1.6 -g oinstall -G dba oracle /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 export ORACLE_OWNER ORACLE_BASE ORACLE_HOME NLS_LANG ORA_NLS33 ORACLE_SID ORACLE_DOC export LD_LIBRARY_PATH CLASSPATH TNS_ADMIN PATH EDITOR export PATH=$PATH:/usr/java/jdk1.3/bin 오라클설치하자 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 아파치설치(DSO로 설치) ./configure \ --prefix=/usr/local/apache \ --enable-module=most \ --enable-shared=max make 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를 해줘야 한다. PHP설치(DSO로 설치) PHP에 오라클, MySQL, GD지원을 하게 컴파일하자 cd ../php-4.0.2/ ./configure \ --with-apxs=/usr/local/apache/bin/apxs \ --with-gd \ --with-mysql \ --with-oci8 make make install cp php.ini-dist /usr/local/lib/php.ini 아파치에 PHP설정을 등록하자 cd /usr/local/apache/conf vi httpd.conf AddType application/x-httpd-php .php <-이부분을 주석해제 아파치 시작 apachectl start APACHE는 동적, PHP는 정적으로 컴파일하기(PART2) [root@ns apache_1.3.12]# ./configure --prefix=/usr/local/apache --enable-module=so [root@ns apache_1.3.12]# cd ../php-4.0.3pl1 [root@ns php-4.0.3pl1]# ./configure \ > --with-mysql \ > --with-oci8 \ > --with-gd \ > --with-apache=../apache_1.3.12 \ > --enable-track-vars ..생략 [root@ns php-4.0.3pl1]# make [root@ns php-4.0.3pl1]# make install [root@ns php-4.0.3pl1]# cd ../apache_1.3.12 [root@ns apache_1.3.12]# ./configure --prefix=/usr/local/apache \ > --activate-module=src/modules/php4/libphp4.a \ > --enable-module=so [root@ns apache_1.3.12]# make [root@ns apache_1.3.12]# make install [root@ns apache_1.3.12]# cd ../php-4.0.3pl1 [root@ns php-4.0.3pl1]# cp php.ini-dist /usr/local/lib/php.ini [root@ns php-4.0.3pl1]# cd ../../apache/conf/ [root@ns conf]# vi httpd.conf AddType application/x-httpd-php .php부분을 주석해제 PHP테스트 /usr/local/apache/htdocs/test.php를 생성하여 다음과 같이 적는다. phpinfo(); 웹브라우저를 열어 제대로 실행되는지 확인 http://localhost/test.php 오라클 연동 테스트 오라클에서 system사용자로 로그인하여 kang이라는 사용자를 생성한다 sqlplus system/manager create user kang identified by merong default tablespace users temporary tablespace temp profile default / grant connect, resource to kang; / kang이라는 사용자로 다음을 실행 sqlplus kang/merong creat table test ( name varchar2(10); age number(2) ) / insert into test values ('강명규', 27) / /usr/local/apache/htdocs/test_oracle.php를 생성하여 다음과 같이 적는다. <html> < body> 오라클 테스트 테이블의 데이터를 불러옵니다<br> <? $sql = "select name, age from test"; $conn = ocilogon("kang", "merong"); $stmt = ociparse($conn, $sql); ociexecute($stmt); ocifetchinto( $stmt, &$col, OCI_ASSOC+OCI_RETURN_NULLS); echo "이름: ".$col[NAME]."<br>"; echo "나이: ".$col[AGE]."<br>"; ocifreestatement($stmt); ocilogoff($conn); ?> < /body> < /html> http://localhost/test_oracle.php를 실행 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 ); $query = "select name, age from test"; $result = mysql_query( $query, $connect ); $row = mysql_fetch_array( $result ); $name = $row[name]; $age = $row[age]; echo "이름: $name, 나이: $age"; mysql_close(); ?> < /body> < /html> 여러개의 row가 존재시 다음과 같이 할 수 있다. <html> < body> < ? $connect = mysql_connect( "localhost", "kang", "xxxxxx" ) or die( "Can't access DB" ); mysql_select_db( "test", $connect ); $query = "select name, age from test"; $result = mysql_query( $query, $connect ); $total = mysql_num_rows($result); // 검색된 모든 레코드수 for( $i=0; $i<$total; $i++) { mysql_data_seek( $result, $i ); $row = mysql_fetch_array( $result ); echo "[$i] 이름: $row[name], 나이: $row[age]<br>"; } mysql_close(); ?> < /body> < /html> GD는 생략 Tomcat설치 일단 아파치와 연동하려면 mod_jserv.so가 필요한데 이는 미리 컴파일된 것이 jakarta.apache.org에 존재하지만 만약 tomcat의 소스를 설치했다면 다음과 같이 하여 만들수도 있다. 만약 jakarta-tomcat을 소스로 설치한다면 jakarta-ant도 필요하다 cd /usr/local/jakarta-tomcat/src/native/apache/jserv apxs -c -o mod_jserv.so *.c apxs는 아파치의 bin디렉토리에 존재한다. mod_jserv.so를 /usr/local/apache/libexec에 복사한다. mv mod_jserv.so /usr/local/apache/libexec/ 이제 설정을 잡자 /usr/local/apache/conf/httpd.conf의 마지막 라인에 다음을 추가 Include /usr/local/jakarta-tomcat/conf/tomcat-apache.conf TOMCAT-HOME, JAVA_HOME 환경변수설정 # Tomcat 설정 export TOMCAT_HOME=/usr/local/jakarta-tomcat # Java 설정 export JAVA_HOME=/usr/java/jdk1.3 설정끝. tomcat테스트 startup.sh (시작) shutdown.sh(종료) http://localhost/examples/jsp/index.html http://localhost/examples/servlets/index.html 만일 8080포트를 사용하지 않겠다면 server.xml에서 다음처럼 주석처리한다. < !-- <Connector className="org.apache.tomcat.service.SimpleTcpConnector"> <Parameter name="handler" value="org.apache.tomcat.service.http.HttpConnectionHandler"/> <Parameter name="port" value="8080"/> </Connector> --> jsp테스트 자바와 MySQL연동테스트 www.mysql.com의 download메뉴에 가면 JDBC라는 링크가 걸린데로 가서 JDBC드라이버를 다운받는다. |