블로그로 돌아가기

Ubuntu 또는 Debian VPS에서 Apache 웹 서버 설정하기

Ubuntu 또는 Debian VPS에서 Apache 웹 서버 설정하기

소개

Apache는 현재 세계에서 가장 널리 사용되는 웹 서버입니다. 20년 전에 개발되어 현재는 Apache Software Foundation에서 관리하는 오픈 소스 소프트웨어입니다. 2020년 9월 기준으로 전 세계 모든 웹사이트 트래픽의 35%.

를 처리하고 있는 것으로 추정됩니다. 개발자들은 속도, 보안, 신뢰성, 견고함, 그리고 사용자 정의의 용이성 때문에 Apache를 선호합니다. 또한 Apache는 다양한 확장 기능과 모듈을 설치할 수 있어 많은 환경의 요구 사항을 충족할 수 있습니다. 이는 개발자와 서버 관리자가 다양한 목적에 맞게 수정할 수 있는 일련의 설정 덕분에 가능합니다. 이 튜토리얼에서는 Ubuntu 및 Debian 서버에서 다양한 결과에 영향을 미칠 수 있는 일반적인 설정 파일과 옵션에 대해 안내해 드리겠습니다.

DebianUbuntu는 가장 선호되는 서버 운영 체제 중 하나입니다. 이 둘은 많은 유사점을 가지고 있습니다. 예를 들어, 둘 다 수동 설치를 위해 APT 패키지 관리자DEB 패키지를 사용합니다. 이들은 Apache 설정과 디렉터리 구조를 유사하게 처리합니다. 따라서 두 운영 체제 중 어느 것을 사용하더라도 이 튜토리얼을 따라 하실 수 있습니다. 먼저, 몇 단계만으로 Ubuntu 서버를 설정하는 이 튜토리얼.

을 따라 하실 수 있습니다. 다음으로, sudo 권한이 있는 non-root 사용자로 로그인하고 시작해 보겠습니다!

Ubuntu 및 Debian에 Apache를 설치하는 방법

서버에 아직 Apache가 설치되어 있지 않다면, 명령 하나로 쉽게 설치할 수 있습니다. 먼저, 업데이트 명령을 실행합니다:

그런 다음, 다음 명령을 실행하여 Apache를 설치할 수 있습니다:

설치가 완료되면, 다음 명령을 사용하여 설치된 버전을 확인할 수 있습니다:

이 튜토리얼을 작성할 당시의 버전은 다음과 같았습니다:

Apache Web Server

그 후, 서버의 IP 주소나 도메인 이름으로 접속해 보세요. 기본 Apache 인덱스 페이지를 볼 수 있을 것입니다:

Apache Web Server

Ubuntu 및 Debian 배포판의 Apache 파일 계층 구조

Ubuntu와 Debian 배포판은 모두 apt 패키지 관리자를 사용합니다. 마찬가지로 패키지를 설치하면 유사한 파일 계층 구조가 생성됩니다. 이 경우, Ubuntu와 Debian 모두에서 Apache는 설정 파일을 “/etc/apache2” 디렉터리 내에 보관합니다. 다음 명령을 사용하여 해당 디렉터리로 이동하고 디렉터리의 내용을 나열해 보세요:

아래 스크린샷에서 명령의 출력을 확인할 수 있습니다:

screenshot

Apache 서버 설정을 구성할 때 익숙해져야 할 여러 파일과 하위 디렉터리를 볼 수 있습니다. 이에 대한 설명은 다음과 같습니다:

  • apache2.conf – Apache 서버의 메인 설정 파일입니다. 또한 모든 기본 설정이 포함되어 있습니다. 거의 모든 설정을 이 파일 내에서 수행할 수 있지만, 단순성을 유지하고 이 기본 파일이 손상되는 것을 방지하기 위해 항상 별도의 지정된 파일을 사용하는 것이 권장됩니다.
  • conf-available – 아직 어떤 모듈과도 연결되지 않은 추가적인 로컬 설정 파일 및 다른 애플리케이션의 파일이 포함된 디렉터리입니다. 이 디렉터리의 설정은 활성화하지 않으면 적용되지 않습니다. a2enconf 명령을 통해 설정 파일을 활성화할 수 있습니다. 이 디렉터리의 내용은 다음과 같습니다:

Apache Web Server

  • conf-enabled – 해당 모듈과 연결된 추가적인 로컬 설정 및 다른 애플리케이션의 설정 파일이 포함된 디렉터리입니다. 이 디렉터리의 설정 파일은 활성화되어 있으며 Apache의 동작에 영향을 미칩니다. a2disconf 명령을 사용하여 설정 파일을 비활성화할 수 있습니다. 이 디렉터리의 내용은 다음과 같습니다:

conf-enabled

  • envvars – Apache2의 환경 변수가 포함된 파일입니다. 이 파일의 변수는 Apache에만 영향을 미치며 Linux 시스템과는 관련이 없습니다. 파일의 내용은 다음과 같습니다:

envvars

  • magic – 파일의 MIME 유형을 결정하기 위한 지침이 포함된 파일입니다. 서버가 파일의 유형을 결정하는 데 도움을 줍니다.
  • mods-available – 모듈을 로드하고 구성하기 위한 설정 파일이 포함된 디렉터리입니다. 하지만 아직 활성화되지 않았습니다. 다음을 사용하여 활성화할 수 있습니다: a2enmod 명령어.
  • mods-enabled – 모듈을 로드하고 구성하기 위한 설정 파일이 포함된 디렉터리입니다. 이 디렉터리의 설정은 이미 활성화되어 있으며 해당 모듈에 링크되어 있습니다. 다음을 사용하여 모듈을 비활성화할 수 있습니다: a2dismod 명령어. 
  • ports-conf – 가상 호스트에 사용할 수 있는 포트와 아파치(Apache)가 대기(listening)하는 TCP 포트를 지정하는 파일입니다.
  • sites-available – 아파치 가상 호스트에 사용할 수 있는 설정 파일이 포함된 디렉터리입니다. 가상 호스트를 통해 아파치는 서로 다른 웹사이트를 서비스할 수 있습니다. 이 디렉터리의 파일은 아직 활성화되지 않았습니다. 다음 명령어로 가상 호스트 파일을 활성화할 수 있습니다: a2ensite.
  • sites-enabled – 활성화된 가상 호스트 설정 파일이 포함된 디렉터리입니다. 보통 sites-available 디렉터리에 있는 파일에 대한 심볼릭 링크를 포함하고 있습니다. 다음 명령어를 사용하여 가상 호스트 파일을 비활성화할 수 있습니다: a2dissite.

아파치 설정 파일의 모듈식 설계를 통해 필요에 따라 파일을 수정하고 추가할 수 있습니다.

Apache2.conf 파일의 내용

“에 위치한 파일인 /etc/apache2/apache2.conf”은 아파치의 주요 설정 파일들을 포함하고 있습니다. 구체적으로는 서버에 지시를 내리는 설정 지시어들이 포함되어 있습니다. 이 파일은 다음을 정의하는 세 개의 섹션으로 구성됩니다: 전역 서버(global server) 프로세스 설정, 기본 서버(default server) 설정, 그리고 가상 호스트(virtual hosts) 설정.

우분투(Ubuntu) 및 데비안(Debian) 시스템에서 이 파일의 대부분은 전역 서버 프로세스 설정을 포함하고 있습니다. 파일 아래쪽에서는 “Include” 지시어를 사용하여 기본 서버 및 가상 호스트 설정을 찾을 수 있습니다. 아파치는 “Include” 지시어를 사용하여 다른 설정 파일을 읽은 다음, 지시어가 나타나는 위치부터 현재 설정 파일에 포함시킵니다. 이 작업은 아파치 서버가 시작될 때 수행됩니다.

apache2.conf 파일의 맨 아래로 스크롤하면 여러 개의 include 지시어가 보일 것입니다. 이 지시어들은 mods-enabled 디렉터리의 모듈 정의, ports.conf 파일, conf-enabled 디렉터리의 로컬 설정, 그리고 가상 호스트’의 설정을 sites-enabled 디렉터리에서 로드합니다.

전역 서버 설정 섹션

전역 서버 설정 섹션에는 아파치가 전역적으로 작동하는 방식을 제어하는 설정과 지시어가 포함되어 있습니다. 여기에는 아파치의 동작을 변경하기 위해 값을 수정할 수 있는 몇 가지 지시어가 있습니다. 그 중 몇 가지를 살펴보겠습니다:

  • Timeout – 이 지시어는 서버가 요청을 처리하는 데 걸리는 최대 시간을 지정합니다. 기본값은 300초이며, 더 빠른 응답이 필요한 앱을 개발하는 경우 이 값은 너무 높을 수 있습니다. 서버에 리소스가 충분하다면 이 값을 더 작은 값으로 변경할 수 있습니다.
  • KeepAlive – 동일한 클라이언트의 여러 요청을 처리하기 위해 각 연결을 열린 상태로 유지하도록 지정합니다. 기본값은 “On”으로 설정되어 있습니다. 하지만 “Off”로 설정하면 동일한 클라이언트의 요청이더라도 매번 새로운 연결을 수립해야 하므로 서버에 심각한 과부하가 발생할 수 있습니다.
  • MaxKeepAliveRequests – 단일 지속 연결이 끊어지기 전에 허용할 최대 요청 수를 제어합니다. 무제한 연결을 허용하려면 값을 0으로 설정하십시오. 최대 성능과 효율성을 얻으려면 이 값을 가능한 가장 높게 설정하십시오.
  • KeepAliveTimeout – 마지막 요청 이후 연결이 끊어지기 전에 동일한 클라이언트로부터 다음 요청을 대기할 최대 시간(초)을 결정합니다. 기본값은 5초입니다. 이 시간이 경과하면 다음 요청 시 요청을 처리하기 위해 새로운 연결이 생성됩니다.
  • HostnameLookups – DNS 조회를 활성화할지 여부를 결정합니다. 기본값은 off입니다. 이를 활성화하면 모든 요청마다 네임서버 조회가 최소 한 번 이상 발생하여 서버 성능에 매우 부정적인 영향을 미치게 됩니다.

기본 가상 호스트 파일

Apache 서버를 새로 설치하면 다음과 같은 기본 가상 호스트 파일이 제공됩니다. 000-default.conf. 이 파일은 기본 Apache index.html 페이지를 제공하는 파일입니다. 이 파일은 sites-available 디렉터리에 위치합니다. 이 파일의 내용은 Apache 가상 호스트 파일의 형식에 대한 전반적인 개념을 제공합니다. 파일을 열려면 다음 명령어를 입력하세요:

다음은 파일의 내용입니다. 간결성을 위해 주석은 제거했습니다:

설정 헤더 VirtualHost *:80에서 볼 수 있듯이, 기본적으로 이 가상 호스트는 80번 포트의 요청을 처리하도록 설정되어 있습니다. 이는 표준 HTTP 포트입니다.

Apache는 특정 요청과 일치하는 가장 구체적인 가상 호스트 정의를 사용하도록 설계되었습니다. 즉, 이 특정 가상 호스트가 서버에 대한 모든 요청을 반드시 처리하는 것은 아닙니다. 오히려 더 구체적인 정의를 가진 다른 가상 호스트 파일이 있다면, 그 파일이 이 파일보다 우선 적용됩니다.

다음은 가상 호스트 파일에 있는 지시어들에 대한 설명입니다:

  • ServerAdmin – 서버에 문제가 발생했을 때 사용할 연락처 이메일을 지정합니다. Apache는 일반적으로 생성된 에러 페이지에 이를 표시합니다. 만약 ServerSignature를 “Email”로 설정하면, /etc/apache2/conf-enabled/security.conf 파일에서 여기에 지정된 이메일 주소는 mailto
  • DocumentRoot – 이 지시어는 웹사이트 파일이 포함된 디렉터리를 가리킵니다. Ubuntu 20.04에서는 기본 Apache 환영 인덱스 페이지를 /var/www/html 디렉터리에서 찾을 수 있습니다.
  • ErrorLog – 이 지시어는 에러 로그 파일의 위치를 결정합니다.
  • CustomLog – 이 지시어는 액세스 로그의 위치와 로그 표시 형식을 보여줍니다.

추가 가상 호스트 지시어

  • ServerName – 가상 호스트가 처리해야 할 도메인 이름 또는 IP 주소를 지정합니다. Apache 서버가 여러 웹사이트를 서비스할 수 있도록 여러 가상 호스트를 정의하는 경우, ServerName 지시어를 추가하고 각 가상 호스트가 서비스해야 할 도메인을 지정합니다.
  • ServerAlias – 이 지시어는 하나의 가상 호스트 파일이 둘 이상의 이름에 적용되도록 하여 동일한 콘텐츠에 액세스할 수 있는 대체 도메인을 제공합니다. 예를 들어, 사용자가 도메인 이름 앞에 www을 붙여도 동일한 콘텐츠에 액세스할 수 있도록 할 때 사용됩니다. 예를 들어, example.com 도메인의 가상 호스트에 다음과 같이 추가할 수 있습니다:

디렉터리 정의 지시어

실제 환경에서는 웹사이트 파일이 여러 디렉터리에 있을 가능성이 높습니다. 기본 가상 호스트 파일에는 하나의 index.html 파일만 서비스할 수 있기 때문에 Directory 지시어가 없습니다. Directory 지시어는 Apache가 웹사이트 문서 루트 내의 서로 다른 디렉터리를 처리하는 방법을 지정합니다. 이 지시어 내에서 파일 시스템에 대한 액세스 제한도 정의합니다. 기본적으로 Apache는 /var/www 디렉터리에 있는 파일에 대해서만 인터넷 액세스를 허용합니다. 이 디렉터리 내에 웹사이트 파일을 보관할 다른 디렉터리를 만들 수 있습니다. 또한 디렉터리의 파일에 액세스하는 방법을 지정할 수 있습니다. 샘플 정의는 다음과 같습니다:

The <Directory /var/www/html> 은 이러한 규칙이 적용될 디렉터리를 지정합니다. “AllowOverride” 옵션은 지정된 디렉토리에 “.htaccess” 파일을 배치할 경우 해당 파일이 설정을 재정의해야 하는지 여부를 지정합니다. 이는 .htaccess 및 URL 재작성(rewriting)을 사용하는 Laravel과 같은 프레임워크로 작업할 때 필요합니다.

가상 호스트에 대해 자세히 알아보려면 다음 Ubuntu 20.04에서 Apache 가상 호스트를 설정하는 방법에 대한 튜토리얼을 방문하시기 바랍니다. 다음은 우리가 정의한 모든 지시문이 포함된 샘플 가상 호스트 파일입니다.

Redirect, Alias 및 ScriptAlias 지시문

경우에 따라 DocumentRoot 디렉토리 바로 아래에 있지 않은 웹사이트 파일이나 실행 파일에 액세스해야 할 수도 있습니다. 이때 이 세 가지 지시문이 사용됩니다.

The Redirect 지시문은 클라이언트에게 다른 URL로 새 요청을 하도록 지시합니다. 보통 웹사이트 방문자를 다른 도메인 이름이나 IP 주소로 안내하고 싶을 때 사용합니다. Redirect가 Alias 및 ScriptAlias보다 먼저 실행된다는 점에 유의하십시오. Alias 지시문은 URL을 디렉토리 경로에 매핑합니다. ScriptAlias 지시문은 실행 가능한 스크립트가 포함될 디렉토리에 URL을 매핑합니다. Alias 및 ScriptAlias가 작동하려면 디렉토리 권한을 웹에서 사용하는 www-data 사용자로 설정해야 합니다.

Apache에서 사이트 및 모듈을 활성화하는 방법

가상 호스트와 모듈은 활성화되어야 Apache 프로세스에서 활성화되고 액세스할 수 있습니다. 또한 가상 호스트는 설명한 대로 sites-available 디렉토리 내에 생성됩니다. 이름이 example.com.conf인 가상 호스트 파일이 있는 경우 다음 명령을 사용하여 활성화할 수 있습니다.

이 명령은 가상 호스트를 활성화합니다. 그러나 변경 사항을 적용하려면 다음 명령을 입력하여 Apache가 구성 파일을 다시 로드하도록 해야 합니다.

Apache가 요청을 처리하는 데 사용하지 않도록 example.com.conf라는 가상 호스트 파일을 비활성화할 수 있습니다. 그렇게 하려면 다음 명령을 입력하여 파일을 비활성화하십시오.

마찬가지로 변경 사항을 즉시 적용하려면 다음 명령을 입력하여 Apache가 구성 파일을 다시 로드하도록 해야 합니다.

마찬가지로 동일한 구문을 사용하여 모듈을 활성화 및 비활성화할 수 있습니다. 모듈을 활성화하는 명령은 “a2enmod” 이고 모듈을 비활성화하는 명령은 “a2dismod.” 입니다. 예를 들어, .htaccess 구성에 따라 URL을 재작성하는 데 도움이 되는 mod_rewrite라는 Apache 모듈이 있습니다. .htaccess 파일이 작동하려면 이 모듈을 활성화해야 합니다. 다음 명령을 입력하여 활성화할 수 있습니다.

이 변경 사항을 적용하려면 Apache 구성을 다시 로드해야 합니다. 다음 명령을 입력하여 모듈을 비활성화할 수도 있습니다.

그 후, 변경 사항을 즉시 적용하려면 Apache2 구성을 다시 로드하십시오.

마지막으로, Apache 웹 서버에 익숙해지는 데 도움이 되는 몇 가지 리소스가 더 있습니다.

결론

이 튜토리얼에서는 Ubuntu 및 Debian 시스템의 기본 Apache 설정 파일을 정의했습니다. 설명해 드린 바와 같이, Apache는 모듈화가 잘 되어 있어 다양한 작업을 수행하기 위해 많은 모듈을 설치할 수 있습니다.

이러한 모듈을 쉽게 활성화하거나 비활성화하고 다른 설정을 변경하여 다양한 결과를 얻을 수 있습니다. 이제 메인 설정 파일에 포함되는 로컬 설정 파일을 수정할 수 있습니다. 따라서 글로벌 설정 파일이 손상될까 걱정할 필요가 없습니다.

즐거운 컴퓨팅 되세요!

author

Manpreet Singh

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.