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

소개

아파치는 인터넷 상에서 가장 인기 있는 웹 서버 중 하나입니다. 현재 활성화된 웹 사이트의 절반 이상을 제공하는 데 사용됩니다. 콘텐츠를 제공할 수 있는 많은 유효한 웹 서버가 있지만, 아파치가 보편성을 갖고 있기 때문에 아파치가 어떻게 작동하는지 이해하는 것이 도움이 됩니다.

이 기사에서는 일반적인 구성 파일과 그 안에서 제어할 수 있는 옵션을 살펴보겠습니다. 이 기사는 다른 배포판이 구성 계층을 구성하는 방식과 다르게 우분투/데비안 레이아웃을 따를 것입니다.

전제 조건

우분투 버전 16.04 이하를 사용 중이라면, 우분투가 이러한 버전에 대한 지원을 더 이상 제공하지 않기 때문에 최신 버전으로 업그레이드하는 것이 좋습니다. 이 가이드 모음을 통해 우분투 버전을 업그레이드하는 데 도움을 받을 수 있습니다.

  • sudo 권한을 가진 루트가 아닌 사용자와 활성화된 방화벽이 있는 우분투 서버. 이러한 설정 방법에 대한 안내는 이 목록에서 자신의 배포판을 선택하고 초기 서버 설정 가이드를 따르십시오.

  • Apache 구성을 탐색하기 전에 서버에 Apache를 설치해야합니다. 우분투에 Apache 웹 서버를 설치하는 방법은 “우분투에 Apache 웹 서버 설치하기” 튜토리얼을 따라 배울 수 있습니다. 22.04 / 20.04 / 18.04 또는 데비안 10에 Apache 웹 서버 설치하기 튜토리얼을 따를 수도 있습니다.

우분투에서 아파치 웹 서버 구성하는 단계 5

  1. 아파치 파일 계층
  2. Apache2.conf 파일 살펴보기
  3. 아파치 전역 구성 설정
  4. 아파치 가상 호스트 파일 설정
  5. 사이트 및 모듈 활성화

단계 1: 아파치 파일 계층

아파치는 기본 구성 파일을 /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 디렉토리로 링크하여 가능합니다. 아파치가 시작되거나 다시로드될 때, 이는 전체 구성을 컴파일하는 동안 sites-enabled 디렉토리 내부의 구성 파일과 링크를 읽습니다.
  • conf-available/conf-enabled/: 이 디렉토리에는 가상 호스트 구성 파일과 연결되지 않은 구성 조각이 포함됩니다.
  • mods-enabled/mods-available/: 이러한 디렉토리는 선택적으로 로드할 수 있는 모듈을 정의합니다. 이 디렉토리에는 두 가지 구성 요소가 포함되어 있습니다: 특정 모듈을 로드하는 조각을 포함하는 .load로 끝나는 파일과 이러한 모듈의 구성을 저장하는 .conf로 끝나는 파일입니다.

아파치 구성은 단일 거대한 파일에서 이루어지지 않고, 대신 새 파일을 필요에 따라 추가하고 수정할 수 있는 모듈식 디자인으로 이루어집니다.

단계 2: Apache2.conf 파일 살펴보기

Apache 서버의 주요 구성 세부 정보는 /etc/apache2/apache2.conf 파일에 저장됩니다.
이 파일은 세 가지 주요 섹션으로 나뉩니다:

  • 전역 Apache 서버 프로세스의 구성
  • 기본 서버의 구성
  • 가상 호스트의 구성.

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

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

Ubuntu 및 Debian에서는 이 파일이 전역 정의를 구성하는 데 사용됩니다. 기본 서버 및 가상 호스트의 구성은 Include 지시문을 사용하여 처리됩니다.
Include 지시문을 사용하면 Apache가 다른 구성 파일을 현재 파일로 읽어들여 지시문이 나타나는 위치에 동적으로 Apache가 시작될 때 포괄적인 구성 파일을 생성합니다.

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

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

단계 3: 아파치 전역 구성 설정

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

Timeout

기본적으로 이 매개변수는 300으로 설정됩니다. 이는 서버가 각 요청을 충족하는 데 최대 300초가 소요된다는 것을 의미합니다.
이 매개변수는 안전하게 30에서 60초 사이의 값으로 낮출 수 있습니다.

KeepAlive

이 옵션은 On으로 설정되어 있으면 각 연결이 클라이언트로부터의 여러 요청을 처리하기 위해 열려 있는 상태로 유지됩니다.
이것이 Off으로 설정되어 있으면 각 요청은 새로운 연결을 설정해야 하며, 이는 설정 및 트래픽 상황에 따라 상당한 오버헤드를 초래할 수 있습니다.

MaxKeepAliveRequests

이는 각 연결이 죽기 전에 처리할 수 있는 별도의 요청 수를 제어합니다. 이 숫자를 높게 유지하면 Apache가 각 클라이언트에게 콘텐츠를 더 효과적으로 제공할 수 있습니다.
기본 설정은 100으로 되어 있습니다. 이 값을 0으로 설정하면 Apache가 각 연결에 대해 무제한 양의 요청을 처리할 수 있습니다.

KeepAliveTimeout

이 설정은 마지막 요청을 완료한 후 다음 요청을 기다리는 시간을 지정합니다. 시간 초과 임계값에 도달하면 연결이 종료됩니다.
이는 다음에 콘텐츠가 요청될 때, 서버가 방문 중인 페이지를 구성하는 콘텐츠를 처리하기 위해 새로운 연결을 설정할 것을 의미합니다. 기본값은 5로 설정되어 있습니다.

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

다중 처리 모듈

A Multi-Processing Module (MPM) extends Apache’s modular design. MPMs are responsible for listening, directing, and handling different network requests. You can cross-reference which section your Apache installation was compiled in with using the following command:

  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

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

  1. a2query -M
Output
event

출력에서 이 서버에서 event MPM이 사용된 것을 확인할 수 있습니다. 설치된 시스템에는 여러 개의 MPM이 있을 수 있지만 선택할 수 있는 것은 하나뿐입니다.

단계 4: Apache 가상 호스트 파일 업데이트

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

다음 명령을 사용하여 파일을 엽니다:

  1. sudo nano /etc/apache2/sites-available/000-default.conf
/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을 의미합니다.
그러나 이것은 이 포트에서 서버로의 각 요청을 반드시 처리한다는 것을 의미하지는 않습니다. Apache는 요청과 가장 구체적인 가상 호스트 정의를 사용합니다. 더 구체적인 정의가 있다면 이 정의를 대체할 수 있습니다. 파일을 확인한 후 CTRL+X를 눌러 닫을 수 있습니다.

Apache Virtual Host Configuration

다음 옵션들은 다른 하위 선언 내부가 아닌 가상 호스트 정의 내에서 설정됩니다. 이들은 전체 가상 호스트에 적용됩니다.
먼저 conf-available/ 디렉터리 내의 security.conf 파일을 엽니다:

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

이 파일에는 서버 문제 발생 시 사용할 연락 이메일을 지정할 수 있는 Server Signature 지시문이 포함되어 있습니다. 이 설정을 변경하여 기본 옵션인 OnEMail로 바꾸면 서버 관리자 이메일 주소가 표시됩니다. 이 설정을 조정하면 메일을 수신할 의사가 있어야 합니다:

/etc/apache2/conf-available/security.conf
…
ServerSignature EMail

파일을 종료하려면CTRL+X를 누릅니다. 구성 파일을 편집한 후에는 변경 사항을 확인하라는 메시지가 나타납니다. 파일에 변경 사항을 저장하려면 Y를 누르고, 변경 사항을 폐기하려면 N을 누릅니다.

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

다음 명령을 실행하여 가상 호스트 파일을 엽니다. 이때 your_domain 변수를 실제 도메인 이름으로 교체하세요:

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

your_domainServerName 지시문에 추가하십시오:

/etc/apache2/sites-available/your_domain.conf
…
ServerName your_domain

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

/etc/apache2/sites-available/your_domain.conf
…
ServerAlias www.your_domain.com

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

/etc/apache2/sites-available/your_domain.conf
…
DocumentRoot /var/www/your_domain/public_html

디렉토리 정의

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

다음 명령을 사용하여 apache2.conf 파일을 엽니다:

  1. sudo nano /etc/apache2/apache2.conf
/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 지시문은 서버 내의 다른 리소스에 대한 액세스를 제한하거나 열 수 있습니다.
AllowOverride 지시문은 콘텐츠 디렉토리에 배치된 경우 .htaccess 파일이 설정을 무시할 수 있는지 여부를 결정하는 데 사용됩니다. 기본적으로 이는 허용되지 않지만 다양한 상황에서 활성화하는 것이 유용할 수 있습니다.
이 파일의 내용을 검토한 후에는 CTRL+X를 눌러 닫을 수 있습니다.

Alias 및 ScriptAlias 문

디렉토리 정의는 때로 Alias 또는 ScriptAlias 지시문으로 시작됩니다.
이 명령을 사용하여 가상 호스트 구성 파일을 열고 your_domain 변수를 도메인 이름으로 바꿉니다:

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

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

/etc/apache2/sites-available/your_domain.conf
Alias “/content/” “/usr/local/apache/content/”

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

/etc/apache2/sites-available/your_domain.conf
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

이전 섹션에서 논의한 대로 액세스 권한이 있는 디렉토리를 정의하는 것을 기억하세요. 파일을 편집한 후에는 CTRL+X를 눌러 파일을 종료하세요. 이 파일에 변경 사항을 가했다면, 파일에 변경 사항을 저장하려면 Y를 누르거나 구성 변경 전의 파일로 돌아가려면 N을 누르세요.

단계 5: 사이트 및 모듈 활성화

요구 사항을 충족하는 가상 호스트 파일이 있으면 Apache와 함께 제공되는 도구를 사용하여 실제 웹 사이트로 전환할 수 있습니다.
기존의 sites-available 디렉토리에 있는 파일에 대한 sites-enabled 디렉토리에 심볼릭 링크를 생성하려면 다음 명령을 사용하세요. 자신의 가상 호스트 사이트 구성 파일 이름으로 your_domain을(를) 대체해야 합니다:

  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는 다양하고 매우 모듈화되어 있으므로 설정 요구 사항은 설정에 따라 다릅니다.
위의 몇 가지 일반적인 사용 사례를 검토한 후에는 주요 구성 파일이 어떤 용도로 사용되는지와 서로 어떻게 상호 작용하는지에 대해 잘 이해하게 될 것입니다. 특정 구성 옵션에 대해 알아야 할 경우, 제공된 파일에는 주석이 잘 달려 있으며 Apache는 훌륭한 문서를 제공합니다. 이제 구성 파일이 덜 혼란스럽지 않고 귀하의 요구에 맞게 실험하고 수정하는 데 더욱 편안해질 것입니다.

Source:
https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debian-vps