본문 바로가기

KnockOn/2week

[2주차 TIL] KnockOn Bootcamp Apache

웹 서버 기초: 아파치 웹 서버의 이해와 활용

📚 학습 목표

  • 아파치 웹 서버의 기본 개념 이해
  • 아파치의 구조와 모듈 알아보기
  • 주요 설정 파일의 역할 파악
  • .htaccess 파일의 사용법 익히기
  • 성능 튜닝의 기초 배우기

1. 아파치 웹 서버의 개념

아파치 웹 서버(Apache HTTP Server)는 세계에서 가장 널리 사용되는 오픈 소스 웹 서버입니다. 아파치는 1995년 개발이 시작되어 현재까지 계속해서 발전해왔습니다. 기본적으로 HTTP 프로토콜을 사용하여 클라이언트(웹 브라우저)와 서버 간에 웹 페이지 및 콘텐츠를 전달하는 역할을 합니다.

주요 특징

  • 오픈 소스: 무료로 사용할 수 있으며, 소스 코드를 수정할 수 있습니다.
  • 플랫폼 독립성: Windows, Linux 등 다양한 운영 체제에서 작동합니다.
  • 확장성: 다양한 모듈을 통해 기능을 확장할 수 있습니다.

2. 아파치의 기본 구조와 모듈

아파치 웹 서버는 기본적으로 클라이언트의 요청을 처리하고, 요청된 리소스를 제공합니다. 이 과정에서 사용되는 구조와 주요 모듈은 다음과 같습니다.

2.1 기본 아키텍처

  • 클라이언트: 웹 브라우저 또는 다른 HTTP 클라이언트
  • 서버: Apache HTTP Server
  • 리소스: HTML, CSS, 이미지 파일 등

2.2 모듈

아파치는 다양한 모듈을 통해 기능을 확장할 수 있으며, 대표적인 모듈은 다음과 같습니다:

  • mod_ssl: HTTPS를 통한 보안 통신 지원
  • mod_rewrite: URL 재작성 및 리디렉션
  • mod_proxy: 프록시 기능 제공
  • mod_php: PHP와의 통합을 위한 모듈

모듈은 필요에 따라 활성화하거나 비활성화할 수 있습니다.


3. 아파치의 주요 설정 파일

아파치 웹 서버는 여러 설정 파일을 사용하여 서버 동작을 관리합니다. 주요 설정 파일은 다음과 같습니다:

3.1 httpd.conf

  • 아파치의 주 설정 파일입니다.
  • 서버의 전반적인 설정, 모듈 로드, 리스닝 포트 및 디렉토리 설정 등을 정의합니다.

3.2 apache2.conf

  • 보통 Ubuntu와 같은 Debian 기반 시스템에서 사용되는 파일입니다.
  • 아파치의 전체적인 설정을 포함하며, httpd.conf와 비슷한 역할을 합니다.

3.3 sites-availablesites-enabled

  • 도메인 별 사이트 설정을 관리하는 디렉토리입니다.
  • sites-available에 설정 파일을 추가하고, sites-enabled에 심볼릭 링크를 만들어 활성화합니다.

4. .htaccess 파일의 사용법

.htaccess 파일은 특정 디렉토리의 설정을 조정할 수 있는 강력한 도구입니다. 이 파일을 사용하면 서버의 주 설정 파일을 수정하지 않고도 다양한 설정을 적용할 수 있습니다.

4.1 주요 기능

  • URL 리디렉션: 특정 URL로의 접근을 다른 URL로 리디렉션할 수 있습니다.

      Redirect /old-page.html /new-page.html
  • 접근 제어: 특정 IP 주소에서의 접근을 차단하거나 허용할 수 있습니다.

      Order Deny,Allow
      Deny from all
      Allow from 192.168.1.1
  • 커스터마이징 오류 페이지: 404 같은 오류 발생 시 사용자 정의 페이지 표시

      ErrorDocument 404 /custom_404.html

4.2 사용 방법

.htaccess 파일은 필요한 디렉토리에 위치시켜야 하며, 올바른 권한 설정이 필요합니다. 일반적으로 644 권한으로 설정하여 읽기 가능하도록 합니다.


5. 아파치 성능 튜닝의 기초

아파치 웹 서버의 성능을 최적화하여 더 빠른 속도를 확보하고 많은 사용자 요청을 처리해야 합니다. 기본적인 성능 튜닝 방법에는 다음이 포함됩니다:

5.1 KeepAlive 설정

KeepAlive 기능을 활성화하면 클라이언트와의 연결을 계속 유지하여 성능을 향상시킬 수 있습니다.

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

5.2 모듈 관리

필요하지 않은 모듈을 비활성화하여 서버의 메모리 사용량을 줄이고 성능을 향상시킬 수 있습니다.

5.3 최대 동시 연결 수 설정

동시 연결 수를 조정하여 서버의 리소스를 효율적으로 분배할 수 있습니다.

<IfModule mpm_prefork_module>
    StartServers 5
    MinSpareServers 5
    MaxSpareServers 10
    MaxRequestWorkers 150
    MaxConnectionsPerChild 3000
</IfModule>

5.4 페이지 캐싱

정적 파일에 대한 캐싱을 설정하면 특정 리소스를 클라이언트 측에 저장하여 서버의 응답 속도를 높일 수 있습니다.

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
</IfModule>

📌 마무리

이번 포스트에서는 아파치 웹 서버의 기본 개념과 구조, 주요 파일, .htaccess의 사용법 그리고 성능 튜닝 방법에 대해 알아보았습니다. 아파치는 유연하고 강력한 웹 서버로, 다양한 설정과 최적화를 통해 효율적으로 웹 페이지를 제공하는 데 이상적인 선택입니다.

'KnockOn > 2week' 카테고리의 다른 글

[2주차 TIL] KnockOn Bootcamp PHP  (0) 2024.12.16
[2주차 TIL] KnockOn Bootcamp Mysql  (0) 2024.12.16
[2주차 TIL] KnockOn Bootcamp Javascript  (0) 2024.12.16
[2주차 TIL] KnockOn Bootcamp HTML  (0) 2024.12.16