본문 바로가기
Programming/DevOps, Tools

[UNIX System] 웹 서버 (web server)와 아파치 설정

by kghworks 2023. 1. 30.

목차

  • 웹서버
  • 아파치 설정

웹서버 (Web Server)

 

 웹서버란  클라이언트의 HTTP 요청을 받아 웹 페이지 내용을 클라이언트에게 응답 (제공)하는 서버 프로그램입니다.

클라이언트는 사용자, 브라우저입니다. 이때 클라이언트가 서버와 네트워크를 통해 연결하는데, 연결하는 전용 프로토콜이 HTTP 프로토콜입니다.

2022.09.14 - [Programming/WAS] - HTTP 프로토콜 초간단 요약

 

HTTP 프로토콜 초간단 요약

목차 HTTP 프로토콜이란? HTTP 요청 메시지 구조 HTTP 응답 메시지 구조 HTTP 프로토콜 (PROTOCOL)이란? 웹 서버 (아파치 등)가 클라이언트 (브라우저, 크롬 등)와 통시하는 규약입니다. TCP 프로토콜에 기

kghworks.tistory.com

 

많이 사용하는 웹 서버 프로그램으로는 Apache, IIS Nginx 가 있습니다. (아래 시장 점유율 사진참고)

웹서버 2022 점유 (*출처 : https://news.netcraft.com/archives/category/web-server-survey)

 

 

APM (Apache HTTP server, PHP script program, MySQL RDBMS)

 APM이라고 보통 아파치 웹서버, PHP 스크립트 처리기, MySQL 데이터베이스가 결합되어 있는 시스템을 말합니다. 각 요소가 모두 오픈 소스이므로 비용을 절약하기 위한 웹사이트 구축에 많이 쓰이는 스택입니다. (PHP대신 JSP 프로그래밍이 들어가기도 합니다)


아파치 설정 (httpd.conf)

## CentOS
/etc/htpd/conf/httpd.conf 

## Ubuntu
/etc/apache2/apache2.conf

  Apache 기본 설정 파일은 OS에 따라 위와 같이 다릅니다. 설정파일 내용을 수정했다면 아파치 서비스를 재기동해야 바뀐 설정이 적용됩니다. 이 파일에 없는 설정값도 다른 설정파일들에 산재해 있을 수 있으며 이는 OS, 버전에 따라 다를 수 있습니다.

 

아래 아파치 docs 사이트에 접속하시면 설정에 대해 자세히 보실 수 있습니다.

https://httpd.apache.org/docs/2.4/en/

 

Apache HTTP Server Version 2.4 Documentation - Apache HTTP Server Version 2.4

 

httpd.apache.org

 

attribute description default example
ServerRoot 아파치가 설치되어있는 최상위 디렉터리  /etc/httpd  
Timeout 아파치가 클라이언트로부터 수신을 기다리는 최대 대기시간 (초단위) 만일 버퍼가 비어있다면, TCP 패킷이 도착할 때까지 아파치는 설정한 시간만큼 대기. 60 20
(20초 동안 대기)
PidFIle 아파치 데몬의 PID를 기록할 파일 경로 설정 logs/httpd.pid /run/apache2/apache2.pid
KeepAlive 아파치가 지속적인 연결* 이 가능할지 여부를 on / off 로 설정 on on

MaxKeepAliveRequests KeepAlive 값이 on일 경우 한 연결 안에서 최대 요청 수를 설정. 서버 성능을 극대화 하려면 큰값으로 설정.
0으로 설정하면 무제한 
100 0
(무제한)
KeepAliveTimeout KeepAlive가 on일 경우 연결이 맺어지면 끊지 않고 다음 요청을 대기하는 최대 시간. (초단위) 
큰 값으로 설정 시 서버 성능 저하
5 10
StartServers 서버 시작 시 생성할 자식 프로세스 수
기본값은 mpm, wokrer, event에 따라 다름
- 8
MinSpareServers
/ MaxSpareServers
유휴 자식 프로세스의 최대 / 최소값 설정
최소값일 때 최소값을 유지하기 위해 유휴 자식프로세스를 계속 생성
최대값일 때 최대값을 유지하기 위해 클라이언트 요청이 끝나면 자식 프로세스 계속 삭제
max : 10
min : 5
MinSpareServers 5
MaxSpareServers 20
MaxClients 동시 접속 가능한 최대 클라이언트 수 256  1024
MaxConnectionsPerChild
(or MaxRequestPerChild )
자식프로세스 하나가 처리할 수 있는 최대 커넥션 수
최대값에 도달하면 자식프로세스는 죽음
0일 경우 자식프로세스는 소멸되지 않음
 0  
Listen 서버가 listen할 포트 혹은 IP   Listen 80
Listen 8000
(80, 8000 포트로 수신)

 Listen 12.34.56.78:80
(특정 ip, 포트만 허용)
LoadModule 아파치에 추가할 외부 모듈
서버가 시작할 때 적용됨
  LoadModule status_module "modules/mod_status.so"
ServerAdmin 서버 관리자의 이메일   example@email.com
DocumentRoot 웹에 표시할 웹컨텐츠 루트 디렉터리

/usr/local/apache/htdocs /usr/web
(.../idnex.html로 요청 시
../usr/web/index.html 응답)
DirecotryIndex 클라이언트의 요청이 파일 없이 경로로만 지정된다면 기본으로 반환할 파일 index.html index.htm
(.../docs/ 으로 요청 시
../docs/index.htm 으로 응답)
ErrorLog 아파치가 서버 에러 로그를 할 경로 logs/error_log /var/log/httpd/error_log
AddDefaultCharset 응답 content-type이 text/plain 이나ㅅtext/html일 경우 추가할 기본 charset off UTF-8
(Content-Type : text/html; 
charset=UTF-8로 응답에 들어감)

 

* 지속적인 연결 (persistent connections) :  클라이언트와 한번의 연결 안에서 여러 번 서로 요청/응답을 주고받음.  HTTP/1.0 까지는 한번의한 번의 요청 응답이 끝나면 TCP가 끊어지거나 예외적으로 클라이언트에 의해 요청할 경우에만 가능했으나,  HTTP/1.1 이상부터는 설정 시 한 번의 연결 안에서 여러쌍의 요청/응답이 가능해짐

 

* 유휴 자식 프로세스 (idle child process) : 요청을 처리하고 있지 않은 (놀고 있는) 자식 프로세스


참고

https://news.netcraft.com/archives/category/web-server-survey/

 

Web Server Survey | Netcraft News

In the September 2022 survey we received responses from 1,129,251,133 sites across 271,625,260 unique domains, and 12,252,171 web-facing computers. This month all three metrics have decreased since August, with a loss of 5.82 million sites, 115,512 unique

news.netcraft.com

https://httpd.apache.org/docs/2.4/en/mod/directives.html

 

Directive Index - Apache HTTP Server Version 2.4

 

httpd.apache.org

 

https://httpd.apache.org/docs/current/ko/mpm.html

 

다중처리 모듈 (MPM) - Apache HTTP Server Version 2.4

다중처리 모듈 (MPM) 이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요. 이 문서는 다중처리 모듈 (Multi-Processing Module)이 무엇이며, 아파치 웹서버가 이를 어떻게

httpd.apache.org

https://www.stigviewer.com/stig/apache_site_2.2unix/2013-04-11/finding/V-13730

 

The httpd.conf MaxClients directive must be set properly.

Security Technical Implementation Guides (STIGs) that provides a methodology for standardized secure installation and maintenance of DOD IA and IA-enabled devices and systems.

www.stigviewer.com

 

댓글