웹사이트 검색

Ubuntu 또는 Debian VPS에서 Apache 웹 서버를 구성하는 방법


소개

Apache는 인터넷에서 가장 인기 있는 웹 서버 중 하나입니다. 모든 활성 웹 사이트의 절반 이상을 제공하는 데 사용됩니다. 콘텐츠를 제공할 실행 가능한 웹 서버가 많이 있지만 편재성 때문에 Apache의 작동 방식을 이해하는 것이 도움이 됩니다.

이 문서에서는 일부 일반 구성 파일과 그 안에서 제어할 수 있는 옵션을 살펴봅니다. 이 문서는 Apache 파일의 Ubuntu/Debian 레이아웃을 따르는데, 이는 다른 배포판이 구성 계층 구조를 구축하는 방식과 다릅니다.

전제 조건

Apache 구성 탐색을 시작하기 전에 서버에 Apache가 설치되어 있어야 합니다. Debian 10 자습서에 Apache 웹 서버를 설치하는 방법을 따라 방법을 배울 수 있습니다.

아파치 파일 계층

Apache는 기본 구성 파일을 /etc/apache2 폴더에 보관합니다. 다음 명령을 실행하면 이 폴더 내의 모든 파일이 나열됩니다.

  1. ls -f /etc/apache2
Output
envars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available

이 디렉토리에는 많은 일반 텍스트 파일과 일부 하위 디렉토리가 있습니다. 다음은 숙지해야 할 몇 가지 유용한 위치입니다.

  • apache2.conf: 서버의 기본 구성 파일입니다. 거의 모든 구성은 이 파일 내에서 수행할 수 있지만 단순화를 위해 별도의 지정된 파일을 사용하는 것이 좋습니다. 이 파일은 기본값을 구성하고 서버가 구성 세부 정보를 읽기 위한 중앙 액세스 지점이 됩니다.
  • ports.conf: 이 파일은 가상 호스트가 청취해야 하는 포트를 지정하는 데 사용됩니다. SSL을 구성하는 경우 이 파일이 올바른지 확인하십시오.
  • sites-available/sites-enabled/: sites-available 디렉토리에는 가상 호스트 파일 구성이 포함되어 있습니다. 이 폴더 내의 구성은 어떤 콘텐츠가 어떤 요청에 대해 제공되는지 설정합니다. 이것은 활성화된 가상 호스트 구성 파일을 저장하는 sites-enabled 디렉토리에 대한 링크를 통해 활성화됩니다. Apache가 시작되거나 다시 로드될 때 전체 구성을 컴파일할 때 sites-enabled 디렉토리 내에서 구성 파일과 링크를 읽습니다.
  • conf-available/conf-enabled/: 이 디렉토리에는 가상 호스트 구성 파일에 연결되지 않은 구성 조각이 있습니다.
  • mods-enabled/mods-available/: 이 디렉토리는 선택적으로 로드할 수 있는 모듈을 정의합니다. 디렉토리에는 특정 모듈을 로드하는 조각을 포함하는 .load로 끝나는 파일과 이러한 모듈의 구성을 저장하는 .conf로 끝나는 파일의 두 가지 구성 요소가 있습니다.< /리>

Apache 구성은 단일 모놀리식 파일에서 발생하지 않고 대신 필요에 따라 새 파일을 추가하고 수정할 수 있는 모듈식 설계를 통해 발생합니다.

Apache2.conf 파일 탐색

Apache 서버의 기본 구성 세부 정보는 /etc/apache2/apache2.conf 파일에 있습니다.

  • 글로벌 Apache 서버 프로세스 구성
  • 기본 서버 구성
  • 가상 호스트 구성

선호하는 텍스트 편집기로 이 파일을 엽니다. 다음 예에서는 nano를 사용합니다.

  1. sudo nano /etc/apache2/apache2.conf

Ubuntu 및 Debian에서 이 파일은 전역 정의를 구성하는 데 사용됩니다. 기본 서버 및 가상 호스트의 구성은 Include 지시문을 사용하여 처리됩니다.

이 파일에는 다양한 IncludeIncludeOptional 문이 많이 있습니다. 이러한 지시문은 모듈 정의, ports.conf 문서, conf-enabled/ 디렉토리의 특정 구성 파일 및 sites- 디렉토리의 가상 호스트 정의를 로드합니다. 활성화된/ 디렉토리:

…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf

글로벌 구성

전역 구성에서 수정할 수 있는 몇 가지 옵션이 있습니다.

타임아웃

기본적으로 이 매개변수는 300으로 설정됩니다. 이는 서버가 각 요청을 이행하는 데 최대 300초가 있음을 의미합니다.

살아 유지

이 옵션을 On으로 설정하면 각 연결이 열린 상태로 유지되어 동일한 클라이언트의 여러 요청을 처리할 수 있습니다.

최대 유지 요청

이것은 각 연결이 종료되기 전에 처리할 개별 요청의 수를 제어합니다. 이 숫자를 높게 유지하면 Apache가 각 클라이언트에 보다 효과적으로 콘텐츠를 제공할 수 있습니다.

KeepAliveTimeout

이 설정은 마지막 요청을 완료한 후 다음 요청을 기다리는 시간을 지정합니다. 제한 시간 임계값에 도달하면 연결이 끊어집니다.

이 구성 파일의 내용을 검토한 후 CTRL+X를 눌러 닫을 수 있습니다.

다중 처리 모듈

다중 처리 모듈(MPM)은 Apache의 모듈식 설계를 확장합니다. MPM은 다양한 네트워크 요청을 수신, 지시 및 처리할 책임이 있습니다. 다음 명령을 사용하여 Apache 설치가 컴파일된 섹션을 상호 참조할 수 있습니다.

  1. apache2 -L
Output
Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.c

a2query -M 명령을 사용하여 서버에서 MPM 유형을 확인할 수 있습니다.

  1. a2query -M
Output
event

출력은 event MPM이 이 서버에서 사용됨을 나타냅니다. 설치에서 선택할 수 있는 항목이 여러 개일 수 있지만 하나만 선택할 수 있습니다.

가상 호스트 파일

기본 가상 호스트 선언은 sites-available/ 디렉토리 내의 000-default.conf 파일에서 찾을 수 있습니다. 이 파일을 검사하여 가상 호스트 파일의 일반적인 형식에 대해 알아볼 수 있습니다.

다음 명령으로 파일을 엽니다.

  1. sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…

기본 가상 호스트는 표준 HTTP 포트인 포트 80에서 모든 요청을 처리하도록 구성됩니다. 이것은 *:80이라고 표시된 선언 헤더에 정의되어 있으며 이는 모든 인터페이스에서 포트 80을 의미합니다.

가상 호스트 구성 옵션

다음 옵션은 다른 하위 수준 하위 선언 외부의 가상 호스트 정의 내에서 설정됩니다. 전체 가상 호스트에 적용됩니다.

  1. sudo nano /etc/apache2/conf-available/security.conf

이 파일에는 서버 문제가 있을 때 사용해야 하는 연락처 이메일을 지정할 수 있는 서버 서명 지시문이 포함되어 있습니다. 기본 옵션을 On에서 EMail로 변경하여 서버 관리자 이메일 주소를 표시할 수 있습니다. 이 설정을 조정하는 경우 메일을 받을 의향이 있는지 확인하십시오.

…
ServerSignature EMail

CTRL+X를 눌러 파일을 종료합니다. 구성 파일을 편집한 후 변경 사항을 확인하라는 메시지가 표시됩니다. Y를 눌러 변경 사항을 파일에 저장하거나 N을 눌러 취소합니다.

가상 호스트 파일 내에서 이 요청이 처리해야 하는 도메인 이름 또는 IP 주소를 지정하는 ServerName 지시문을 추가할 수 있습니다. 이것은 ServerName 값과 일치하는 경우 기본 정의를 재정의할 수 있도록 가상 호스트에 특이성을 추가하는 옵션입니다.

다음 명령을 실행하여 가상 호스트 파일을 열고 your_domain 변수를 실제 도메인 이름으로 바꾸십시오.

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

your_domainServerName 지시문에 추가합니다.

…
ServerName your_domain

마찬가지로 ServerAlias 지시문을 사용하여 가상 호스트를 둘 이상의 이름에 적용할 수도 있습니다. 이는 동일한 콘텐츠에 도달할 수 있는 대체 경로를 제공합니다. 이에 대한 좋은 사용 사례는 www가 앞에 오는 동일한 도메인을 추가하는 것입니다.

…
ServerAlias www.your_domain.com

DocumentRoot 지시문은 이 가상 호스트에 대해 요청된 콘텐츠가 위치할 위치를 지정합니다. Ubuntu에서 기본 가상 호스트는 /var/www/ 디렉터리 외부의 콘텐츠를 제공하도록 설정됩니다.

…
DocumentRoot /var/www/your_domain/public_html

디렉토리 정의

가상 호스트 정의에는 서버가 파일 시스템 내의 여러 디렉토리를 처리하는 방법에 대한 정의가 있습니다. Apache는 가장 짧은 것부터 가장 긴 순서로 이러한 모든 방향을 적용하므로 이전 옵션을 재정의할 기회가 다시 있습니다.

다음 명령으로 apache2.conf 파일을 엽니다.

  1. sudo nano /etc/apache2/apache2.conf
…
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
…

첫 번째 디렉토리 정의는 / 또는 루트 디렉토리에 대한 규칙을 적용합니다. 이것은 파일 시스템에서 제공되는 모든 파일에 적용되므로 가상 호스트에 대한 기본 구성을 제공합니다. 이 파일에 포함된 몇 가지 유용한 주석과 함께 디렉토리 구성 옵션을 확인하십시오. 이 기본 구성은 후속 디렉터리 정의에서 달리 지정하지 않는 한 모든 콘텐츠에 대한 액세스를 거부합니다.

Require 지시문은 서버 내의 다른 리소스에 대한 액세스를 제한하거나 열 수 있습니다.

별칭 및 ScriptAlias 문

디렉터리 정의 앞에 Alias 또는 ScriptAlias 지시문이 오는 경우가 있습니다.

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Alias 지시문은 URL 경로를 디렉토리 경로에 매핑합니다. 예를 들어, your_domain에 대한 요청을 처리하는 가상 호스트에서 다음은 /usr/local/apache/content/ 내의 콘텐츠에 대한 액세스를 허용합니다. your_domain.com/content/로 이동할 때:

Alias “/content/” “/usr/local/apache/content/”

ScriptAlias 지시문은 동일한 방식으로 작동하지만 실행 가능한 구성 요소가 포함된 디렉토리를 정의하는 데 사용됩니다.

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

이전 섹션에서 설명한 대로 액세스 권한이 있는 디렉토리를 정의해야 합니다. 파일 편집을 완료한 후 CTRL+X를 눌러 파일을 종료합니다. 이 파일을 변경한 경우 Y를 눌러 변경 사항을 파일에 저장하거나 N을 눌러 구성을 변경하기 전의 파일을 그대로 둡니다.

사이트 및 모듈 활성화

요구 사항을 충족하는 가상 호스트 파일이 있으면 Apache에 포함된 도구를 사용하여 라이브 웹 사이트로 전환할 수 있습니다.

  1. sudo a2ensite your_domain

사이트를 활성화한 후 다음 명령을 실행하여 Apache에 구성 파일을 다시 로드하도록 지시하여 변경 사항이 전파되도록 합니다.

  1. sudo systemctl restart apache2

가상 호스트를 비활성화하기 위한 동반 명령도 있습니다. sites-enabled 디렉토리에서 심볼릭 링크를 제거하여 작동합니다. 예를 들어 가상 호스트 사이트를 활성화한 상태에서 기본 000-default 사이트를 비활성화할 수 있습니다.

  1. sudo a2dissite 000-default

a2enmoda2dismod 명령을 각각 사용하여 모듈을 활성화하거나 비활성화할 수 있습니다. 이러한 명령의 a2ensitea2dissite 버전과 동일한 방식으로 작동합니다. 예를 들어 info 모듈을 활성화하려면 다음 명령을 사용할 수 있습니다.

  1. sudo a2enmod info

마찬가지로 a2dismod 명령을 사용하여 모듈을 비활성화할 수 있습니다.

  1. sudo a2dismod info

구성 파일을 수정하고 모듈을 활성화 또는 비활성화한 후에는 Apache를 다시 시작해야 합니다.

결론

Apache는 다목적이며 매우 모듈식이므로 설정에 따라 구성 요구 사항이 달라집니다.