UNIX에서 작업하는 경우 가끔 OCI 드라이버가 32bit 용으로 되어 있어서 로드가 안되는 경우가 있었다. 그럴때는 UNIX에 맞는 64비트용 OCI 드라이버가 로드 되도록 환경을 수정하면 된다.

시스템에서 라이브러리가 로드되는지는 아래 코드를 이용해 확인한다.
try
{
  System.loadLibrary("ocijdbc9");
}
catch(Exception e)
{
  out.println("loadLibrary Error");
  out.println(e.getMessage());
  System.exit(-1);
}

--------------------------------------------------------------------------------
OCI 관련 참고 자료 [자바서비스넷 에서 퍼옮]

Oracle OCI Driver와 Thin Driver  

Sun에서는 각 Vender들(Oracle, informix, sybase,etc..)에게 4가지 종류의
JDBC Driver가 있음을 공표 했습니다.
그 중에서도 Type 2와 Type 4형태의 Driver를 Vender들이 많이들 제공하는데,
Type 2 JDBC Driver란, Oracle로 얘기하면 Sql*Net을 필요로 하며, .dll혹은
.so형태의 H/W 종속적인 형태의 Native Module을 통해 DB와 연결됩니다.
Oracle의 경우 JDBC Type 2 형태를 통상 OCI(Oracle Call Interface) Driver라
부릅니다.


반면 Type 4 형태의 JDBC Driver는 순수하게 Java package만으로 바로 DB와
연결이 가능합니다. Oracle에서는 통상 thin Driver가 부릅니다.

Type 2형태가 보다 빠른 성능을 냅니다. 반면, SQL*Net(Oracle의 경우) 과 같은
native module이 항상 있어야 하므로 물리적인 H/W구성에 다소 종속적인 형태가
될 수 밖에 없습니다.

반면 Type 4의 형태일 경우는 Client에서 필요로 하는 것은 유일하게 Java클래스
들만으로 DB와 접속이 가능하니 어떤 H/W, OS에서도 유연하게 DB연결이 가능
합니다. 대신 OCI 형태보다 성능이 떨어진다고 합니다.

그러나 이건 어디까지나 Oracle JDBC Driver에 한해서 그러할 뿐, 다른 DB
Vendor는 특정 Type의 JDBC Driver만 제공하기도 합니다.


Oracle의 경우, OCI Driver와 thin Driver를 사용하는 방법은 다음과 같습니다.

OCI Driver:
     libjdbc*.so 파일이 필요하며, 해당 디렉토리가 Shared Library Path에 등록되어
     있어야 합니다. 즉, 최소한 Oracle Client 제품이 머신에 설치되어 있어야 합니다.
     자세한 사항은 다음의 문서를 참조하세요.
     http://javaservice.net/~java/bbs/read.cgi?m=dbms&b=jdbc&c=r_p&n=956117778

     classes111.zip 이 필요합니다.

   [사용법]
     String driver = "oracle.jdbc.driver.OracleDriver";
     String url = "jdbc:oracle:oci8:@ORA8i_alias";
     String user = "scott";  String password = "tiger";
     Class.forName(dirver);
     Java.sql.Connection conn = DriverManager.getConnection(url, user, password);

    NOTE: $ORACLE_HOME/network/admin/tnsnames.ora 파일에 해당 alias가 등록되어
          있어야 합니다.

Thin Driver:
     classes111.zip 이 필요합니다. thin 방식의 경우는 이 파일만 있으면 되며, Oracle관련
     제품이 Local머신에 설치되어 있을 필요가 없습니다.


   [사용법]
     String driver = "oracle.jdbc.driver.OracleDriver";
     String url = "jdbc:oracle:thin:@210.220.251.96:1521:ORA8i";
     String user = "scott";  String password = "tiger";
     Class.forName(dirver);
     Java.sql.Connection conn = DriverManager.getConnection(url, user, password);
  
   NOTE: thin 방식으로 접속할 경우, 원격지 Oracle DB의" Listener"가 떠 있어야 합니다.
         본게시판의 JDBC FAQ 를 참조하세요

   
NOTE: 프로그램 소스상의 유일한 차이점은 DB URL이 OCI는 Remote DB에 대한 Local Alias를
    사용하는 반면, Thin Driver는 Remote 머신의 IP Address와 Port번호, 그리고
    해당 DB의 SID를 필요로 한다는 것만이 차이가 있을 뿐입니다.

-------------------------------------------------------  
  본 문서는 자유롭게 배포/복사 할 수 있으나 반드시
  이 문서의 저자에 대한 언급을 삭제하시면 안됩니다
================================================
  자바서비스넷 이원영
  E-mail: javaservice@hanmail.net
  PCS:019-310-7324
================================================

각 시스템별 Shared Library PATH 환경변수는 아래와 같습니다.

AIX            LD_LIBRARY_PATH
OS/2           LIBPATH
Windows NT/95  PATH
Solaris        LD_LIBRARY_PATH
Linux          LD_LIBRARY_PATH
HP/UX          SHLIB_PATH


OCI 드라이버는 해당 OS의 shared library를 통해 native module을 사용합니다.
$ORACLE_HOME/lib 디렉토리에 보시면 Oracle 8.0.5의 경우 liboci804jdbc.so
(혹은 *.sl)파일이 있을 겁니다. 이것이 shared library이지요.
Oracle 8.1.5의 경우는 libocijdbc8.so 파일입니다.

결국, '손님'은 이 환경변수가 제대로 잡혀 있지 않아서 발생하는 문제입니다.

LD_LIBRARY_PATH=/usr/lib:/home/oracle/app/oracle/product/815/lib:/usr/java/lib
export LD_LIBRARY_PATH

Linux 에서 Oracle 8.1.5 버전을 사용하는 저의 LD_LIBRARY_PATH를 참고 하세요.

javaservice:/home/java$ uname -a
Linux javaservice.net 2.2.12-20kr #1 Tue Oct 12 16:46:36 KST 1999 i686 unknown
javaservice:/home/java$ env|grep LD_LIB
LD_LIBRARY_PATH=/usr/lib:/home/oracle/app/oracle/product/815/lib:/usr/java/lib
javaservice:/home/java$ env|grep CLASS
CLASSPATH=.:/usr/java/lib/classes.zip:/home/oracle/app/oracle/product/815/\
jdbc/lib/classes111.zip:/home/oracle/app/oracle/product/815/jdbc/lib/\
nls_charset11.zip
javaservice:/home/java$


NOTE: 서블렛 엔진마다 LD_LIBRARY_PATH를 거는 방법이 약간씩 다른긴 합니다만,
      최근엔 대부분, 서블렛엔진을 띄우기 전에 LD_LIBRARY_PATH를 환경변수에
      잡아주거나, Start 시키는 Script 에 첨가해 두는 것이 일반적인 듯 합니다.

Posted by Gu Youn
,

<변경 내역>
1. 2005/09/10 오전 12:03 문서 작성
2. 2006/08/23 오후 5:00 bcb용 dll 설치 추가, delphi 소스 포함된 프로젝트를 위한 환경 설정 추가.
- - - - - - - - - - -
M$의 VC++를 사용하는 개발자들은 DirectX SDK를 M$사이트에서 다운 받아서 그냥 사용을 하면 되지만... 빌더(파워빌더 아님..)나 델파이에서는 바로 사용을 못하고 이것 저것 손을 봐야 한다. 빌더나 델파이로 계속 다이렉트엑스 개발을 한 사람은 이런 환경 설정하는 작업이 별로 어렵지 않겠지만 간혹 사용하는 사람들한테는 그리 간단한 일이 아니다.

델파이는 directX 헤더를 파스칼로 변환한 유닛과 관련된 DLL만으로 환경을 구성하면 되는데 빌더는 directX SDK의 헤더, 파스칼로 변환된 유닛, 유닛에서 생성된 hpp 등을 모두 사용해야 됨으로 환경 설정하다가 문제가 생겨도 뭐가 문제인지 모르는 경우가 많은 것 같다.

DirectShow기능을 손쉽게 사용할 수 있게 해주는 DSPack 컴포넌트는 여러가지 좋은 셈픔을 제공해주며, 프리(free)이다. 이 문서에서는 DSPack 컴포넌트를 설치하고 샘플을 컴파일 하는 과정을 정리하고자 한다.

[여기 부터 설치 과정 시작~~~]

(1). 설치에 필요한 프로그램을 다운 받는다.
1. DirectX 9.0 SDK Update - (February 2005) 을 다운 받는다. 여기에는 DirectShow가 포함이 안되어 있음으로 DirectX 9.0 SDK Update (February 2005) Extras를 다운받아 설치해야 한다.

2. DSPACK234.zip를 다운 받는다.

3. 빌더에서는 VC와 다른 형태의 lib와 dll을 사용함으로 변환된 것을 다운 받거나 직접 변환해야 한다. CBuilder_DX92_libs.zip를 다운 받는게 편하다.

(2). 프로그램 설치
1. DirectX를 설치한다. 다운 받은 dxsdk_feb2005.exe을 실행해서 압축을 푼다. 압축을 푼 디렉토리에 있는 Setup.exe를 실행해 설치한다.

2. DirectShow 사용을 위해서 dxsdk_feb2005_extras.exe 를 실행해서 압축을 풀고 ${DXSDK_Extra}\Extras 디렉토리를 ${DXSDK}\에 복사를 한다.

3. DSPACK234.zip 파일의 압축을 푼다.

4. DSPACK가 설치된 디렉토리는 이 문서에서는 ${DSPACK}로 표시한다.
DirectX가 설치된 디렉토리는 ${DXSDK}로 표시한다.

5. bcb용 DirectX DLL을 System32 디렉토리에 복사한다.

(4). 컴포넌트 설치
1. Library에 ${DSPACK}\src\DSPack와 ${DSPACK}\src\DirectX9를 추가한다.
Tools -> Environment Optoins -> Library 탭의 Library Path에 추가하면 된다.

2. DirectX9_BCB6.bpk 를 컴파일 한다.

3. DSPack_BCB6.bpk를 컴파일 한다.
컴파일 하기 전에 DsUtil.pas의 Unit과 Interface 사이에 {$HPPEMIT '#include "DxDiag.h"'} 추가를 해야 한다. 만약 추가를 하지 않으면 나중에 DsUtil.hpp에 #include "DxDiag.h"를 추가해야 한다.

4. DSPackDesign_BCB6.bpk를 인스톨한다.

5. ${DSPACK}\src\DirectX9와 ${DSPACK}\src\DSPack에 bcb라는 디렉토리를 만들고 DirectX9와 DSPack의 *.hpp, *.inc를 복사한다. <(4).6 관련>
위 처럼 하는 이유는 DSPack을 사용하는 Delphi 소스를 BCB 프로젝트에 포함시켜서 컴파일 하는 경우 Library Path에 DSPack과 DricetX의 dcu를 필요로 한다. 이때, ${DSPACK}\src\DSPack와 ${DSPACK}\src\DirectX9를 추가하면 컴파일 할 때마다 매번 pas를 컴파일하게 되서 컴파일 시간이 오래 걸리고 에러 나는 DSUtil.hpp를 수정을 해서 사용하게 되는데 컴파일 할 때마다 DSUtils.hpp가 수정 전으로 돌아가게 됨으로 따로 복사를 하는 것이다.

6. 모든 열려있는 프로젝트를 닫고 프로젝트 디폴트 옵션을 변경한다.
ㄱ. Project -> Options -> Directories/Conditionals -> Include Path에 다음 처럼 추가를 하며 인클루드 패스 순서는 아래와 같아야 하며 기본 인클루드 경로 보다 위에 있어야 한다.

${DSPACK}\include
${DSPACK}\src\DSPack\BCB
${DSPACK}\src\DirectX9\BCB
${DXSDK}\Include
${DXSDK}\Extras\DirectShow\Include

ㄴ. Library Path에 아래 경로를 기본 라이브러리 패스보다 상위에 있도록 추가한다.

${DSPACK}\lib
${DSPACK}\src\DSPack
${DSPACK}\src\DirectX9

ㄷ. (옵션) runtime package를 rtl, vlc만 놔두고 모두 지워버리고 런타임 패키지를 사용하지 않도록 체크를 해제한다. <(5).4 관련>

(5). 컴포넌트 테스트
1. DSPack 컴포넌트 탭에서 FilterGraph, Filter, VideoWindow 를 선택해서 폼에 놓는다.

2. 각 컴포넌트의 프로퍼티를 연결시켜주고 컴파일을 하면 다음처럼 에러가 난다.
[C++ Error] DSUtil.hpp(498): E2040 Declaration terminated incorrectly
[C++ Error] DSUtil.hpp(499): E2293 ) expected
[C++ Error] DSUtil.hpp(506): E2040 Declaration terminated incorrectly
[C++ Error] DSUtil.hpp(558): E2189 extern variable cannot be initialized
[C++ Error] DSUtil.hpp(558): E2108 Improper use of typedef 'LONG'
[C++ Error] DSUtil.hpp(558): E2188 Expression syntax
[C++ Error] DSUtil.hpp(558): E2293 ) expected
[C++ Error] DSUtil.hpp(560): E2189 extern variable cannot be initialized
[C++ Error] DSUtil.hpp(560): E2238 Multiple declaration for 'ULONGLONG'
[C++ Error] DSUtil.hpp(454): E2344 Earlier declaration of 'ULONGLONG'
[C++ Error] DSUtil.hpp(560): E2356 Type mismatch in redeclaration of 'ULONGLONG'
[C++ Error] DSUtil.hpp(454): E2344 Earlier declaration of 'ULONGLONG'
[C++ Error] DSUtil.hpp(560): E2188 Expression syntax
[C++ Error] DSUtil.hpp(560): E2293 ) expected

3. 에러나는 부분을 주석 처리한다. 아래에 나온 항목이 아닌데 에러나는 경우에도 주석 처리를 한다.
498행 : //static const Shortint DXDIAG_DX9_SDK_VERSION = 0x6f;
499행 : //static const HRESULT DXDIAG_E_INSUFFICIENT_BUFFER = 0x8007007a;
506행 : //static const __int64 NANOSECONDS = 0x3b9aca00;
558행 : //extern PACKAGE __int64 __fastcall Int32x32To64(int a, int b);
560행 : //extern PACKAGE __int64 __fastcall UInt32x32To64(unsigned a, unsigned b);
454행 : //typedef __int64 ULONGLONG;

4. 다시 빌드하고 실행한다.

5. 기타 에러 참고
ㄱ. 항목 (4). 설치에서 런타임 패키지 사용 안함으로 설정을 한 경우에는 함수를 찾을 수 없다고 링크에러가 발생한다. 그럴 경우에는 프로젝트에 ${DSPACK}\lib에 있는 d3d9.lib, quartz.lib, wmvcore.lib 를 추가하면 된다. 런타임 패키지 사용을 해제 하지 않은 경우에는 런타임 패키지 창에 DirectX9_BCB6;DSPack_BCB6를 추가한다.

ㄴ. TCustomOutline 관련한 링크 에러가 발생하는 경우에는 bpr파일을 문서 편집기로 열어서 bcbsmp.lib 항목을 삭제한 후에 다시 빌드 한다.

(6). 기타
처음에 DirectX를 August 2005 버전으로 받았는데 여기에는 DirectShow가 포함이 안되어 있어서 PlatformSDK Window 2003 SP1을 받아서 DirectShow, WIndows Core를 설치해서 사용을 하려고 했는데 문제점가 발생했다.

PlatformSDK에서 Windows Core를 설치하면 WIN32 API관련된 winnt.h, winuser.h 등의 기본 헤더 파일도 새로 설치되는데 DirectShow 사용을 위해 빌더 기본 include 경로보다 상위에 두면 새로 설치된 winnt.h, winuser.h 등의 헤더 파일 때문에 컴파일 에러가 발생한다. (M$에서 빌더도 생각을 하고 배포를 했으면 좋을텐데 그렇지 않으니....) 그렇다고 빌더 기본 경로보다 아래에 두면 갱신되어야 할 strmif.h, ksmedia.h 등이 빌더에 설치되어 있는 옛날 것을 인클루드해서 컴파일 하기 애문에 DirectShow 관련된 부분 컴파일에서 에러가 난다. 이렇게도 할 수 없고 저렇게도 할 수 없어서 DirectX SDK 다른 버전을 찾다가 DirectX Extra(February 2005)를 받아서 보니 DirectShow 관련된 헤더만 제공을 함으로 PlatformSDK에 있는 DirectShow를 설치할 때 갱신되지 않아도 될 헤더 파일까지 새로운 것을 사용해야 되는 문제를 피할 수 있다.

Delphi에는 다른건 신경 쓸 필요 없이 런타임 패키지 2개 컴파일 하고 디자인 패키지는 인스톨 하고 라이브러리 패스에 ${DSPACK}\src\DSPack, ${DSPACK}\src\directx 만 추가해주고 개발하면 된다.

[여기서 설치 과정 끝]

그저께는 두 시간 정도 헤매고 어제와 오늘은 새벽 4시까지 잠 못자고 설치하고 삭제하고 하는 작업을 반복했는데 막상 정리를 해보니 크게 복잡한 것은 없다.

빌더에서 DSPACK(DiretShow,DirectX)를 처음 사용하는 분들은 저처럼 해매지 않기 바랍니다.

Posted by Gu Youn
,
vsftpd 설치 및 설정
참고 사이트 : http://coffeenix.net/board_view.php?bd_code=89

목차
(1).설치
1. gentoo
2. ubuntu

(2) 설정
1. 익명 사용자 로그인 금지
2. 홈 디렉토리의 상위 접근 금지
3. 로컬 사용자 계정 로그인
4. write 권한 부여

(1). 설치
1. gentoo
# emerge vsftpd
# /etc/vsftpd/vsftpd.conf.exampl를 /etc/vsftpd/vsftpd.conf로 복사한다.

2. ubuntu
# sudo apt-get install vsftpd
참고> ubuntu에서는 vsftpd.conf가 /etc에 있다.

(2). 설정
1.익명사용자 로그인 금지
  #anonymous_enable=YES
  
2.홈 디렉토리의 상위 접근 금지
  a. chroot_list 빈 파일을 /etc/vsftpd에 만든다.
 
  b-1. chroot_list에 있는 사용자만 home direcory를 벗어나지 못하도록 설정하기 위해서는 chroot_local_user항목을 추가하고 chroot_list_enable 항목의 주석을 해제한다.
   chroot_local_user=YES
   chroot_list_enable=YES
 
  b-2. chroot_list에 있는 사용자만 home direcory를 벗어나도록 설정하기 위해서는 chroot_list_enable항목의 주석을 해제한다.
   chroot_list_enable=YES

3. 로컬 사용자 계정 로그인 : local_enable 항목의 주석을 해제한다.
  local_enable=YES

4. write 권한 부여 - write_enable항목의 주석을 해제한다.
  write_enable=YES

------------------------------------
2006-12-08 로컬 사용자 계정 로그인 옵션 추가
2008-03-18 ubuntu 설치 추가
Posted by Gu Youn
,
일반적으로 많이 사용하는 Apache+MySql+PHP(APM)의 설치 방법에 대해서 정리한다.

1. Apache 설치
Apache 컴파일 및 설치
Apache 자동 실행
"/etc/init.d/"에 apachectl을 복사한다.

/etc/init.d/apachectl 상단에 아래 내용 추가한다.
    # chkconfig: 2345 60 60
    # description: Apache Web Server Version 2.0
   chkconfig에서 처음 인자는 어떤 run-level에서 실행될지를 의미하며, 그 다음 두개의 인자는 같은 run-level에서 실행/종료시 prority를 의미한다.

chkconfig 명령어를 이용해 등록
    # chkconfig --add apachectl
    # chkconfig --level 2345 apachectl on
  

chkconfig로 apachectl을 add하고 난 후에 ntsysv로 서비스 목록을 보면 apachectl이 추가된 것을 볼 수 있다.

2. PHP 설치
* PHP 컴파일
CPPFLAGS=-I/usr/include/mysql
./configure \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-zlib \
--with-gd \
--with-ttf \
--with-png \
--with-expat-dir=/usr \
--with-gmp \
--with-xml \
--with-mysql=/usr \
--with-language=korean \
--with-charset=euc_kr \
--disable-debug \
--disable-posix \
--disable-rpath \
--enable-safe-mode \
--enable-magic-quotes \
--disable-dmalloc \
--enable-bcmath \
--enable-dio \
--enable-gd-native-ttf \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--enable-versioning \
--enable-pic \
--enable-inline-optimization \
--enable-memory-limit \
--enable-mbstring \
--enable-mbregex \
--enable-mbstr-enc-trans \
--with-config-file-path=/usr/local/lib \
--enable-ftp \
--disable-debug \
--enable-track-vars=yes \
--with-jpeg-dir \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-dl \
--with-imap=/usr/lib \
--with-imap-ssl=/usr/lib \
--with-kerberos

make && make install

superuser.co.kr의 글을 보면 --with-imap=shared로 되어 있는데 저 경우에 imap 함수 사용이 불가능 하여 --with-imap=/usr/lib로 변경

superuser.co.kr에서 가져 옮 #

3. mysql 설치
  # CFLAGS="-static -O2 -march=i686 -funroll-loops"
  # CXXFLAGS="-static -O2 -march=i686 -funroll-loops -felide-constructors -fno-exceptions -fno-ftti"
  # ./configure --prefix=/uar/local/mysql --localstatedir=/usr/local/mysql/data --disable-shared --enable-assembler --with-thread-safe-client --with-mysqld-user="mysql" --with-client-ldflags=-all-static --with-myslqd-ldflags=-all-static --with-readline --without-debug --without-bench --with-charset=euckr

Posted by Gu Youn
,
환경 : Tomcat 4.1.29 / HP-UNIX

Tomcat의 JNDI DataSource 사용을 할 때 직접 드라이버를 로드하는 방법과 DBCP 사용을 하는 방법이 있다.

ㄱ. 직접 드라이버 로드를 하는 방식
  JDBC 드라이버를 $CATALINA_HOME/common/lib에 설치를 해서 사용을 하면 된다.

ㄴ. JNDI DataSource 사용하는 방식
  HP에서 제공하는 패키지로 설치한 Tomcat의 $CATALINA_HOME/common/lib의 commons-collections.jar , commons-pool.jar , commons-dbcp.jar 를 이용을 하면 Oracle JNDI 연결시 v () method를 찾지 못한다는 에러 발생한다. 버전에 맞는 것을 Tomcat 프로젝트 홈페이지에서 받아 설치하고 그것을 사용하도록 하면 해결이 됐던 것으로 기억한다.

첨부파일



Posted by Gu Youn
,
설치 순서 #
1. Live CD 다운로드
2. Boot
3. Configuring Network
4. Partition a Disk
5. Create Filesystems
6. Mount
7. Installing a Stage Tarball
8. Inatal Portage
9. Configuring the Compile Options
10. Chrooting
11. Configuring the Kernel
12. Configuring your System
13. Configuring the Bootloader


Posted by Gu Youn
,
목록 #
1. 그래픽 로그온 => 콘솔 부팅으로 변경
2. XManager 사용을 위한 리눅스 설정
3. can't see Hangul Font
4. ?X86Config 샘플 파일 생성
5. console 해상도(resolution)
6. su: Permission denied
7. LANG 설정
8. 전역 환경변수 설정

자세히 보기 #
1. 그래픽 로그온 => 콘솔 부팅으로 변경
  그래픽 로그온 설정으로 설치된 경우 콘솔로부팅하게 변경하는 방법
  /etc/inittab id:5:defaults 에서 5를 3으로 변경한다.

2. ?XManager 사용을 위한 리눅스 설정
  ㄱ. 폰트 서버 설정
    /etc/X11/fs/config 파일에 아래 항목이 있을 근처)
    no-listen = tcp (변경 후)> #no-listen

  ㄴ.폰트 서버 구동 방법 : Unix(Linux)에서 해야
    # /etc/rc.d/init.d/xfs restart ?Enter

  ㄷ. kde를 X윈도로 사용하는 경우
   /etc/X11/xdm/xdm-config 파일의 다음 라인을 코멘트로 막습니다.(28라인 근처)
   DisplayManager.requestPort: 0 ==> DisplayManager.requestPort: 0
 
   /etc/X11/xdm/Xaccess 파일의 다음 줄에 코멘트 기호(#)를 삭제합니다.(40라인 근처)
   #* #any host can get a login window ==> * #any host can get a login window
 
   /usr/share/config/kdm/kdmrc 파일을 찾아서 다음과 같이 설정합니다.(77라인 근처)
   Xdmcp Enable=true

  위 항목들 수정후 시스템 재부팅을 한다.

3. Can't see Hangul Font
Install Baekmuk Font
/etc/X11?/XF86Config file
Add ?FontPath Item

4. XF86Config 구성
XFree86 -configure 명령어로
XFree86 -configure

5. console 해상도(resolution)
  ㄱ.boot mount
    # mount /dev/disc/disc0/part1 /boot
 
ㄴ.grub.conf 수정
    # vi /boot/grub/grub.conf
    grub.conf의 kernel 항목에 video=vesafb:1024x768-32@60 추가
    kernel /kernel-2.6.9-gentoo-r4 root=/dev/ram0 init=/linuxrc real_root=/dev/hde3 video=vesafb:1024x768-32@60
 
  아래 참고 문서를 보면 video=vesafb:mtrr,ywrap,1024x768-32@85 이렇게 옵션이 여러개로 구성되어 있지만 테스트한 시스템에서는 문제가 있어서 해상도 부분만 사용함.
참고 : http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=10#doc_chap1

6. su: Permission denied
su 명령 실행시 아래와 같은 Permission denied 오류가 나는경우 명령어를 사용하는 계정을 wheel 그룹에 추가해야 한다.

  happy@ghost ~ $ su -
  Password:
  su: Permission denied
  Sorry.
 
wheel 그룹에 사용자 계정 추가
    # gpasswd -a happy wheel
 
7. LANG 설정(RedHat)
"/etc/sysconfig/i18n"의 LANG 항목을 수정하며 LANG에 사용할 수 있는 언어 목록은 "/usr/lib/locale/"을 참고한다.

LANG="LANG="ko_KR.euckr"
 
8. 전역 환경변수 설정(RedHat)
"/etc/profile.d/"에 설정하고 싶은 내용을 같는 쉘 스크립트를 작성해서 저장한다.
JAVA설정 예

bash의 JAVA 설정
   #java.sh
   JAVA_HOME=/usr/java/j2sdk1.4.2_08
   CLASSPATH=$CLASSPATH:.
   PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

   export JAVA_HOME
   export CLASSPATH
   export PATH
 

csh의 JAVA 설정
   #java.csh
   setenv JAVA_HOME /usr/java/j2sdk1.4.2_08


   if ( $?CLASSPATH ) then
           setenv CLASSPATH ${CLASSPATH}:.
   else
           setenv CLASSPATH .
   endif

   if ( $?PATH ) then
           setenv PATH ${PATH}:${HOME}/bin:${JAVA_HOME}/bin
   else
           setenv PATH ${HOME}/bin:${JAVA_HOME}/bin
   endif
Posted by Gu Youn
,
1. Virtual Host
<VirtualHost design.paran.com>
        ServerAdmin happy@happy.co.kr
        ServerName  design.happy.com
        ServerPath  /public_html_design
        DocumentRoot /home/paran/public_html_design
        <Directory /home/paran/public_html_design>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
        <IfModule mod_access.c>
                Order allow,deny
                Allow from all
        </IfModule>
    </Directory>
</VirtualHost>

2. 가상 호스트 설정후 에러나는 경우
virtualhost된 디렉토리접근시 403(Forbidden)에러 나는 경우 유저디렉토리 권한을 확인하고 700인 경우에는 705 정도로 변경
#ls -al /home
#chmod -R 705 /home/happy
가상호스트로 public_html(user디렉토리로 설정)이 아닌 다른 디렉토리를 웹루트로 추가 설정한 경우 <Directory> 설정이 필요함



3. 기본 인코딩셋 설정
/etc/apache/conf/commonapache2.conf를 수정 ISO-8859-1로 되있는 것을 주석처리하고 EUC-KR을 추가
  #AddDefaultCharset ISO-8859-1
  AddDefaultCharSet EUC-KR

4.php, apache 파일 업로드 설정
ㄱ. php.conf에서 업로드할 파일 최대 크기를 바이트 단위로 설정한다.
   LimitRequestBody 524288(업로드 원하는 사이즈로 변경)
  
  # LimitRequestBody가 업로드하려는 파일 보다 작은 경우에는 Requested content-length of 977486 is larger than the configured limit of 524288 ... 이런 에러가 아파치 error-log에 남는다.

ㄴ. php.ini에서 업로드와 관련 있는 설정 항목
   post_max_size = 8M
   file_uploads = On
   upload_max_filesize = 2M

5. VirtualHost 설정시에 실제 경로는 존재하지만 DocumentRoot warning 나는 경우(레드햇 보안설정 된 경우에 발생한다.)
에러 예> Starting httpd: Warning: DocumentRoot [/home/herit/public_html] does not exist

# chcon -R -t httpd_user_content_t public_html/

6. PHP 모듈 로드 및 타입 추가
LoadModule php4_module modules/libphp4.so

AddType application/x-httpd-php .php .phtml .php3 .html .htm
AddType application/x-httpd-php-source .phps
Posted by Gu Youn
,