Ubuntu 또는 Debian VPS에서 Apache 웹 서버를 구성하는 방법
소개
Apache는 인터넷에서 가장 인기 있는 웹 서버 중 하나입니다. 모든 활성 웹 사이트의 절반 이상을 제공하는 데 사용됩니다. 콘텐츠를 제공할 실행 가능한 웹 서버가 많이 있지만 편재성 때문에 Apache의 작동 방식을 이해하는 것이 도움이 됩니다.
이 문서에서는 일부 일반 구성 파일과 그 안에서 제어할 수 있는 옵션을 살펴봅니다. 이 문서는 Apache 파일의 Ubuntu/Debian 레이아웃을 따르는데, 이는 다른 배포판이 구성 계층 구조를 구축하는 방식과 다릅니다.
전제 조건
Apache 구성 탐색을 시작하기 전에 서버에 Apache가 설치되어 있어야 합니다. Debian 10 자습서에 Apache 웹 서버를 설치하는 방법을 따라 방법을 배울 수 있습니다.
아파치 파일 계층
Apache는 기본 구성 파일을 /etc/apache2
폴더에 보관합니다. 다음 명령을 실행하면 이 폴더 내의 모든 파일이 나열됩니다.
- ls -f /etc/apache2
Outputenvars 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
를 사용합니다.
- sudo nano /etc/apache2/apache2.conf
Ubuntu 및 Debian에서 이 파일은 전역 정의를 구성하는 데 사용됩니다. 기본 서버 및 가상 호스트의 구성은 Include
지시문을 사용하여 처리됩니다.
이 파일에는 다양한 Include
및 IncludeOptional
문이 많이 있습니다. 이러한 지시문은 모듈 정의, 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 설치가 컴파일된 섹션을 상호 참조할 수 있습니다.
- apache2 -L
OutputCompiled 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 유형을 확인할 수 있습니다.
- a2query -M
Outputevent
출력은 event
MPM이 이 서버에서 사용됨을 나타냅니다. 설치에서 선택할 수 있는 항목이 여러 개일 수 있지만 하나만 선택할 수 있습니다.
가상 호스트 파일
기본 가상 호스트 선언은 sites-available/
디렉토리 내의 000-default.conf
파일에서 찾을 수 있습니다. 이 파일을 검사하여 가상 호스트 파일의 일반적인 형식에 대해 알아볼 수 있습니다.
다음 명령으로 파일을 엽니다.
- 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
을 의미합니다.
가상 호스트 구성 옵션
다음 옵션은 다른 하위 수준 하위 선언 외부의 가상 호스트 정의 내에서 설정됩니다. 전체 가상 호스트에 적용됩니다.
- sudo nano /etc/apache2/conf-available/security.conf
이 파일에는 서버 문제가 있을 때 사용해야 하는 연락처 이메일을 지정할 수 있는 서버 서명
지시문이 포함되어 있습니다. 기본 옵션을 On
에서 EMail
로 변경하여 서버 관리자 이메일 주소를 표시할 수 있습니다. 이 설정을 조정하는 경우 메일을 받을 의향이 있는지 확인하십시오.
…
ServerSignature EMail
…
CTRL+X
를 눌러 파일을 종료합니다. 구성 파일을 편집한 후 변경 사항을 확인하라는 메시지가 표시됩니다. Y
를 눌러 변경 사항을 파일에 저장하거나 N
을 눌러 취소합니다.
가상 호스트 파일 내에서 이 요청이 처리해야 하는 도메인 이름 또는 IP 주소를 지정하는 ServerName
지시문을 추가할 수 있습니다. 이것은 ServerName
값과 일치하는 경우 기본 정의를 재정의할 수 있도록 가상 호스트에 특이성을 추가하는 옵션입니다.
다음 명령을 실행하여 가상 호스트 파일을 열고 your_domain
변수를 실제 도메인 이름으로 바꾸십시오.
- sudo nano /etc/apache2/sites-available/your_domain.conf
your_domain
을 ServerName
지시문에 추가합니다.
…
ServerName your_domain
…
마찬가지로 ServerAlias
지시문을 사용하여 가상 호스트를 둘 이상의 이름에 적용할 수도 있습니다. 이는 동일한 콘텐츠에 도달할 수 있는 대체 경로를 제공합니다. 이에 대한 좋은 사용 사례는 www
가 앞에 오는 동일한 도메인을 추가하는 것입니다.
…
ServerAlias www.your_domain.com
…
DocumentRoot
지시문은 이 가상 호스트에 대해 요청된 콘텐츠가 위치할 위치를 지정합니다. Ubuntu에서 기본 가상 호스트는 /var/www/
디렉터리 외부의 콘텐츠를 제공하도록 설정됩니다.
…
DocumentRoot /var/www/your_domain/public_html
…
디렉토리 정의
가상 호스트 정의에는 서버가 파일 시스템 내의 여러 디렉토리를 처리하는 방법에 대한 정의가 있습니다. Apache는 가장 짧은 것부터 가장 긴 순서로 이러한 모든 방향을 적용하므로 이전 옵션을 재정의할 기회가 다시 있습니다.
다음 명령으로 apache2.conf
파일을 엽니다.
- 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
지시문이 오는 경우가 있습니다.
- 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에 포함된 도구를 사용하여 라이브 웹 사이트로 전환할 수 있습니다.
- sudo a2ensite your_domain
사이트를 활성화한 후 다음 명령을 실행하여 Apache에 구성 파일을 다시 로드하도록 지시하여 변경 사항이 전파되도록 합니다.
- sudo systemctl restart apache2
가상 호스트를 비활성화하기 위한 동반 명령도 있습니다. sites-enabled
디렉토리에서 심볼릭 링크를 제거하여 작동합니다. 예를 들어 가상 호스트 사이트를 활성화한 상태에서 기본 000-default
사이트를 비활성화할 수 있습니다.
- sudo a2dissite 000-default
a2enmod
및 a2dismod
명령을 각각 사용하여 모듈을 활성화하거나 비활성화할 수 있습니다. 이러한 명령의 a2ensite
및 a2dissite
버전과 동일한 방식으로 작동합니다. 예를 들어 info
모듈을 활성화하려면 다음 명령을 사용할 수 있습니다.
- sudo a2enmod info
마찬가지로 a2dismod
명령을 사용하여 모듈을 비활성화할 수 있습니다.
- sudo a2dismod info
구성 파일을 수정하고 모듈을 활성화 또는 비활성화한 후에는 Apache를 다시 시작해야 합니다.
결론
Apache는 다목적이며 매우 모듈식이므로 설정에 따라 구성 요구 사항이 달라집니다.