반응형

목차

  1. Apache
  2.  Apache HTTP Server의 주요 기능
  3. 구성 요소
  4. 가상 호스트
  5. 다운로드 및 설치
  6. httpd.conf 파일에 있는 이름 기반 가상 호스트 구성의 예
  7. 모듈
  8. httpd.conf 파일에서 모듈 활성화
  9. .htaccess
  10. URL 재작성을 위한 .htaccess 파일의 예시

Apache

Apache HTTP Server라고도 하는 Apache는 인터넷에서 웹 사이트의 상당 부분을 지원하는 널리 사용되는 오픈 소스 웹 서버 소프트웨어다. Apache Software Foundation에서 개발 및 유지 관리하며 Linux와 같은 Unix 기반 시스템과 함께 사용하도록 설계되었지만 Windows 및 기타 플랫폼도 지원한다.

Apache는 HTTP 요청을 처리하기 위한 안전하고 효율적이며 확장 가능한 플랫폼을 제공하며 해당 기능을 확장하기 위해 추가 모듈로 사용자 정의할 수 있다.


 Apache HTTP Server의 주요 기능

다중 처리 모듈(MPM)
Apache는 서버가 들어오는 연결을 처리하는 방법을 결정하는 다양한 MPM을 사용하여 연결 및 요청을 처리할 수 있다. 몇 가지 일반적인 MPM에는 다음이 포함된다.

  1. prefork
    들어오는 각 연결은 별도의 프로세스에서 처리된다. 스레드 지원이 없는 시스템이나 스레드로부터 안전하지 않은 응용 프로그램을 실행할 때 적합하다.

  2. worker
    여러 프로세스를 사용하며 각 프로세스에는 연결을 처리하기 위한 여러 스레드가 있다. 이 접근 방식은 스레드를 지원하는 시스템에서 더 나은 성능과 확장성을 제공한다.

  3. event
    작업자 MPM과 유사하지만 수명이 긴 연결 처리에 최적화되고 리소스 사용량을 줄이도록 설계되었다.

구성 요소

Apache는 주로 서버의 동작을 제어하는 ​​지시문이 포함된 httpd.conf 파일을 통해 구성된다.

  1. Listen: 서버가 들어오는 연결을 수신할 IP 주소와 포트 번호를 지정한다.
  2. ServerName: 서버의 정규화된 도메인 이름을 정의한다.
  3. DocumentRoot: Apache에서 제공하는 웹 콘텐츠가 포함된 디렉터리를 설정한다.
  4. DirectoryIndex: 클라이언트가 디렉토리를 요청할 때 서버가 사용할 기본 파일 이름을 나열한다.
  5. ErrorLog: 서버의 오류 로그 파일 위치를 지정한다.

가상 호스트

Apache는 가상 호스트를 사용하여 단일 서버에서 여러 웹사이트 호스팅을 지원한다. 가상 호스트에는 두 가지 유형이 있다.

  1. 이름 기반 가상 호스트
    동일한 IP 주소 및 포트에서 도메인 이름이 다른 여러 웹사이트를 호스팅할 수 있다. 서버는 HTTP 요청의 도메인 이름을 기반으로 웹사이트를 구분한다.

  2. IP 기반 가상 호스트
    이들은 서로 다른 IP 주소 또는 포트에서 서로 다른 웹 사이트를 제공하며 각 사이트에는 전용 IP 주소 또는 포트가 있다.

다운로드 및 설치

1. 설치

sudo apt-get install apache2

2. 아파치 시작하기

sudo service apache2 start

3. 아파치 중지

sudo service apache2 stop

4. 아파치 재시작

Debian 기반
sudo service apache2 restart

5. Apache 상태 확인

sudo service apache2 status

7. Apache 구성 파일 편집

sudo nano /etc/apache2/apache2.conf


이는 Linux에서 사용할 수 있는 많은 Apache 명령의 몇 가지 예일 뿐이므로 더 궁금한 것이 있다면 Apache 웹 사이트를 방문하거나 터미널에서 man 명령을 사용하여 더 많은 명령과 자세한 설명서를 찾아 보는 것을 추천한다/.


httpd.conf 파일에 있는 이름 기반 가상 호스트 구성의 예
NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.example1.com
    DocumentRoot "/var/www/example1"
    ErrorLog logs/example1-error_log
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example2.com
    DocumentRoot "/var/www/example2"
    ErrorLog logs/example2-error_log
</VirtualHost>

모듈

Apache는 기능을 추가하거나 서버의 동작을 수정하기 위해 로드할 수 있는 모듈을 통해 매우 확장 가능하다. 일반적으로 사용되는 일부 모듈은 다음과 같다.

  1. mod_rewrite
    URL 재작성 기능을 제공하여 깨끗하고 SEO 친화적인 URL을 만들 수 있다.

  2. mod_proxy
    다른 웹 서버의 콘텐츠를 제공하거나 부하 분산을 구현하기 위한 프록시 서버 역할을 한다.

  3. mod_ssl
    SSL/TLS 프로토콜에 대한 지원을 추가하여 서버와 클라이언트 간의 안전한 통신을 가능하게 한다.

  4. mod_security
    다양한 웹 애플리케이션 공격으로부터 보호하는 웹 애플리케이션 방화벽을 제공한다.

httpd.conf 파일에서 모듈 활성화
LoadModule rewrite_module modules/mod_rewrite.so

.htaccess

Apache는 .htaccess 파일을 사용하여 구성 설정의 분산 관리를 허용한다. 이러한 파일은 특정 디렉터리에 배치하여 해당 디렉터리 및 해당 하위 디렉터리에 대한 구성 설정을 재정의하거나 추가할 수 있다. .htaccess 파일의 일반적인 용도는 다음과 같다.

  1. 사용자 지정 오류 페이지
    특정 HTTP 상태 코드(예: 404, 500)에 대한 오류 페이지를 정의한다.

  2. 액세스 제어
    IP 주소, 사용자 에이전트 또는 인증을 기반으로 특정 디렉토리 또는 파일에 대한 액세스를 제한한다.

  3. URL 재작성
    기본 httpd.conf 파일을 수정하지 않고 사용자 지정 URL 재작성 규칙을 구현한다.

URL 재작성을 위한 .htaccess 파일의 예시
RewriteEngine On
RewriteRule ^([a-z]+)/([0-9]+)/?$ /index.php?controller=$1&id=$2 [L,QSA]

RedHat 기반으로한것은 이 다음에 2편에서 올리도록하겠다.

반응형