서버 운영/APM 서버 구축

[Ubuntu 20.04 - Apache2 서버] 000-default.conf의 기본값에 사용된 지시어 설명

씨실과 날실 2020. 10. 17. 09:00

 

[관련 게시물]

Ubuntu 20.04 LTS에서 APM 설치

2020/09/14 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 아파치(Apache2 설치

2020/09/16 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 마리아DB(MariaDB) 10.3 설치

2020/09/18 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - 마리아DB(MariaDB) 10.5 설치

2020/09/20 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - PHP 7.4 설치

2020/09/22 - [서버 운영/APM 서버 구축] - 우분투(Ubuntu) 20.04에서 APM 설치 - APM 설치 후 방화벽 설정

2020/09/24 - [서버 운영/APM 서버 구축] - MariaDB 10.4 이후의 계정 인증 관련 변화(unix_socket, mysql_native_password 인증 / 계정, 암호 및 전역 권한 정보 저장 테이블 변경 등)

2020/09/26 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 기본 환경 파일 설정 - apache2.conf 기본 설정

2020/09/28 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 기본 환경 파일 설정 - php.ini 기본 설정

 

Ubuntu 20.04에서 설치한 Apache2 서버 주요 설정 파일 원문

2020/09/30 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 목록

2020/10/05 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 원문 - Apache2

2020/10/07 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 원문 - PHP 7.4 - php.ini

Ubuntu 20.04에서 설치한 Apache2 서버 주요 설정 파일 내 지시어 설명

2020/10/09 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] apache2.conf의 기본값에 사용된 지시어 설명

2020/10/11 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] ports.conf 의 기본값에 사용된 지시어 설명

2020/10/13 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] envvars의 기본값에 사용된 지시어 설명

2020/10/15 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] security.conf의 기본값에 사용된 지시어 설명

2020/10/17 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] 000-default.conf의 기본값에 사용된 지시어 설명

2020/10/19 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] default-ssl.conf의 기본값에 사용된 지시어 설명


Ubuntu 20.04에서 phpMyAdmin 설치 및 설정

2021.02.20 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 01 - 저장소 설치

2021.03.15 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 02 - Apache 서버 관리자를 위한수동 설치(버전 5.1.0 기준)

2021.03.17 - [서버 운영/APM 서버 구축] - 우분투 20.04에서 phpMyAdmin 설치 03 - 보안강화 작업

2021.03.19 - [서버 운영/APM 서버 구축] - phpMyAdmin 설치 04 - 웹호스팅 사용자를 위한 수동 설치(버전 5.1.0 기준)

2021.03.21 - [서버 운영/APM 서버 구축] - phpMyAdmin 설치 05 - setup 페이지를 통한 구성 파일 생성

Ubuntu 18.04 LTS에서 APM 설치

2018/11/09 - [서버 운영/APM 서버 구축] - Apache 서버 설치

2018/11/14 - [서버 운영/APM 서버 구축] - MariaDB 설치

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 1

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 2 - ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded

2018/11/16 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 3

2018/11/19 - [서버 운영/APM 서버 구축] - PHP7 설치

2018/11/21 - [서버 운영/APM 서버 구축] - 서버 환경 파일 수정 - php.ini, apache2.conf

 

Ubuntu 18.04 LTS에서 MariaDB 백업 및 업그레이드

2019/01/15 - [서버 운영/APM 서버 구축] - MariaDB & MySQL 백업과 복원 - Nextcloud 14

2019/06/27 - [서버 운영/APM 서버 구축] - MariaDB 업그레이드 (Upgrading from MariaDB 10.3 to MariaDB 10.4)

 

Ubuntu 18.04 LTS에서 PHP 버전 전환

2019/07/05 - [서버 운영/APM 서버 구축] - Apache와 Shell에서 PHP 버전 전환하기(How to Switch between Multiple PHP Version)

 

Ubuntu 18.04 LTS에서 phpmyadmin 설치 및 운용

2018/11/23 - [서버 운영/APM 서버 구축] - phpmyadmin 설치 - APT 패키지 관리자를 통한 설치

2019/06/18 - [서버 운영/APM 서버 구축] - APT 패키지 관리자를 통해 설치한 phpMyAdmin 업그레이드 방법(업그레이드 버전 4.9.0.1)

2019/07/01 - [서버 운영/APM 서버 구축] - phpMyAdmin 수동 설치 01 - 일반 설치

2019/07/03 - [서버 운영/APM 서버 구축] - phpMyAdmin 수동 설치 02 - 심볼릭 링크를 이용한 보안 접속

2019/06/16 - [서버 운영/APM 서버 구축] - phpMyAdmin 4.6.6deb5와 PHP 7.2 간 호환성 문제 해결 - Warning in ./libraries/sql.lib.php#613

 

XAMPP 설치 및 운용

2019/04/20 - [서버 운영/서버 구축 꾸러미] - XAMPP에 대하여(버전 7.1.28 / 7.2.17 / 7.3.4)

2019/04/22 - [서버 운영/서버 구축 꾸러미] - XAMPP for Windows 7.3.4 인스톨러 설치

2019/04/25 - [서버 운영/서버 구축 꾸러미] - XAMPP for Windows 설정

2019/06/03 - [서버 운영/서버 구축 꾸러미] - XAMPP 포터블(portable) 사용법

2019/06/05 - [서버 운영/서버 구축 꾸러미] - XAMPP for Linux 4.3.5 설치 및 사용법

 

서버 운영을 위한 관련 연재글

2018/11/07 - [리눅스/Ubuntu] - 방화벽 설정 - ufw

2018/11/12 - [서버 운영/버추얼박스(VirtualBox)] - 가상머신(Virtualbox) 내 서버 외부접속

2019/01/05 - [미디어위키/미디어위키 설치 및 관리] - 호스트 컴퓨터에서 가상머신 내 미디어위키 접속 및 작업을 위한 버추얼박스 포트포워딩 설정

2019/03/15 - [서버 운영/APM 서버 구축] - PHP 7.3으로의 업그레이드 및 사용 연기 권장 안내 - PHP Notice: compact(): Undefined variable:

 

 

 

000-default.conf 파일에 대한 개략적인 설명

Apache 2 서버 개발진이 제공한 가상호스트 기본 설정값 파일입니다. 이 파일을 바탕으로 운영하고자 하는 서버 환경에 맞춰 지시어 등을 첨삭 및 수정하면 됩니다.

 

000-default.conf 원문

2020/09/30 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 목록

2020/10/05 - [서버 운영/APM 서버 구축] - 우분투 20.04 APM 서버 주요 환경 파일 원문 - Apache2

 

지시어 사용 안내 설명 주석 제거 후 원문

<VirtualHost *:80>
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    #LogLevel info ssl:warn

    ErrorLog $/error.log
    CustomLog $/access.log combined

    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

 


 

<VirtualHost *:80> ~ </VirtualHost>

ServerName 지시문은 서버가 자신을 식별하는 데 사용하는 요청 체계(프로토콜), 호스트 이름 및 포트를 설정합니다. 리디렉션 URL을 만들 때 사용됩니다.

<VirtualHos> ~ </VirtualHost> 구문으로 이루어진 가상 호스트 섹션에서 ServerName은 이 가상 호스트와 일치하기 위해 요청의 Host : 헤더에 나타나야하는 호스트 이름을 지정합니다.

기본 가상 호스트 (000-default.conf)의 경우 이 값은 최종 수단 호스트로 사용되기 때문에 결정적이지 않습니다. 따라서 추가 가상 호스트에 대해 명시적으로 설정해야합니다.

 

지시어 : VirtualHost

요약 설명 : 특정 호스트 이름 또는 IP 주소에만 적용되는 지시어 포함

구문 : <VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>

기본값 :

사용 장소 : 주서버 설정(server config) - httpd.conf 또는 apache2.conf

상태 : Core

모듈 : core

<VirtualHost> 컨테이너 섹션은 특정 가상 호스트에만 적용되는 지시어들을 하나의 그룹으로 묶는 데 사용됩니다. 서버가 특정 가상 호스트에서 문서에 대한 요청을 받으면 <VirtualHost> 섹션에 포함된 구성 지시어를 사용합니다.

주소는 다음 중 하나일 수 있으며 선택적으로 뒤에 쌍점(:)과 포트 번호 (또는 *)가 올 수 있습니다.

가상호스트의 IP 주소

가상호스트의 IP 주소에 대한 전체 도메인 이름(FQDN - A fully qualified domain name)

* 문자는 와일드 카드 역할을하며 모든 IP 주소와 일치합니다. _default_ 문자열은 * 문자의 별명입니다.

Apache 개발진은 FQDN을 이용한 VirtualHost 지정은 권장하지 않고 있습니다.

 

<VirtualHost 10.1.2.3:80>
  ServerAdmin webmaster@host.example.com
  DocumentRoot "/www/docs/host.example.com"
  ServerName host.example.com
  ErrorLog "logs/host.example.com-error_log"
  TransferLog "logs/host.example.com-access_log"
</VirtualHost>

일반적인 IP 주소(IPv4 address) 지정의 예시입니다.

 

<VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80>
  ServerAdmin webmaster@host.example.com
  DocumentRoot "/www/docs/host.example.com"
  ServerName host.example.com
  ErrorLog "logs/host.example.com-error_log"
  TransferLog "logs/host.example.com-access_log"
</VirtualHost>

IPv6 주소의 경우 IPv4 주소와 같은 방식으로 포트번호를 바로 붙일 수 없습니다. 위 예시와 같이 IPv6 주소를 [    ](대괄호)로 감싼 다음 :port number를 붙여주어야 합니다.

 

각 가상 호스트는 각기 다른 IP 주소, 다른 포트 번호 또는 다른 호스트 이름으로 할당되어야 합니다.

전자(다른 IP 주소, 다른 포트 번호)의 경우 서버 시스템은 여러 주소에 대한 IP 패킷을 허용하도록 구성되어야 합니다.

<VirtualHost> 지시어는 Apache httpd가 수신하는 주소에 영향을 주지 않습니다. Listen 지시어를 사용하여 Apache httpd가 올바른 주소에서 수신하는지 확인해야 합니다.

 

각 <VirtualHost> 섹션마다 ServerName을 지정해야합니다. 없는 경우 "기본"서버 구성의 ServerName이 상속됩니다.

요청이 수신되면 서버는 먼저 로컬 IP 주소 및 포트 조합만을 기반으로 가장 일치하는 <VirtualHost>에 이를 매핑합니다. 와일드카드 문자를 사용하지 않은 지정은 더 높은 우선 순위를 갖습니다. 만약 IP와 포트를 기준으로 일치하는 항목이 전혀 발생하지 않으면 "기본"서버 구성이 사용됩니다.

IP 주소 및 포트를 기준으로 일치하는 가상 호스트가 여러 개 있는 경우 서버는 요청된 호스트 이름을 기반으로 가상 호스트를선택합니다.

일치하는 이름 기반 가상 호스트가 없는 경우 IP 주소와 일치하는 가상 호스트들 중 첫 번째로 기술된 가상 호스트가 사용됩니다.

결과적으로 지정된 IP 주소 및 포트 조합에 대해 첫 번째로 나열된 가상 호스트가 해당 IP 및 포트 조합에 대한 기본 가상 호스트입니다.

 

보다 자세한 내용은 아래 링크를 참고하시기 바랍니다.

https://httpd.apache.org/docs/2.4/mod/core.html#virtualhost

 


 

 

#ServerName www.example.com

ServerName 식별자로 호스트명인 www.example.com을 사용합니다.

 

지시어 : ServerName

요약 설명 : 서버가 자신을 식별하는 데 사용하는 호스트 이름 및 포트

구문 : ServerName [scheme://]domain-name|ip-address[:port]

기본값 :

사용 장소 : 주서버 설정(server config) - httpd.conf 또는 apache2.conf

   가상호스트 (virtual host) 섹션 안

상태 : Core

모듈 : core

ServerName 지시어는 서버가 자신을 식별하는 데 사용하는 요청 체계, 호스트 이름 및 포트를 설정합니다.

ServerName 지시어는 이름 기반 가상 호스트를 사용할 때 가상 호스트를 고유하게 식별하는 데 사용됩니다 (ServerAlias와 함께 사용 가능합니다.).

 
ServerName 지시어는 서버 정의 내 어디에나 나타날 수 있습니다. 그러나 이 지시어의 출현은 식별 이름을 (해당 서버 내)을 재정의합니다.
 

ServerName이 지정되지 않은 경우 서버는 먼저 운영 체제에 시스템 호스트 이름에 대해 묻고 실패할 경우 시스템에 있는 IP 주소에 대해 역방향 조회를 수행하여 클라이언트 명시적 호스트 이름을 추론하려고합니다.

ServerName에 포트가 지정되지 않은 경우 서버는 수신 포트를 사용합니다.

 

최적의 안정성과 예측 가능성을 위해 ServerName 지시어를 사용하여 명시적인 호스트 이름과 포트를 지정하는 것이 좋습니다.

보다 자세한 내용은 아래 링크를 참고하시기 바랍니다.

https://httpd.apache.org/docs/2.4/mod/core.html#servername

 


 

ServerAdmin webmaster@localhost

 

지시어 : ServerAdmin

요약 설명 : 클라이언트쪽으로 보낼 오류 메시지에 포함할 서버 관리자 연락처

구문 : ServerAdmin email-address|URL

기본값 :

사용 장소 : 주서버 설정(server config) - httpd.conf 또는 apache2.conf

   가상호스트 (virtual host) 섹션 안

상태 : Core

모듈 : core

ServerAdmin 지시어는 서버가 클라이언트에 반환하는 오류 메시지에 포함할 연락처 주소를 설정합니다. 예를 들어 지시어 serversignature 설정값이 Email로 지정되어 있는 경우 지시어 ServerAdmin에 지정된 값이 표시됩니다.

httpd가 제공된 인수를 URL로 인식하지 못하면 이메일 주소라고 가정하고 지정값 앞에 mailto :를 추가합니다. 그런데 이러한 가정을 하는 CGI 스크립트가 많기 때문에 실제로 이메일 주소를 사용하는 것이 좋습니다. URL을 사용하려면 사용자가 제어하는 다른 서버를 가리켜야 합니다. 그렇지 않으면 오류 발생시 사용자가 서버 관리자에게 연락하지 못하게 됩니다. 따라서 이 지시어에는 서버 관리를 위한 전용 주소를 설정하는 것이 좋습니다.

 

보다 자세한 내용은 아래 링크를 참고하시기 바랍니다.

https://httpd.apache.org/docs/2.4/mod/core.html#serveradmin

 


 

DocumentRoot /var/www/html

 

지시어 : DocumentRoot

요약 설명 : 웹에서 볼 수있는 기본 문서 트리를 형성하는 디렉터리

구문 : DocumentRoot directory-path

기본값 : DocumentRoot "/usr/local/apache/htdocs"

사용 장소 : 주서버 설정(server config) - httpd.conf 또는 apache2.conf

   가상호스트 (virtual host) 섹션 안

상태 : Core

모듈 : core

DocumentRoot 지시어는 httpd가 파일을 제공할 디렉터리를 설정합니다.

Alias와 같은 지시어와 일치하지 않는 한 서버는 요청된 URL의 경로를 문서 루트에 추가하여 문서 경로를 만듭니다.

DocumentRoot /var/www/html

예를 들어 웹문서 루트 디렉터리를 위와 같이 설정한 경우 http://example.com/index.html에 대한 액세스는 서버의 /var/www/html/index.html을 참조합니다.

DocumentRoot는 후행 슬래시 없이 지정해야 합니다.

 

보다 자세한 내용은 아래 링크를 참고하시기 바랍니다.

https://httpd.apache.org/docs/2.4/mod/core.html#documentroot

 


 

#LogLevel info ssl:warn


ssl 모듈의 LogLevel을 설정합니다.

2020/10/09 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] apache2.conf의 기본값에 사용된 지시어 설명

자세한 설명은 위 링크를 참고하시기 바랍니다.

 


 

ErrorLog $/error.log

서버의 오류를 APACHE_LOG_DIR 변수가 지정한 디렉터리 안의 error.log 파일에 기록합니다.

 

2020/10/09 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] apache2.conf의 기본값에 사용된 지시어 설명

자세한 설명은 위 링크를 참고하시기 바랍니다.

 


 

CustomLog $/access.log combined

 

지시어 : CustomLog

요약 설명 : 로그 파일의 이름과 형식을 지정

구문 : CustomLog file|pipe format|nickname [env=[!]environment-variable]

기본값 :

사용 장소 : 주서버 설정(server config) - httpd.conf 또는 apache2.conf

   가상호스트 (virtual host) 섹션 안

상태 : Base

모듈 : mod_log_config

CustomLog 지시어는 서버에 대한 요청을 기록하는 데 사용됩니다. 로그 형식이 지정되고, 로깅은 환경 변수를 사용하여 요청 특성에 따라 선택적으로 조건부로 만들 수 있습니다.

 

첫 번째 인수는 로그가 기록 될 위치를 지정하는데 다음 두 가지 유형의 값 중 하나를 사용할 수 있습니다.

file

ServerRoot에 상대적인 파일 이름입니다.

 

pipe

파이프 문자 "|" 다음에 표준 입력에 대한 로그 정보를 수신할 프로그램 경로가 옵니다.

 

두번째 인수는 로그파일에 기록할 내용을 지정합니다. LogFormat으로 정의한 nickname을 사용하거나 직접 로그 형식 절에서 설명한 format 문자열을 사용할 수 있습니다.

예르 들어 아래 두 지시어는 같은 의미를 지닙니다.

# 직접 형식 문자열을 사용한 CustomLog
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"

 

# 형식 별칭을 사용한 CustomLog
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common

 

세 번째 인수는 선택 사항이며 특정 요청을 기록할지 여부를 제어합니다.

조건은 서버 환경에서 특정 변수의 존재(env=name) 또는 부재 (env=!name)일 수 있습니다. 또는 조건을 임의의 부울 표현식으로 표현할 수 있습니다. 조건이 충족되지 않으면 요청이 기록되지 않습니다.

환경 변수는 mod_setenvif 또는 mod_rewrite 모듈을 사용하여 요청별로 설정할 수 있습니다. 예를 들어 서버의 모든 GIF 이미지에 대한 요청을 별도의 로그 파일에 기록하고 메인 로그에는 기록하지 않으려면 다음을 사용할 수 있습니다.

SetEnvIf Request_URI \.gif$ gif-image
CustomLog "gif-requests.log" common env=gif-image
CustomLog "nongif-requests.log" common env=!gif-image

 

또는 이전 RefererIgnore 지시문의 동작을 재현하려면 다음을 사용할 수 있습니다.

SetEnvIf Referer example\.com localreferer
CustomLog "referer.log" referer env=!localreferer

 

보다 자세한 내용은 아래 링크를 참고하시기 바랍니다.

https://httpd.apache.org/docs/2.4/mod/mod_log_config.html#customlog

 


 

#Include conf-available/serve-cgi-bin.conf

conf-available/ 디렉터리의 모든 구성 파일은 전역 수준에서 활성화하거나 또는 비활성화할 수 있습니다. 그러나 특정 가상 호스트에 줄 하나를 추가함으로써 활성화하거나 비활성화할 수도 있습니다.

예를 들어 a2disconf 명령으로 전역 수준에서 비활성화한 후 위 구문을 추가하면 해당 가상 호스트에서만 CGI 구성을 활성화합니다.

 

2020/10/09 - [서버 운영/APM 서버 구축] - [Ubuntu 20.04 - Apache2 서버] apache2.conf의 기본값에 사용된 지시어 설명

자세한 내용은 위 링크를 참고하시기 바랍니다.