1. 아파치 웹 서버의 개념
- 아파치(Apache)는 아파치 소프트웨오 재단에서 만드는 웹서버 프로그램입니다.
- 아파치는 고성능의 HTTP 서버입니다.
1-1. 아파치의 특징
- 아파치 웹서버는 무료 오픈소스입니다.
- 확장성, 호환성, 이식성, 안전성이 높아서 웹 서버에서 많이 사용됩니다.
- 모듈이라는 개념으로 수많은 기능을 덧붙일 수 있습니다.
- APM(Apache + PHP + MySQL)이 웹 서버를 돌리기 위한 기본 조합으로 여겨집니다.
2. 아파치의 기본 구조와 모듈
2-1. 아파치의 기본 구조
아파치는 MPM(Multi Processing Module) 구조를 기반으로 클라이언트 요청 처리 방법을 처리하는 기술 기반을 가지고 있습니다.
MPM은 "mpm_prefork", "mpm_worker", "mpm_even" 구조로 하고 있습니다.
- mpm_prefork : 단일 스레드 로직에서 동작하며 각 서버 프로세스는 한 번에 하나의 웹 요청(Web Request)을 처리합니다. 이러한 방식은 PHP 환경에서 권장되는 방식입니다.
- mpm_worker : 동시에 여러 스레드를 지원합니다. 이는 아파치가 좀 더 효율적이고 확장 가능하도록 돕습니다.
- mpm_event : mpm_worker와 유사한 방식으로 동작하지만 최근 등장한 웹 관련 애플리케이션을 위한 keep alive 메커니즘이 포함되어 있습니다.
2-2. 아파치의 모듈
- 정적 모듈
- 아파치 서버에 정적 모듈을 사용하면 PHP가 완전히 고정되고 처리속도가 빠릅니다.
- 즉, 사용자가 많은 서버에서 사용하기 적합합니다.
- 그러나 아파치 서버와 PHP를 업데이트해야 하는 경우, 두 가지 모두 재설치가 필요하고 속도는 빠르지만 항상 서버에 상주하고 있어야 해서 자원의 불필요한 낭비가 발생합니다.
- 동적 모듈
- 클라이언트의 요청이 있을 때 프로세스에 포함되는 방식입니다.
- 언제든지 다른 모듈이나 라이브러리를 적재할 수 있고, 불필요한 자원의 낭비가 적어 동적 모듈에 비해 훨씬 효율적으로 사용할 수 있습니다.
3. 아파치의 주요 설정 파일
httpd.conf : 주요 설정 파일이며 아파치의 환경 설정 파일입니다.
- httpd.conf의 기본 설정
- ServerRoot : 아파치의 설정, 에러, 로그 파일 등이 위치하는 최상위 디렉터리입니다.
- Listen : 아파치에서 HTTP 통신을 하기 위해 사용하는 포트를 추가합니다.
- ServerAdmin : 서버에 문제가 생겼을 경우 에러메시지를 전달할 이메일 주소입니다.
- ServerName : 아파치 서버가 스스로를 식별하기 위해 사용하는 이름과 포트의 조합입니다.
- DocumentRoot : 아파치에서 동작할 정적인 어플리케이션이 위치한 디렉터리입니다.
4. .htaccess 파일의 사용법
.htaccess(hypertext access)는 디렉터리에 대한 설정 옵션을 제공합니다.
4-1. 사용 방법
- 아파치 홈 디렉터리 내부에 .htaccess 파일을 둡니다.
- /etc/apatche2/apatche2.conf 의 홈 디렉터리 경로에 아래와 같은 코드를 추가합니다.
AllowOverride ALL
// .htaccess 파일이 Override 하는 것을 허용하겠다는 의미
5. 아파치 성능 튜닝의 기초
Apache 웹서버는 Prefork, Worker, Event 방식 3가지를 제공합니다.
5-1. MPM 개요
MPM 설정을 활용하면 웹 애플리케이션의 성격에 따라 클라이언트로부터 받은 요청을 어떤 방식으로 처리할 것인지 결정할 수 있습니다.
- prefork
- 미리 여러 개의 프로세스를 생성하여 하나의 프로세스가 하나의 요청을 처리하는 방식
- 프로세스 간 메모리를 공유하지 않아 안정적
- 오래된 모듈과 호환이 필요한 서비스에 적합
- 메모리 사용량이 상대적으로 높음
- worker
- 하나의 프로세스에 연결된 여러 스레드에서 요청을 각각 처리하는 방식
- 스레드들이 메모리를 공유하기 때문에 메모리 사용량이 prefork 방식에 비해 적음
- 동시접속자가 많은 서비스에 유용
- event
- Apache 2.4 버전부터 제공
- worker 방식을 기반으로 동작
- 요청을 분산하는 스레드를 따로 두어 처리 지연을 최소화하는 구조
- 속도가 가장 빠르며, 동시접속자가 많은 서비스에 유용
'ELITE HACKER bootcamp > Pre.web' 카테고리의 다른 글
[2주차 TIL] PHP (0) | 2024.12.16 |
---|---|
[2주차 TIL] Mysql (0) | 2024.12.16 |
[2주차 TIL] 자바스크립트 기본 문법 (0) | 2024.12.16 |
[2주차 TIL] HTML (0) | 2024.12.16 |
[1주차 TIL] HTML, CSS, Javascript란? (1) | 2024.12.16 |