320x100
320x100

웹 서버

: 웹 브라우저와 같은 클라이언트로 부터 HTTP 프로토콜을 통한 요청을 받아 

  서비스를 제공하기 위한 웹 페이지를 전달하는 서버

 

- 주요 웹 서버 프로그램

: Apache

: IIS

: Nginx

: GWS

: Cherokee

: Lighttpd

 

- Apache

: 프로세스 및 스레드 기반으로 동작하는 가장 많이 쓰이는 웹 서버 프로그램

: 보통 LAMP 조합으로 많이 사용 (Linux + Apache + MySQL + PHP)

: 멀티스레딩을 지원하여 하나의 프로세스로 다수의 클라이언트 요청을 처리 (MPM 방식)

 

※ MPM (Multi Processing Module)의 모듈들

: prefork

: worker

: perchild

: WinNT

: BeOS

: Netware

: OS/2

 

- Nginx

: 저용량, 고성능을 목표로 하는 WAS (Web Application Server) 프로그램

: 리버스 프록시, 로드 밸런서, HTTP Cache 등의 기능을 제공

: 비동기 이벤트 기반으로 동작

 

 

 

 

 

HTTP 요청 메소드

- GET

 : 서버에서 자료를 가져오는 요청

 

- POST

: 서버에 정보를 업데이트 하는 요청

 

- PUT

: 서버에 정보를 저장하는 요청

 

- DELETE

: 서버에 자료를 삭제하는 요청

 

- HEAD

: HTTP 헤더 정보만 가져오는 요청

 

 

 

 

 

HTTP 응답 코드

- 1xx: Informational

: 100 (Continue)

: 101 (Switiching Protocols)

 

- 2xx: Successful

: 200 (OK)

: 201 (Created)

: 202 (Accepted)

: 203 (Non Authoritative Information)

: 204 (No Content)

: 205 (Reset Content)

: 206 (Partial Content)

 

- 3xx: Redirection

: 300 (Multiple Choices)

: 301 (Moved Permanently)

: 302 (Moved Temporarliy)

: 303 (See Other)

: 304 (Not Modified)

: 305 (Use Proxy)

 

- 4xx: Client Error

: 400 (Bad Reuqest)

: 401 (Unauthorized)

: 402 (Payment Required)

: 403 (Forbidden)

: 404 (Not Found)

: 405 (Method Not Allowed)

: 406 (Not Acceptable)

: 407 (Proxy Authentication Require)

: 408 (Request Time Out)

: 409 (Conflict)

: 410 (Gone)

: 411 (Length Required)

: 412 (Precondition Failed)

: 413 (Request Entity Too Large)

: 414 (Request URI Too Large)

: 415 (Unsuppored Media Type)

 

- 5xx: Server Error

: 500 (Internal Server Error)

: 501 (Not Implemented)

: 502 (Bad Gateway)

: 503 (Service Unavailable)

: 504 (Gateway Time Out)

: 505 (HTTP Version not Supported)

 

 

 

 

 

리눅스 HTTP 서버 관련 명령어

- httpd

- service httpd

- htpasswd

 

 

 

 

 

httpd

: 아파치 웹 데몬 실행

 

- 형식

: httpd [option] [config file]

 

- 주요 옵션

: -t

 > httpd.conf의 문법적 오류 검사

: -f

 > 아파치 데몬을 구동할 .conf 파일 선택

: -S

 > 설정되어 있는 가상 호스트 출력

: -l

 > 컴파일 된 모듈에 대한 목록 출력

: -k

 > httpd 데몬에 시그널 전송. stop / start / restart / graceful 등의 인자 값 전송

 

 

 

 

 

service httpd

: 데몬 실행 제어 스크립트인 /etc.rc.d/init.d/httpd로 httpd 데몬 제어

 

- 형식

: service httpd <command>

 

- 주요 명령어

: help

 > 도움말 출력

: start

 > 데몬 시작

: stop

 > 데몬 중지

: restart

 > 데몬 재시작

: configtest

 > httpd.conf 파일의 문법적 오류 검사

: graceful

 > 웹 서버에 연결된 접속을 차단하지 않고 httpd.conf을 적용

: status, fulstatus

 > 웹 서버의 상태 출력. mod_status 모듈과 httpd.conf의 Location /serverstatus 설정이 필요

 

 

 

 

 

htpaswd

: 아파치 사용자 인증 파일 생성 및 관리

 

- 형식

: htpaswd [option] <account file> <user>

 

- 주요 옵션

: -c

 > 사용자 계정 파일 생성

 

- 예시

```

htpasswd -c /usr/local/apache/conf/password 2mukee

: 2mukee라는 계정을 생성하고 관련 정보를 password 파일에 저장

```

 

 

 

 

 

아파치 HTTP 서버 관련 파일

- /etc/httpd/conf/httpd.conf

- /var/www/html

- /etc/hosts

- /etc/rc.d/init.d/httpd

- /usr/local/apache/bin/httpd

- /usr/local/acache/bin/apachectl

- /usr/local/apache/htdocs/admin

 

 

 

 

 

/etc/httpd/conf/httpd.conf

: 아파치 웹 서버의 환경설정 파일

 

- 형식

Option Value

 

 

 

 

 

/etc/httpd/conf/httpd.conf의 기본 항목

- ServerName <domain:port>

: 웹 서버의 도메인 및 IP 주소 기입

 

- Listen <port>

: 웹 서버의 접속을 위한 포트 번호 기입

 

- DocumentRoot "<directory path>"

: 웹 문서가 저장되어 있는 디렉터리 기입 (기본: /var/www/html)

 

- DirectoryIndex <index file>

: 웹 문서 디렉터리에서 가장 먼저 인식되는 인덱스 파일. 첫 페이지가 될 HTML 문서명

 

- ServerToken <level>

: HTTP 서버 헤더에 제공되는 정보의 수준. Full, OS, Minor, Minimal, Major, Prod 등 설정. (가장 최소 Prod)

 

- PidFile <pid file>

: 웹 서버 동작 시 root 권한으로 실행되는 프로세스 아이디 저장 파일. 기본값 run/httpd.pid

 

- Timeout <second>

: 클라이언트 요청에 대한 타임아웃 값

 

- KeepAlive <Value>

: 지속적인 접속 허가 부분. 요청때 마다 자식 프로세스를 생성하고 종료시키는 여부. 기본값 On (자식 프로세스 유지)

 

- MaxKeepAliveRequests <number>

: KeepAlive가 설정되어 있을 때 접속 시간 동안 처리할 수 있는 요청 개수.

  0으로 설정 시 무한대. 설정한 수만큼 요청 처리후 종료됨

 

- KeepAliveTimeout <second>

: KeepAlive가 설정된 상태에서 클라이언트의 요청이 타임아웃 되는 시간

 

 

 

 

 

/etc/httpd/conf/httpd.conf 모듈 관련 항목

- LoadModule <.so file path>

: HTTP 서버에 사용할 공유 라이브러리

 

- MPM prefork 모듈

<IfModule prefork.c>
   StartServers          10
   MinSpareServers       3
   MaxSpareServers       20
   ServerLimit           256
   MaxClients            256
   MaxRequestsPerChild   4000
</IfModule>

- StartServers

: 웹 서버 가동 시 처음에 실행 시킬 프로세스의 수

 

- MinSpareServers

: 최소로 유지해야할 프로세스의 수

 

- MaxSpareServers

: 최대로 실행시킬 수 있는 프로세스의 수

 

- ServerLimit

: 서버 동작 중에 생성할 수 있는 자식 프로세스의 수 제한

 

- MaxClients

: 자식 프로세스가 처리할 수 있는 총 동시 연결 수

 

- MaxRequestsPerChild

: 자식 프로세스가 종료되기 전까지 처리할 수 있는 요청의 개수. 0이면 무제한

 

- MPM worker 모듈 

<IfModule worker.c>
    StartServers        4
    MaxClients          300
    MinSpareThreads     30
    MaxSpareThreads     80
    ThreadsPerChild     30
    MaxRequestsPerChild 5000
</IfModule>

 

- StartServers

: 웹 서버 가동 시 처음에 실행 시킬 쓰레드의 수

 

- MaxClients

: 쓰레드가 처리할 수 있는 총 동시 연결 수

 

- MinSpareThreads

: 최소로 유지해야할 쓰레드의 수

 

- MaxSpareThreads

: 최대로 실행시킬 수 있는 쓰레드의 수

 

- ThreadPerChild

: 하나의 프로세스가 처리할 수 있는 최대 쓰레드의 수

 

- MaxRequestsPerChild

: 자식 프로세스가 처리할 수 있는 요청의 개수. 0이면 무제한

 

 

 

 

 

/etc/httpd/conf/httpd.conf 사용자 및 그룹 관련 항목

- User <user>

: 실행되는 httpd 데몬에 대해 권한을 가진 사용자

 

- Group  <group>

: 실행되는 httpd 데몬에 대해 권한을 가진 그룹

 

- ServerAdmin <email address>

: 관리자 이메일 주소

 

- UseCanonicalName <On / Off>

: 아파치의 URL 생성에 대한 지시자.

   On이면 서버 이름과 포트를 이용하여 생성.

   Off면 클라이언트에게 제공하는 호스트 이름과 포트로 생성

 

 

 

 

 

/etc/httpd/conf/httpd.conf 디렉터리 및 파일에 대한 권한

- TypesConfig <mime file path>

: mime 관련 파일 위치. MIME (클라이언트에게 브라우저가 어떤 유형의 자료를 전송할 것인지 조절하는 기능)

: 기본값 conf/mime.types

 

- DefaultType <mime type>

: mime 타입을 알 수 없는 문서에 대한 mime 타입. 기본값 text/plain

 

- HostnameLookups <On / Off>

: 로그 기록 시 주체 이름 설정. On = 도메인 / Off = IP

 

- ErrorLog <error log file path>

: 웹 서버 오류에 대한 로그 파일 설정. 기본값 logs/error_log

 

- LogLevel <level>

: 로그 메시지의 수준. 기본 값 warn.

 

- LogFormat "<log format>"

: 로그 기록 시 형태

 

- CustomLog <log file path> <option>

: 로그 관련 형식 및 파일 제어

 

- ServerSignature <On / Off>

: 아파치 서버가 생성하는 페이지에 서버 버전과 가상 호스트명을 표시하는 여부

 

- Alias <target> "<path>"

: 웹 서버에서 사용할 디렉터리에 대한 별칭 부여

 

- ScriptAlias <target> "<path>"

: CGI 스크립트에 대한 별칭 부여

 

- AccessFileName <dir aceess control file >

: 디렉터리 접근 제어 파일 형식 지정. 기본값 .htaccess

 

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

 

 

- Options 항목 (CGI, SSI, 디렉터리에 대한 심볼릭 링크 설정)

: None

 > 모든 옵션 사용 불가

: All

 > MultiViews 옵션을 제외한 모든 옵션 부여 (기본값)

: Includes

 > 서버측에 추가적인 정보 제공 (SSI, Server Side Includes)

: Indexes

 > URL이 지정된 디렉터리에 지정된 파일이 없을 경우 해당 디렉터리의 파일 목록 출력

: FollowSymLinks

 > 디렉터리 심볼릭 링크 사용 허용

: ExecCgi

 > CGI 스크립트 실행 허용

: IncludesNoExec

 > SSI는 허용하지만 #exec 명령과 CGI 스크립트에 대한 #include 불허

: MultiViews <option>

 > 유사한 파일 이름을 찾아주는 기능 실행 여부

 > All 옵션이 설정되어야만 실행

 

- AllowOverride 항목

(사용자 인증 관련. 웹 클라이언트가 특정 디렉터리에 접근 시 사용자 인증을 위해 읽는 .htaccess 파일에 대한 제어)

: None

 > 사용자 인증 파일 사용 안함

: All

 > httpd.conf 파일의 AccessFileName을 지시자로 설정한 파일 및 관련 제어

: AuthConfig <Indicator>

 > AccessFileName을 지시자로 설정한 파일에 대한 사용자 인증 제어

: FileInfo <Indecator>

 > AccessFileName을 지시자로 설정한 파일에 대해 문서 유형 제어

: Indexes <Indicator>

 > AccessFileName 지시자로 설정한 파일에 대해 디렉터리 Indexing 제어

: Limit <Indecator>

 > AccessFileName 지시자로 설정한 파일에 대해 호스트 접근 제어

: Options

 > AccessFileName 지시자에 명시한 파일에 대한 Options 및 XBiHack 등 지시자 사용 제어

 

- Order 항목 (디렉터리에 접근하는 호스트 인증 / 디렉터리에 대한 IP 및 도메인 필터링 순서 설정)

: Allow from <all / <host name>>

 > 해당 디렉터리 접근에 대한 허용 필터링 설정

: Deny from <all / <host name>>

 > 해당 디렉터리 접근에 대한 거부 필터링 설정

 

<IfModule mod_userdir.c>
   UserDir disabled
   #UserDir public_html
</IfModule>

<Directory /home/*/public_html>
   AllowOverride FileInfo AuthConfig Limit
   Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
   <Limit GET POST OPTIONS>
      order allow,deny
      Allow from all
   </Limit>
   <LimitExcept GET POST OPTIONS>
      Order deny,allow
      Deny from all
   </Limit>
</Directory>

: 개인 홈페이지 웹 문서를 위치시킬 디렉터리 지정

: 기본값인 disabled 대신 public_html 지정 시 사용자 홈 디렉터리 내에 public_html 디렉터리의

  웹 문서를 클라이언트에 노출 할 수 있음

:  웹 서버의 도메인이 www.2mukee.com  이고 사용자 계정이 deragon이면 www.2mukee.com/~deragon 으로 접근

 

 

 

 

 

/etc/httpd/conf/httpd.conf 가상 호스트

- NameVirtualHost <ip:port>

: 하나의 IP로 여러 도메인을 사용하기 위한 설정

 

<VirtualHost 192.168.5.123:80>
   ServerAdmin 2mukee1@dummy-page.com
   DocumentRoot /www/docs/dummy-page.com
   ServerName dummy-page.com
   ServerAlias www.dummy-page.com
   ErrorLog logs/dummy-page.coe-error_log
</VirtualHost>

 

 

 

 

 

/var/www/html

: 웹 문서가 저장되는 기본 디렉터리. .html 파일들을 저장

: 웹 문서 디렉터리 위치는 httpd.conf에서 수정 가능

 

 

 

 

 

/etc/hosts

: 가상 도메인을 설정하는 파일. httpd.conf에서 가상 도메인을 지정할 때 이 파일에도 기입해야함

 

- 형식

IP     hostname    alias

 

- 예시

```

127.0.0.1			localhost	 	 deep.openna.com
208.164.186.1		deep.openna.com		 deep
208.164.186.2		mail.openna.com		 mail
208.164.186.3		web.openna.com		 web

```

 

 

 

 

 

/etc/rc.d/init.d/httpd

: httpd 데몬을 실행하기 위한 스크립트 파일. /etc/rc.d/init.d/httpd start 명령어로 실행

: service httpd start로도 시작 가능

 

 

 

 

 

/usr/local/apache/bin/httpd

: 아파치 웹 데몬 스크립트 파일. httpd 명령 실행 시 실행되는 파일

 

 

 

 

 

 

Refference

 

리눅스마스터 1급 2차 실기 정복하기 | 정성재 - 교보문고

리눅스마스터 1급 2차 실기 정복하기 | 출제 경향을 반영하여 핵심 내용만 요약 정리 시험대비를 위한 최신 기출문제를 해설과 함께 수록본 교재는 독자들이 최근 출간 요구가 많았던 리눅스마

product.kyobobook.co.kr

 

300x250
728x90