웹 서버
: 웹 브라우저와 같은 클라이언트로 부터 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
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 파일 서버 관리 1 - SAMBA (0) | 2022.10.20 |
---|---|
리눅스 인증 서버 관리 (NIS/LDAP) (0) | 2022.10.20 |
리눅스 시스템 백업 (1) | 2022.10.13 |
리눅스 ACL (Access Control List) 관리 (1) | 2022.10.13 |
리눅스 PAM (Pluggable Authentication Module) 관리 (0) | 2022.10.12 |