리눅스서버 장애처리와 삭제파일 복구


- 다운된 리눅스서버 응급복구

    * 복구보다는 백업을 우선하라.

 

    * 파일시스템이 깨졌을 때 부팅안되는 상황 조치
         # fdisk -l    -> 깨진 파일시스템 확인
         # e2fsck -j ext3 /dev/sda3 -> 파일시스템 점검

 

    * 리눅스CD linux rescue 모드로 보구하기
         파일시스템이 깨졌을 때 : e2fsck로 파일시스템 복구
         비밀번호 및 로그인장애 : /etc/passwd 파일 점검
         grub정보로 부팅장애    : /boot/grub/grub.conf 파일 점검
         부팅시 마운트정보 장애 : /etc/fstab 점검

 

    * 리눅스CD linux rescue nomount 로 복구하기
         현재 상태에서는 장치파일명이 생성되어있지 않으며 마운트도 되어있지 않기 때문에 현재 시스템의 어떠한 수정작업도 할

         수 없는 상황이다.

 

         먼저 필요할 것 같은 장치명들을 임의대로 생성한다.
         # mknod /dev/sda -> /dev/sda  장치명 생성
         # mknod /dev/sda1 -> /dev/sda1 장치명 생성
         # mknod /dev/sda2 -> /dev/sda2 장치명 생성

         생성한 장치와 마운트할 마운트포인트(디렉토리)를 생성한다.
         # mkdir /temp
         # mkdir /temp1
         # mkdir /temp2

         위에서 생성한 각 장치명과 각 디렉토리들을 마운트한다.
          # mount /dev/sda1 /temp1
          # mount /dev/sda2 /temp2

 

    * 리눅스 시스템업그레이드 방법으로 복구하기

    * 시스템 서버 다운시 매직키를 이용한 응급조치
        - ALT + SysRq + S : Alt키와 SysRq키와 S키를 동시에 누른다. sync 작업
        - ALT + SysRq + E : Alt키와 SysRq키와 E키를 동시에 누른다. tem SIG 작업
        - ALT + SysRq + U : Alt키와 SysRq키와 U키를 동시에 누른다. umount 작업
        - ALT + SysRq + B : Alt키와 SysRq키와 B키를 동시에 누른다. reboot 작업

 

- 삭제된 파일 복구하기

 

  * 리눅스 휴지통(safedelete)을 이용한 삭제파일 복구하기
     safedelete라는 명령어는 파일을 삭제하는 명령어이다.
     단 rm과는 달리 safedelete라는 명령어로 파일을 삭제하면 특정한 디렉토리에 삭제된 파일을 보관하게 된다.
     그리고 삭제된 사용자의 홈디렉토리에 삭제 파일리스트를 저장하고 있는 로그파일에 그 파일정보들을 보관한다.
     그리고 safedelete명령어로 삭제된 파일은 undelete라는 명령어로 복구가 가능하다.
     따라서, 이 툴로서 삭제된 파일을 복구하려면 파일삭제시에 사용하는 명령어를 rm 대신에 safedelete 명령어를 사용해야한다.
     이 툴의 이름은 safedelete이며 삭제와 복구시에 사용되는 명령어는 다음과 같다.

    safedelete : rm 대신에 사용하게 될 파일보구가 가능한 삭제명령어
    undelete   : safedelete로 삭제한 파일을 복구하는 명령어
    safecnvt   : safedelete 로그파일(.safedelete.log)을 컨버전하는 명령어
    safedelchk : 지정한 일자 이후의 safedelete로 삭제한 파일을 완전 삭제함

- safedelete 설치
    # wget ftp://ftp.nuri.net/pub/RedHat/redhat/redhat-7.1-en/powertools/i386/RedHat/RPMS/saedelete-1.3-0.i386.rpm
    # rpm -Uvh saedelete-1.3-0.i386.rpm

 

- rm 명령어를 safedelete로 대체하기
   # grep safedelete ~/.bashrc
   alias rm='safedelete'

 

* tct의 unrm으로 삭제파일 복구하기
    - 설치
    http://www.fish.com/tct 에서 다운로드한다.
    # tar xvfpz tct-.09.tar.gz
    # cd tct-1.09
    # make
    # cd bin
    # cp rnrm /usr/local/bin
    # cp lazarus /usr/local/bin

 

- 삭제파일 복구
    # /usr/local/bin/unrm /dev/sda1 > /tmp_dir/dump_temp
    # /usr/local/bin/lazarus -h /tmp_dir/dump_temp

 

* e2fsck 파일시스템 점검복구유틸리티

   - e2fsck 종료코드
      0 - 에러없이 정상적인 종료를 의미함
      1 - 파일시스템을 복구하였음을 의미함
      2 - 파일시스템이 복구되어 시스템이 재부팅되어야함을 의미함.
      4 - 작업대상 파일시스템에 문제가 있으나 복구하지 않고 그대로 두었음을 의미함.
      8 - 실행에러를 의미함
      16 - 사용법 또는 문법에러를 의미함
      32 - e2fsck작업이 사용자에 의해서 취소되었음을 의미함.
      128 - 공유 라이브러리에러를 의미함

   - e2fsck작업에서 기본적으로 점검하는 항목
      inode 점검
      blocks 점검
      sizes 점검
      디렉토리구조 점검
      디렉토리 연결성점검
      파일링크 정보
      전체파일갯수 점검
      전체블록수중 사용중인 블록 정검
 

  - 사용형식
      e2fsck [-pacnyrdfvtFV] [-b 수퍼블록] [-B 블록크기] [-l|-L 배드블록목록화일] 장치명
      마운트되어 있는 상태에서 e2fsck실행을 자제한다.

  - e2fsck 명령어로 특정 파일시스템의 점검 및 복구하기
     # e2fsck /dev/hda1

  - e2fsck로 특정 파일시스템 강제 점검 및 복구하기
     # e2fsck -f /dev/hda1

  - ext3(저널링)파일시스템 점검 및 복구하기
    # e2fsck -j ext3 /dev/hda1
 

  - e2fsck로 특정 파일시스템 강제 점검 및 상세 작업내역보기
    # e2fsck -fv /dev/hda1
 

  - 파일시스템의 수퍼블록을 이용한 파일시스템 복구

       -b superblock
       Instead  of  using  the  normal  superblock,  use an alternative
       superblock specified by superblock.   This  option  is  normally
       used  when the primary superblock has been corrupted.  The loca-
       tion of the backup superblock is dependent on  the  filesystem's
       blocksize.    For  filesystems  with  1k  blocksizes,  a  backup
       superblock can be found at block 8193; for filesystems  with  2k
       blocksizes,  at  block  16384;  and  for 4k blocksizes, at block
       32768.

       Additional backup superblocks can be  determined  by  using  the
       mke2fs  program  using  the  -n  option  to  print out where the
       superblocks were created.   The -b option to mke2fs, which spec-
       ifies blocksize of the filesystem must be specified in order for
       the superblock locations that are printed out to be accurate.

       If an alternative superblock is specified and the filesystem  is
       not  opened  read-only,  e2fsck  will make sure that the primary
       superblock is  updated  appropriately  upon  completion  of  the
       filesystem check.

     # e2fsck -b 8193 /dev/hda1
     # e2fsck -b 16385 /dev/sda1
 

- e2fsck로 파일시스템 점검시 버퍼캐쉬의 내용을 디스크에 저장하기

    -F옵션을 사용하면 e2fsck를 수행하기 이전에 sync작업을 수행한다.
    # e2fsck -F /dev/sda1
 

  - e2fsck로 특정 파일시스템 점검시 오류 자동수정하기
    # e2fsck -p /dev/sda1
 

  - e2fsck로 파일시스템 점검시 모든 질문항목에 yes라고 자동입력하기
    # e2fsck -y /dev/sda1
 

  - e2fsck로 파일시스템 점검시 모든 질문항목에 no라고 자동입력하기
    # e2fsck -n /dev/sda1


신고



댓글을 달아 주세요

apachectl 은 httpd 데몬을 띄우는 일종의 alias로 작동한다.

apachectl 에서 옵션(-k)가 없을 경우 디폴트 옵션으로 적용한다.

그래서 apachectl start 를 실행하면 내부적으로는 httpd -k start 로 동작한다.

그런데 아래와 같은 오류가 발생한다.

Permission denied: make_sock: could not bind to address [::]:80
Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
apache 데몬을 root 권한이 아닌 사용자 계정으로 로딩하기 위해서 소유권을 바꿨더니 발생한다.

기본적으로 예약된 포트는 root 권한 이외의 계정으로는 오픈할 수 없기 때문이다.

이럴 때는,

chown root.root httpd
chmod +s httpd


를 해주면, httpd의 권한이 -rwsr-sr-x 로 변경된다.

그리고 freeism(사용자 계정)으로 소유권이 지정된 ( 즉, chown freeism.freeism apachectl )

apachectl 을 통해서 httpd 데몬을 로딩하면,

사용자 계정으로 마치 root 처럼 데몬을 띄워준다.
신고



댓글을 달아 주세요

rpm 32bit 64bit 확인

OS/Linux 2009.12.09 17:43 |
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep rpm명
신고



댓글을 달아 주세요








Red Hat Enterprise Linux

Server Version comparison chart

  Version 3 Version 4 Version 5
  AS ES AS ES Advanced Platform base server
Server Architecture support
x86, AMD64, Intel64, Itanium2 Yes Yes Yes Yes Yes Yes
IBM POWER Yes No Yes No Yes Yes
*Note: For IBM System z and S/390 information please refer to the mainframe page
Server Support limits as defined by Red Hat Enterprise Linux Product Subscription
Maximum physical CPUs/sockets [1] Unlimited 2 Unlimited 2 Unlimited 2
Maximum memory Unlimited 8GB Unlimited 16GB Unlimited Unlimited
Maximum virtualized guests/instances N/A N/A N/A N/A Unlimited 4
Storage virtualization (with Red Hat GFS and Cluster Suite) N/A N/A N/A N/A Yes No
Included Red Hat Network modules Update Module Update Module Update Module Update Module Update Module Update Module

Desktop Version comparison chart


  Version 3 Version 4 Version 5
  WS Desktop WS Desktop Desktop Desktop
with Workstation option
Desktop
with Multi OS option
Desktop Architecture support
X86, AMD64, Intel64 Yes Yes Yes Yes Yes Yes Yes
Itanium2 Yes No Yes No No No No
Desktop Support limits as defined by Red Hat Enterprise Linux Product Subscription
Maximum physical CPUs/sockets [1] 2 1 2 1 1 2 1
Maximum memory Unlimited 4GB Unlimited 4GB 4GB Unlimited 4GB
Maximum virtualized guests/instances N/A N/A N/A N/A N/A N/A 4
Storage virtualization (with Red Hat GFS and Cluster Suite) N/A N/A N/A N/A No No No
Included Red Hat Network modules Update Module Update Module Update Module Update Module Update, Management, & Provisioning modules

Technology capabilities and limits (certified[/theoretical]) [3]


  Version 3 Version 4 Version 5
Maximum logical CPUs [4]
x86 16 32 32
Itanium2 8 256/512 256/1024
AMD64/Intel64 8 64/64 64/255
Power 8 64/128 128/128
System z 32 (z900) 64 (z10 EC) 64 (z10 EC)
Maximum memory
X86 64GB [5] 64GB [5] 16GB [6]
Itanium2 128GB 2TB 2TB
AMD64/Intel64 128GB 256GB/1TB 256GB/1TB
Power 64GB 128GB/1TB 512GB/1TB
System z 256GB (z900) 1.5TB (z10 EC) 1.5TB (z10 EC)
Maximum filesize (Ext3) 2TB 2TB 2TB
Maximum filesystem size (Ext3) 2TB 8TB 8TB/16TB (16TB in 5.1)
Maximum filesize (GFS) 2TB 16TB/8EB 16TB/8EB [7]
Maximum filesystem size (GFS) 2TB 16TB/8EB 16TB/8EB [7]
Maximum x86 per-process virtual address space Approx 4GB Approx 4GB Approx 3GB [6]
Maximum number of virtual CPUS in Guest (x86) -- -- 32 [8]
Maximum memory in paravirtualized guest (x86) -- -- 16GB
Maximum memory in fully virtualized guest (x86) -- -- 16GB
Maximum number of virtual CPUS in Guest (x86_64) -- -- 32 [8]
Maximum memory in paravirtualized guest (x86_64) -- -- 80GB/unlimited
Maximum memory in fully virtualized guest (x86_64) -- -- 80GB/unlimited
Required minimums
X86 256MB 256MB 512MB
AMD64/Intel64 256MB 256MB 512MB
Itanium2 512MB 512MB 512MB
Power 512MB 512MB 1GB minimum/
2GB recommended
Minimum diskspace 800MB 800MB 1GB
Kernel and OS features
Kernel foundation Linux 2.4.21 Linux 2.6.9 Linux 2.6.18
Compiler/toolchain GCC 3.2 GCC 3.4 GCC 4.1
Languages supported 10 15 19
NIAP/CC certified Yes - 3+ Yes - 4+ Yes - 4+
Compatibility libraries V2.1 V2.1 and V3 V3 and V4
Common Operating Environment (COE) compliant Yes Yes N/A
LSB compliant Yes - 1.3 Yes -3 Yes -3.1
GB18030 No Yes Yes
Client environment
Desktop GUI Gnome 2.2 Gnome 2.8 Gnome 2.16
Graphics XFree86 X.org X.org 7.1.1
OpenOffice V1.1 V1.1.2 V2.0.4
Ximian Evolution V1.4 V2.0 V2.8.0
Default browser Mozilla Firefox Firefox 1.5
신고



댓글을 달아 주세요

apache http.conf 설명

OS/Linux 2009.07.03 18:20 |

httpd.conf 파일은 크게 세부분으로 나누어져 있다.

    Section 1: Global Environment  : 아파치 전체적인 영향이 미치는 설정
    Section 2: 'Main' server configuration : 주 서버에 대한 설정
    Section 3: Virtual Hosts : 가상 호스트에 대한 설정

  자, 그럼 이제부터 이 아파치웹서버의 모든 환경을 설정하는 아파치환경파일 httpd.conf파일의 설정방법에 대해서 상세히 알아보도록 하자.


 ### Section 1: Global Environment

  전제환경설정 파트로 Section 1에서 설정하는 것들은 아파치 웹서버에
전반적인 영향을 미친다.

ServerType standalone

  서버의 구동방법으로는 standalone과 inetd방식이 있는데,  standalone
방식은 하나의 웹데몬(아파치서버)이 클라이언트의 접속을 모두 처리하는
방식으로 응답속도가 빠른 방법으로 주로 이방식을 사용한다. inetd 방식은
inetd라는 시스템의 /etc디렉토리 끝에 존재하는 inetd라는 슈퍼데몬이
클라이언트의 접속요구가 있을 때마다 웹서버를 구동하는 방식이다.
일반적으로 응답속도가 빠르고 효율적인 standalone으로 설정하여 사용한다.


ServerRoot "/usr/local/apache"

  아파치서버의 홈디렉토리를 지정하며 절대경로로 지정한다. 이후로 나오는
대부분의 패스들은 이 경로에 대한 상대경로로 지정이 된다. 예를 들어
환경설정파일, 에러로그파일등의 상대경로의 기준이 되는 위치이다.


LockFile logs/accept.lock

  아파치 컴파일시 USE_FCNTL_SERIALIZED_ACCEPT나
USE_FLOCK_SERIALIZED_ACCEPT으로 컴파일 했을 때 사용되는
LockFile의 경로지정시에 사용된다. 가급적 기본값으로 사용한다.


PidFile logs/httpd.pid

  PidFile 설정은 ServerType을 Standalone으로 설정했을때만 유효한
것으로 아파치 서버의 프로세스가 생성되어 있을 때 그 프로세서ID(PID)를
기록하는 파일을 지정한다.  당연히 아파치서버가 재시작되거나 과부하로
인해 PID가 바뀌게 될 경우에는 이 파일의 PID값도 바뀌게 된다.  즉
다시말해서 여기서 지정된 파일(httpd.pid)에 실행되고 있는 아파치서버의
프로세스번호(PID)값이 기록된다고 하면 정답이다. ServerRoot를 기준으로한
상대경로로 지정된다.  절대경로로 지정하려면 "/"로 시작하는 절대경로를
적어주면 된다.



ResourceConfig conf/srm.conf
AccessConfig conf/access.conf

  아파치 서버의 환경설정파일은 3개이au httpd.conf, srm.conf, access.conf
가 그것이다. 그러나 하나의 설정파일로 하는 것이 효율적이기 때문에
지금은 httpd.conf파일안에 3개의 파트(Section)로 나누어서 하나의
파일안에서 설정을 하고 있다. srm.conf와 access.conf파일의 내용은 현재
비어있는 상태이지만, 필요하다면 이 파일 내에도 설정을 할 수 있다.
아파치 서버가 실행이 될 때는 httpd.conf, srm.conf, access.conf 순으로
언제나 이 3개의 파일을 모두 읽고 난뒤에 실행이 되기 때문이다. 만약 이
두 개의 파일을 서버가 무시하도록 하려면 다음과 같이 하거나 "#"으로 붙여
두면 주석처리되어 무시된다.

ResourceConfig /dev/null
AccessConfig /dev/null


Timeout 300

  클라이언트의 요청에 의해 서버와 연결이 되었을 때 클라이언트와
서버간에 아무런 메시지가 발생하지 않았을 때 오류로 처리될 시간을
초단위로 설정한다. 초기값은 1200이며 보통은 300초로 지정을 한다.
네트웍의 속도가 나쁠수록 수치값은 높게 설정하는 것이 좋다.

KeepAlive On

  접속한 채로 특별한 요청없이 지속적인 연결을 허용할 것인지를 설정한다.
허용하지 않으려면 off

MaxKeepAliveRequests 100

  클라이언트가 접속된 시간동안 아파치서버에 요청할 수 있는 최대의
개수를 지정한다. 0을 지정하면 제한없음을 의미하며, 서버의 성능향상을
위하여 가능한 높은 값이 좋다.
 
KeepAliveTimeout 15

  아파치 서버는 같은 접속상태의 클라이언트에서 여기서 지정한 초만큼의
요청이 없었을 때 접속을 끊게 된다.

MinSpareServers 5
MaxSpareServers 10

  아파치 웹서버는 성능향상과 빠른 응답속도를 위해 유휴서버(현재
서비스대기 중인 프로세스)를 만들게 되는데 이 유휴서버의 개수는 시스템의
상황에 따라 달라지게 된다. 유휴서버가 MinSpareServers의 개수(5) 보다
적게되면 추가로 생성을 하게 되며 MaxSpareServers의 개수(10)보다 많게
되면 죽이게 된다. 즉, 유휴서버의 개수를 적절히 조절하기 위한 것이라
생각하면 된다.


StartServers 5  

  아파치 웹데몬이 구동될 때 자식프로세스를 몇 개로 할 것인가를
지정한다. 시작할 때 동시에 띄우게 될 웹데몬의 개수이다. 그러나 웹데몬이
구동되고 난 뒤엔 시스템의 상황(부하율등)에 따라 대부분 합리적인
개수만큼 동적으로 생성되었다가 죽기도 하므로 큰 의미를 가지는 것은
아니다.

MaxClients 150

  아파치웹서버에 접근할 수 있는 클라이언트의 최대갯수는 이 상한값으로
제한한다. 여기서 지정한 개수이상의 클라이언트의 요청이 생긴다면
아파치는 응답하지 않고 이 요청을 무시한다.  이를 제한하는 이유는
시스템의 자원을 아파치 웹서버가 무한정 차지하는 것을 방지하기 위한
것이다.

MaxRequestsPerChild 30

  아파치 웹서버의 자식프로세스들이 클라이언트의 요청 개수를 지정한다.
만약 자식프로세스가 이 값만큼의 클라이언트요청을 받았다면 이
자식프로세스는 자동으로 죽게된다. 이 값이 0으로 설정이 된다면
자식프로세스가 자동으로 죽는일은 없을 것이다. 그러나 0아닌 다른 값으로
설정함으로서 프로세스의 수를 적절히 조절하여 시스템의 부하조절과
자원낭비를 어느정도 방지 할 수 있다.

Listen 3000
Listen 12.34.56.78:80

  시스템의 기본값이외에 다른 IP Address와 포트에 대해서도 연결할 수
있도록 해 준다. 환경설정파일(httpd.conf) 맨뒤에 나오는 가상호스트(Virtual
Host)부분에서 설정되는 가상호스트를 설정하기 위해 필요하다.


BindAddress *

  서버가 응답할 수 있는 IP Address를 설정하는 것이다. 하나의 시스템에
있는 아파치웹서버 하나로 여러 웹서버처럼 관리하는 웹호스팅서비스등에서
많이 이용하는 것으로 여러 IP Address를 인식할 수 있게 한다. "*"으로
설정이 되었다면 모든  IP Address에 대해 응답할 수 있으며, IP Address를
지정한다면 지정한 IP Address에 대해서만 응답할 수 있게 된다.  여러개의
IP Address를 ISP로부터 할당받아서 웹호스팅서비스를 하고자 한다면
이부분에서 지정해 주면된다. 이 설정파일의 맨 뒷부분에 나오는
~부분의 IP bind 가상호스트부분에서 아파치
웹서버가 응답할 수 있도록 하려면 여기서 IP Address를 지정해 줘야 한다.

ExtendedStatus On

  server-status로 아파치웹서버의 상태를 상태를 모니터링 할 때
"자세한상태정보"기능을 제공할 것인지(On) 아닌지(Off)를 설정하는 것이다.

### Section 2: 'Main' server configuration

  Section 2에서 설정하는 항목들은 아파치의 주된서버가 사용할 값들을
지정한다. 에 정의된 가상호스트들에서 지정하지 않는 것은
여기서 지정된 값이 기본값으로 적용된다. 또한 여기서 지정하는 값을 각
내에도 지정할 수 있으며 이경우엔 각내에서
지정한 값이 우선적용된다.

Port 80

  아파치웹서버의 기본포트를 지정한다. 특별하게 사용하는 것이 아니라면
80번으로 해둬야 한다. 사용가능한 포트는 0 ~ 65535이며 1024이하의
포트번호는 시스템에서 특별하게 예약되어 있으므로 80번 이외의 다른
포트를 사용하려면 1024이상의 포트번호를 지정해서 사용해야 할 것이다.
특별한 지정이 없다면 에 정의된 각각의 가상호스트들의
기본포트가 된다. 만약 내에서 Port가 지정이 된다면 그
포트번호가 우선한다.

(특별히 PORT를 따로 지정해 줄 필요가 있을 때는 따로 지정해 주며,
이때는 웹서버로 접근할 때 반드시 따로지정한 PORT번호로 접근해야 한다.
예를들어 Port 1234로 지정했다면, 접근시 : http://www.domain.co.kr:1234
로 접속해야한다. 단, 80번은 default이므로 Port번호를 입력하지 않아도
도메인만으로 그냥 접근할 수 있다. 예: http://www.domain.co.kr )

User nobody
Group nobody

  아파치 웹데몬이 요청을 받았을 때 여기서 지정한 user와 group으로
응답을 하게된다. 이 설정은 ServerType이 Standalone방식이며, 아파치의
실행이 root권한으로 실행이 되었을 때 유효한 것이다. 많은
웹서버관리자들이 nobody로 설정을 해 두고 있으며, 만약 시스템에 nobody
user가 없다면 새로생성(useradd)을 해야 할 것이다. 단, root로 설정하는
것은 절대로 있어서는 안되며 nobody이외의 다른 시스템사용자 id로 지정을
한다면 정말 신중히 모든면(시스템 보안 및 자원사용등)에서 깊게 고려를
해봐야 한다.

ServerAdmin webmaster@www.domain.co.kr

  여기서 지정하는 email address는 웹문서 로딩에러등의 문제에서
클라이언트측으로 보내질 메일주소값이다. 대부분
웹서버관리자의 email address로 설정을 한다.

ServerName new.host.name

  클라이언트에게 보여주는 호스트이름을 지정한다. www를 쓰지않는
호스트에서 www를 쓰는 것처럼 보이게 할 수 있다. 예를 들어
bbs.manualand.co.kr을 www.manualand.co.kr로 지정해서 쓸 수 있다.
이곳에 IP Address를 적게 되면 클라이언트에는 Ip Address를 보여준다.

DocumentRoot "/usr/local/apache/htdocs"

  아파치 웹서버의 웹문서가 있는 경로를 지정한다. 예를 들어
"http://www.manualand.co.kr/index.html"의 초기 문서라면 이 초기문서의
절대 경로는 여기서 지정된 "/usr/local/apache/htdocs/index.html"이 된다.
경로의 맨 마지막에 "/"를 추가해서는 안된다. Alias를 사용하여 다른 위치를
지정할 수도 있다.


    Options FollowSymLinks
    AllowOverride None
     
               

에서 지정되는 값에 대한 옵션은 다음과 같은 의미를 가지고
있다.
        None : 일단 모든허용을 하지 않는다.
        All : 모든허용을 한다.
        Indexes :
        Includes :
        FollowSymlinks :
        ExeCGI :
        MultiViews :


UserDir public_html

  하나의 아파치 웹서버에서 여러 사용자의 홈페이지를 별도로 만들어
관리할 때 필요한 개별 가입자의 홈페이지 디렉토리이름이다. 예를 들어
sspark이란 계정가입자의홈페이지는 "http://manualand.co.kr/~sspark"라는
홈페이지를 가지고 있을 때 sspark의 계정에서 "public_html"이란
디렉토리가 홈디렉토리가 되어 이 디렉토리에 있는 초기문서 index.html을
불러서 보여주게 된다.


    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch
IncludesNoExec
   
        Order allow,deny
        Allow from all
   

    MOVE LOCK UNLOCK>
        Order deny,allow
        Deny from all
   

계정사용자의 홈페이지(public_html)의 접근에 대한 옵션을 지정한 것이다.


DirectoryIndex index.html

  디렉토리만을 지정했을 경우에 그 디렉토리에서 찾게될 문서의 순서를
지정해 준다. 즉, 디렉토리 이름만을 지정하더라도 여기서 지정한
index.html을 찾아서 웹브라우즈에 보여준다. 여러개의 파일을 지정할 수
있으며, 이런 경우에는 순서대로 찾아서 보여준다. 예를 들어
"DirectoryIndex index.html index.htm"로 지정했다면 먼저 "index.html"을
찾아서 있다면 이 파일을 로딩하고, "index.html"이 없다면 "index.htm"을
찾아서 로딩해 준다.

AccessFileName .htaccess

  디렉토리별로 접근제어할 정보(ID, Password)를 담고 있는 파일을
지정한다. 디렉토리별로 인증을 거쳐서 접근할 수 있는 설정을 하기위한
것이다. 예를 든다면 어떤 홈페이지의 전부나 혹은 일부에로 접근하려고 할
때 ID, Password를 묻는 창이 뜨면서 맞게 입력한 경우에만 접근허용하는
것이다.  보안상의 이유로 이 파일의 이름을 다른 이름으로 바꾸로 싶다면
".htaccess"대신에 다름이름을 적어주면 된다.


    Order allow,deny
    Deny from all

  바로위에서 설정한 파일(".htaccess")의 내용을 볼 수 없게 할 때 사용하는
옵션이다. 보안상의 이유로 이 옵션은 설정해 두는 것이 좋다. 만약 이
옵션을 주석처리해 둔다면 ".htaccess"파일에 대한 보안은 누구도 장담할 수
없을 것이다.


UseCanonicalName On


TypesConfig conf/mime.types

웹서버의 mime type을 지정한 파일을 지정한다. mime.types파일은 서버에
의해 리턴될 수 있는 파일명과 mime형식을 기술해 놓은 파일이다.

DefaultType text/plain

mime.types 파일에 정의 되어있지 않은 파일형식에 대한 요청을 받았을 때
알 수 없는 문서타입에 대하여 사용할 기본적인 mime 타입을 정해둔다.


HostnameLookups Off

  웹서버의 로그(access_log)를 지정하는 Format에서 "DNS Lookup"으로
지정하였을 때, domain으로 남길 것인가, IP Address로 남길 것인가를
지정한다. Default로 Off는 IP Address로 남기는 것이며, Domain으로 변경할
필요가 없으므로 on으로 설정한 것보다는 속도가 조금빠르다.on으로 하게
되면 IP address를 IP Domain으로 변환해야 하므로 속도가 조금 느릴 수
있다.

ErrorLog logs/error_log

  아파치 웹서버의 에러로그 기록파일을 지정한다.  참고할 사항은 맨
마지막에 설정하는 부분에서 각서버에 대한 에러파일을
지정해 두지 않으면 그에 대한 에러로그도 여기에 기록되며, 지정해 두게
되면 그에 해당하는 로그는 이 파일에 기록되지 않는다.

LogLevel warn

  바로위에서 설정한 에러로그 파일에 얼마나 자세하게 적을 것인지를
결정한다. 다음에 해당하는 순서대로 중요도가 정해진다. " debug → info →
notice → warn → error → crit → alert → emerg "

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-Agent}i\"" combind
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

  바로 아래에서 사용할 CustomLog에서 사용할 몇가지 로그형식의 별명을
정한 곳이다.
웹서버의 관리자나 서버관리자는 이 부분을 특히 유심히 봐둬야 한다.
웹서버의 로그를 어떤 식으로 남길 것인가를 결정하는 Format을 지정하는
곳이다. 원하는 정보를 지정해서 볼 수 있으므로, 관리자에게 필요한
Format으로 설정해야 하며, 또한 접속통계를 내기에 적당한 Format으로
설정해 둬야 한다.

CustomLog logs/access_log common

  위에서 정한 로그형식(여기선 common)대로 로그를 남기게 된다.
맨마지막에서 지정하는 부분에서도 아파치 1.3.9버전 부터는
CustomLog를 가상호스트별로 지정할수 있도록 CustomLog를 제공한다.
에서 CustomLog를 지정하지 않으면 여기서 지정한 형식대로
로그를 남기게 되며 부분에서 CustomLog를 지정했을
경우에는 여기서 지정한 로그형식은 무시된다.

#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent
#CustomLog logs/access_log combined

  위에서 지정한 4가지의 로그형식(combind, common, referer, agent)중에서
원하는 부분의 #(주석행)을 제거하면 지정된다.

ServerSignature On

  서버가 생성하는 문서(error documents, FTP directory listings,
mod_status and mod_info output etc., but not CGI generated documents)의
trailing footer line의 설정을 가능하게 한다.

Alias /icons/ "/usr/local/apache/icons/"

  필요한 만큼의 디렉토리 별칭을 만들어 쓸 수 있다. 사용하는 형식은
다음과 같다.
Alias fakename(가상이름) realname(진짜이름)

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

  ScriptAlias는 서버스크립트를 포함한다. ScriptAlias는 실제디렉토리 안에
들어있는 문서를 서버에 의해 응용프로그램으로 취급되어 실행되는 것을
제외하고는 근본적으로 Aliases와 같다.


IndexOptions FancyIndexing

  IndexOPtions는 디렉토리목록을 표시할 때 사용할 옵션을 지정한다.
Standard는 표준적인 디렉토리를 나타내며, FancyIndexing은 좀더 예쁜
디렉토리목록을 표시해 준다.


  아래에서 지정하는 AddIcon으로 시작하는 설정은 바로위에서 설정한
디렉토리인덱싱 옵션을 FancyIndexing으로 한 경우에 해당하며 디렉토리
목록을 표시할 때 각 파일 확장자에 따라서 어떤 아이콘을 선택하여 보여줄
것인지를 지정한다.

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^


DefaultIcon /icons/unknown.gif

  여기서 지정한 확장가가 아닌 경우에 여기서 지정한 기본아이콘으로
보여준다.

AddDescription "GZIP compressed document" .gz
AddDescription "tar archive" .tar
AddDescription "GZIP compressed tar archive" .tgz

  AddDescription은 서버가 생성한 인덱스의 파일 뒤에 간단한 설명을
표시할 때 사용한다. 이 설정은 IndexOptions가 FancyIndexing으로
설정되었을때만 표시되며, 설정형식은 다음과 같다.
형식 : AddDescription "표시할 설명" 파일확장자

ReadmeName README

  ReadmeName은 디렉토리목록표시 뒤에 붙여서 보여줄 README파일의
이름을 지정한다.(일종의 꼬릿말)

HeaderName HEADER

  HeaderName은 디렉토리목록표시 앞에 붙여질 파일의 이름을 지정한다.
(일종의 머릿말)

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

  디렉토리목록을 인덱싱할 때 제외할 파일명을 지정한다. 즉 디렉토리
목록에 포함하지 않을 파일을 지정한다. 쉘스타일의 와일드카드(*, ?)가
허용된다.

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

  AddEncoding은 특정브라우즈(Mosaic/X 2.1+)에서 받고있는 중에 정보에
대한 압축해제를 할 수 있도록한다. 단 모든 웹브라우즈에서 이 기능을
제공하는 것은 아니다.

AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it

  AddLanguage는 문서의 언어를 지정하게 한다.

LanguagePriority en fr de

  언어의 우선순위를 내림차순으로 지정한다.

AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
AddType application/x-tar .tgz

  AddType은 mime.types의 실제 편집없이도 mime을 설정할 수 있다.

AddHandler cgi-script .cgi

  AddHandler는 파일확장자를 처리기(Handler)에 매핑(연결)시켜주게 된다.

AddType text/html .shtml
AddHandler server-parsed  .shtml

  SSI(Server Side Include)문서를 인식하게 하기위한 설정이다. SSI코드가
들어가 있는 문서는 확장자가 *.shtml이다. 시스템의 날짜와 카운터등
CGI프로그램을 하지 않아도 HTML문서에서 단 몇줄로 CGI의 효과를 낼 수
있는 SSI기능을 인식하게끔 하는 설정이다. "7장. 아파치와 SSI"편에서 자세히
설명되어 있다.


#Format: Action media/type /cgi-script/location
#Format: Action handler-name /cgi-script/location

  Action은 매칭되는 파일이 호출될때마다 스크립트를 실행시킬 수 있도록
미디어 타입을 정의한다.

MetaDir .web

  MetaDir은 아파치가 찾을 메타정보파일들의 디렉토리이름을 지정한다. 이
파일들은 문서를 전송할 때 포함되는 HTTP 헤더정보가 포함되어 있다.

MetaSuffix .meta

  MetaSuffix는 메타정보를 포함하고 있는 접미어의 이름을 지정한다.


에러발생시 응답을 정의할 수 있는 방법을 3가지 나타내고 있다.

    1) 일반적인 텍스트

ErrorDocument 500 "The server made a boo boo.

    2) 지역적인 방향전환

ErrorDocument 404 /missing.html
ErrorDocument 404 /cgi-bin/missing_handler.pl

    3) 외부 방향전환

ErrorDocument 402
http://some.other_server.com/subscription_info.html


  다음의 BrowserMatch는 keepalives기능을 쓰지못하게 하며 HTTP
헤드방식을 설정한다.

BrowserMatch "Mozilla/2" nokeepalive

  이 설정은 Netscape 2.x 또는 이를 따르는 브라우즈에 대하여 KeepAlive
기능을 쓰지 못하게한다.

BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0
force-response-1.0

  이 설정은 잘못구현된 HTTP/1.1과 301또는 302반응에 대하여
KeepAlive를 적절히 제공하지 못하는 마이크로소프트 인터넷익스플로러
4.0b2d에 관한 것이다.

BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

  위의 3가지 설정은 기본적인 1.1반응도 처리하지 못하며 HTTP/1.0 스팩을
제한하고 있는 브라우즈에 대하여 HTTP/1.1반응을 하지 못하게 한 것이다.


    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from www.manualand.co.kr

  서버의 상태를 점검할 수 있게하는 설정이다. 이는
"http://www.manualand.co.kr/server-status"와 같은 형식으로 서버의 상태를
점검할 수 있다. "6장. 아파치서버 모니터링"편에서 자세히 설명되어 있다.
여기서 지정한 "SetHandler server-status"의 설정으로 인해 서버
모니터링을 할 수 있는 것이다.


    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from www.manualand.co.kr

  이설정을 위해서는 mod_info.c가 적재되어야 하며, 이는
"http://www.manualand.co.kr/server-info"와 같은 방식으로 서버의 정보를
볼 수 있다. 위에서 설정한 server-status와 함께 실행중인 웹서버의
상태점검을 위한 것이다.


    Deny from all
    ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi

  아파치 1.1이전 버전의 오래된 버그에 대한 악용이 있을시에는 지정한곳
(http://phf.apache.org/phf_abuse_log.cgi) 으로 방향을 전환시킨다.



ProxyRequests On

  아파치 웹서버를 Proxy서버로 사용할 때 on을 해줘야 한다. 즉  
프락시서버 지시자로서 프락시서버를 on 시킨다.


    Order deny,allow
    Deny from all
    Allow from .your_domain.com

ProxyVia On

  HTTP/1.1 "Via:"헤드처리를 활성화시킬 것인지 비활성화 시킬것인지를
지정한다. Off, On, Full, Block중 하나가 올 수 있으며 Full은 서버버전을
포함하며, Block은 나가는 모든 것에 대해 Via:헤더를 제거한다.

CacheRoot "/usr/local/apache/proxy"
CacheSize 5
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
NoCache a_domain.com another_domain.edu joes.garage_sale.com

  이 설정은 캐시기능을 활성화 하기 위한 것이다.

### Section 3: 가상호스트 설정

  여러분의 시스템에서 여러개의 도메인이나 호스트네임을 설정하여
관리하고자 한다면 부분을 설정해 줘야 한다. 가상호스트에
대한 정보는 http://www.apache.org/docs/vhosts/를 참조해 보면 좀더
자세한 정보를 얻을 수 있다.  '-S'옵션을 사용함으로써 가상호스트의 설정에
대한 점검을 할 수 있다.  name-based 가상호스트를 사용하길 원한다면
적어도 한 개이상의 IP Address를 정의할 필요가 있다. "4-2절의 내용"과
"10장.웹호스팅 서비스를 위한 가상호스트"편에서 자세히 설명되어 있다.

NameVirtualHost 12.34.56.78:80
NameVirtualHost 12.34.56.78


    ServerAdmin webmaster@manualand.co.kr
    DocumentRoot /home/sspark/public_html
    ServerName www.manualand.co.kr
    ErrorLog /home/sspark/public_html/aw/error_log
    CustomLog /home/sspark/public_html/aw/access_log common

        ServerAdmin은 해당서버의 관리자 전자우편이며,
        DocumemtRoot는 해당서버의 홈디렉토리이며,
        ServerName은 해당서버의 도메인이며,
        ErrorLog는 해당서버의 에러파일 위치이며
        CustomLog는 로그파일위치와 포맷을 지정한 것이다.


  Default 가상호스트 설정으로 위에서 설정되지 않은 다른 모든 호스트에
대해서 응답을 하고자 할 경우설정해 준다.

신고



댓글을 달아 주세요

apache 설치

OS/Linux 2009.06.10 11:35 |

./configure --prefix=/usr/local/apache --enable-mods-shared=all --with-mpm=worker --enable-ssl --with-ssl --enable-so
make
make install
cp build/rpm/httpd.init /etc/init.d/httpd
chmod 755 /etc/init.d/httpd
chkconfig --list httpd
(없으면 chkconfig --add httpd
chkconfig --level 35 httpd on

vi /etc/init.d/httpd
apachectl=/usr/sbin/apachectl => apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/sbin/httpd} => httpd=${HTTPD-/usr/local/apache/bin/httpd}
CONFFILE=/etc/httpd/conf/httpd.conf => CONFFILE=/usr/local/apache/conf/httpd.conf

vi /usr/local/apache/conf/httpd.conf
ServerName www.example.com:80 => ServerName 127.0.0.1

service httpd start

신고



댓글을 달아 주세요

/etc/sysconfig/i18n에서 아래의 내용으로 변경해주면 됩니다.

LANG="ko_KR.eucKR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"











신고



댓글을 달아 주세요












wget http://dag.wieers.com/rpm/packages/yum/yum-2.4.2-0.4.el4.rf.noarch.rpm

wget ftp://fr2.rpmfind.net/linux/PLD/dists/ac/ready/i386/libsqlite-2.8.15-1.i386.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/python-elementtree-1.2.6-7.el4.rf.i386.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/python-sqlite-0.5.0-1.2.el4.rf.i386.rpm

wget ftp://rpmfind.net/linux/dag/redhat/el4/en/x86_64/dag/RPMS/python-urlgrabber-2.9.7-1.2.el4.rf.noarch.rpm

rpm -ivh libsqlite-2.8.15-1.i386.rpm
rpm -ivh python-elementtree-1.2.6-7.el4.rf.i386.rpm
rpm -ivh python-sqlite-0.5.0-1.2.el4.rf.i386.rpm
rpm -ivh python-urlgrabber-2.9.7-1.2.el4.rf.noarch.rpm
rpm -ivh yum-2.4.2-0.4.el4.rf.noarch.rpm

wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
rpm -ivh rpmforge-release-0.3.6-1.el4.rf.i386.rpm

yum update

신고



댓글을 달아 주세요

apm 설치

OS/Linux 2008.11.17 00:07 |

 
-Apache-
#wget http://mirror.apache-kr.org/httpd/httpd-2.2.9.tar.gz

#tar fxvz httpd-2.2.9.tar.gz

#cd httpd-2.2.9

#yum install gcc*
( 설치 : gcc , openssl , openssl-devel , zlib-devel )

#./configure --prefix=/usr/local/apache --enable-mods-shared=all --with-mpm=worker --enable-ssl --with-ssl --enable-so

#make && make install

#echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.local
컴퓨터 시작시 자동실행

-MYSQL-

#wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.51b.tar.gz/from/http://mysql.byungsoo.net/

#tar fxvz mysql-5.0.51b.tar.gz

#cd mysql-5.0.51b

#yum install
( 설치 : gcc-c++ libstdc++-devel 과 libtermcap-devel )

#./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=utf8 --with-mysql-user=mysql --sysconfdir=/etc --enable-thread-safe-client

#make && make install

#/usr/local/mysql/bin/mysql_install_db --force
디비 실행

#cat >> /etc/ld.so.conf
입력 /usr/local/mysql/lib
ctrl+d 저장
#ldconfig

#cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
mysql 설정파일인 my-medium.cnf 파일을 /etc/my.cnf

#groupadd mysql
#useradd -M -c MySQL_Server -d /usr/local/mysql -g mysql -s /bin/nologin mysql
계정 생산

#chown root.mysql -R /usr/local/mysql
#chown mysql.mysql -R /usr/local/mysql/data


echo "/usr/local/mysql/bin/mysqld_safe &" >> /etc/rc.local

-Php-

#wget http://kr2.php.net/get/php-5.2.6.tar.gz/from/this/mirror

#tar fxvz php-5.2.6.tar.gz

#cd php-5.2.6

#yum install libxml2-devel

#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/apache/conf --with-exec-dir=/usr/local/apache/bin --with-gd=shared --with-openssl--with-gd --enable-gd-native-ttf --with-zlib --with-jpeg-dir=/usr/lib

다음과 같은 에러가뜬다.
에러 : configure: error: xml2-config not found. Please check your libxml2 installation.
답 : #yum install libxml2-devel 아니면 #yum install libxml2

에러 : configure: error: libjpeg.(a|so) not found.
#yum install libpng-devel
#yum install libjpeg-devel

#mkae && make install

#cp php.ini-recommended /usr/local/apache/conf/php.ini

#vi /usr/local/apache/conf/httpd.conf

추가 되었는지 확인 (없으면 자신이 직접 추가) (저는 자동 추가되어있더군요.)
        LoadMbdule php5_module modules/libphp5.so

361 라인 정도 밑에 추가
    361 AddType application/x-httpd-php .php .html .htm
        AddType application/x-httpd-php-source .phps

#vi /usr/local/apache/conf/mime.types

    693 application/x-httpd-php                         php ph inc
    694 application/x-httpd-php-source                  phps

#vi /usr/local/apache/conf/php.ini

default_socket_timeout = 600
post_max_size = 20M
memory_limit = 20M
upload_max_filesize = 20M

-Zend Optimizer-


 ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

#wget http://blog.konata.kr/attachment/ik080000000000.gz
#tar fxvz ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

#cd ZendOptimizer-3.3.3-linux-glibc23-i386

#./install.sh

다음과 같은 질문이나오지않는이상 무조건 "YES" 나 "OK"

Enter the location of your php.ini file
입력 : /usr/local/apache/conf/


신고



댓글을 달아 주세요

SSL 인증서 설치 후 아파치 구동할때 비밀번호 자동입력

 

1. 비밀번호를 출력하는 쉘을 만든다.

 

# cat input_pw.sh
#!/bin/sh
echo "password"

 

2. httpd.conf 파일중 <IfModule mod_ssl.c>부분에 아래내용을 추가한다.

 

SSLPassPhraseDialog  exec:/usr/local/apache_ssl/conf/input_pw.sh

신고



댓글을 달아 주세요

티스토리 툴바