블로그로 돌아가기

Ubuntu 20.04에서 Apache 가상 호스트 설정하기

Ubuntu 20.04에서 Apache 가상 호스트 설정하기

Apache는 현재 세계에서 가장 널리 사용되는 웹 서버입니다. 이는 다음에서 관리하는 오픈 소스 소프트웨어입니다: The Apache Software Foundation. 2020년 9월 기준으로 전 세계 모든 웹사이트 트래픽의 36%를 처리하고 있는 것으로 추정됩니다. 개발자들은 빠른 속도, 보안성, 신뢰성, 견고함 때문에 이 서버를 선호합니다. 커스터마이징이 쉬워 확장 기능과 모듈을 설치하여 다양한 환경의 요구 사항을 충족할 수 있습니다.

Apache에는 단일 IP 주소에 노출된 단일 Apache 서버 설치를 사용하여 여러 도메인 또는 사이트를 호스팅하는 데 사용할 수 있는 매칭 시스템이 함께 제공됩니다. 도메인 또는 사이트는 가상 호스트(virtual hosts)로 정의된 Apache 설정 파일 중 하나에 설정됩니다.

각 도메인에는 연결되는 특정 디렉토리가 있는 하나의 가상 호스트 정의가 있습니다. 사용자가 도메인을 방문하면 서버는 일치하는 모든 가상 호스트를 검사하고 입력한 호스트 이름에 따라 방문자의 요청을 처리하는 데 사용할 가상 호스트를 선택합니다. 일치하는 호스트 이름을 찾을 수 없는 경우, 서버는 conf 파일에 정의된 첫 번째 가상 호스트를 대체(fallback)로 사용합니다. 방문자는 동일한 서버가 다른 사이트도 서비스하고 있다는 사실을 모른 채 자신이 요청한 웹 페이지에 접속하게 됩니다. 서버의 리소스와 처리할 수 있는 트래픽 양에 따라 원하는 만큼 많은 도메인을 호스팅할 수 있습니다.

이 튜토리얼에서는 다음 서버에서 가상 호스트를 설정하는 방법을 안내합니다: Ubuntu 20.04 서버.

사전 준비 사항

이 튜토리얼을 진행하려면 다음이 설치되어 있어야 합니다: Ubuntu 20.04. 또한 루트(non-root)가 아닌 사용자를 생성하고 해당 사용자로 로그인해야 합니다.

이 튜토리얼의 단계를 진행하려면 Apache가 설치되어 있어야 합니다. 아직 설치하지 않았다면 아래 명령어를 사용하여 설치할 수 있습니다. 더 자세한 설치 가이드는 당사의 LAMP Stack setup – Linux Apache MySQL PHP tutorial를 참고하시기 바랍니다.

선택한 도메인 등록 대행업체를 통해 등록된 무료 또는 유료 도메인 이름이 있어야 합니다. DNS 레코드를 설정하여 도메인이 서버를 가리키도록 하십시오. 하지만 이 튜토리얼의 단계를 따라 하기 위해 당사의 설정을 그대로 사용할 수도 있습니다. 이 튜토리얼에서는 example.dev 및 mydomain.com을 사용합니다. 원하는 도메인으로 자유롭게 대체하셔도 됩니다. 테스트 도메인을 사용하기로 결정한 경우, 해당 도메인을 처리할 수 있도록 Apache의 hosts 파일을 편집해야 합니다. 이 작업은 튜토리얼 뒷부분에서 다루겠습니다.

1단계 – 웹사이트 디렉토리 설정

이 디렉토리들은 웹사이트 방문자가 액세스하게 될 사이트 데이터를 보관하는 곳입니다. 인터넷에서 액세스할 수 있는 Apache의 문서 루트(document root)는 일반적으로 /var/www에 있습니다. 여기에 호스팅하려는 개별 도메인을 위한 디렉토리를 생성할 것입니다. 각 디렉토리 내에 실제 웹사이트 파일을 보관할 public_html 디렉토리를 추가합니다. 가상 호스트는 이 public_html 디렉토리를 가리킵니다. 이렇게 하면 중요한 웹사이트 파일은 public_html 외부에 보관하고 공개 파일만 내부에 둘 수 있어 유연성이 확보됩니다.

다음으로, 아래 명령어를 입력하여 디렉토리를 생성합니다. 이후 설정에서는 항상 테스트 도메인을 실제 도메인으로 대체해야 함을 기억하십시오:

2단계 – 읽기-쓰기 권한 변경

이전 명령어로 디렉토리 구조가 생성되었지만 소유권은 root 사용자에게 있습니다. 루트가 아닌 사용자가 디렉토리에 대한 전체 읽기-쓰기 권한을 갖도록 설정하고자 합니다. 또한 일반 웹에서도 읽기 권한을 가질 수 있도록 설정합니다.

먼저, 다음 명령어를 입력하여 루트가 아닌 사용자에게 소유권을 변경합니다:

$USER는 현재 로그인한 사용자의 자격 증명을 가져오는 변수입니다. 이제 일반 사용자가 public_html의 소유권을 갖게 되었습니다. 다음으로, 일반 웹에 읽기 권한을 부여해야 합니다. 다음 명령은 디렉터리의 모든 파일에 권한을 허용하여 웹 페이지가 올바르게 제공되도록 합니다:

이전 세 개의 명령을 실행하면 이제 웹사이트에서 콘텐츠를 제공할 수 있습니다. 또한 사용자는 특정 디렉터리에 제공할 콘텐츠를 동일하게 생성할 수 있습니다. 여기에서 더 많은 정보를 찾을 수 있습니다 Ubuntu 권한에 대해.

3단계 – 각 가상 호스트의 디렉터리에 데모 페이지 만들기

디렉터리 구조가 준비되었으므로 이제 스크립트를 작성할 차례입니다. 우리는 HTML 및 nano 텍스트 편집기를 사용하여 몇 가지 기본 웹 페이지를 만들 것입니다. 다음 명령을 입력하여 nano를 열고 첫 번째 도메인의 디렉터리에 index.html 파일을 만듭니다:

편집기에서 도메인에 액세스할 때 표시될 다음 샘플 코드를 입력합니다:

위의 줄을 붙여넣었으면 “!wq”를 눌러 파일을 저장하고 종료합니다.

다음 명령을 입력하여 nano 편집기를 사용하여 두 번째 도메인의 index.html 페이지를 만듭니다:

그런 다음 편집기에 다음 HTML 코드를 붙여넣고 저장한 후 종료합니다:

 

이제 다음 단계에서 생성할 두 개의 가상 호스트를 테스트할 페이지가 준비되었습니다.

4단계 – 도메인 이름에 대한 가상 호스트 파일 만들기

가상 호스트 파일에는 각 가상 호스트에 대한 설정이 포함되어 있습니다. 이 파일은 도메인 이름이 제공되는 방식을 정의합니다. Apache를 새로 설치하면 000-default.conf라는 기본 가상 호스트 파일이 제공되며, 이를 도메인에 맞게 수정하여 사용할 수 있습니다. 보시다시피 .conf 확장자로 끝나는데, 이는 Ubuntu가 설정 파일에 요구하는 형식입니다.

Apache 설정 파일은 /etc/apache2/sites-available 디렉터리에 위치합니다. 여기에 가상 호스트 파일을 저장합니다. 기본 conf 파일을 복사하여 필요한 부분을 수정할 수 있습니다.

  • example.dev 도메인에 대한 첫 번째 가상 호스트 파일 만들기

다음 명령을 입력하여 기본 conf 파일을 복사하여 example.dev.conf를 생성합니다:

다음으로, 다음 명령어를 사용하여 sudo 권한으로 nano 편집기에서 생성된 파일을 엽니다:

기본 conf 파일은 아래 스크린샷과 같습니다. 주석은 안내용입니다. 주석을 제거하고 실제 설정 줄만 있는 깨끗한 파일만 남겨둘 수 있습니다:

default configuration

웹사이트 파일을 저장한 도메인 이름과 디렉터리 경로에 맞게 이 파일을 사용자 정의해야 합니다. 또한 파일에 몇 가지 지시문을 업데이트하고 추가할 것입니다. 이 파일에는 이미 서버 관리자가 이메일을 받을 이메일 주소가 포함된 ServerAdmin 지시문이 있습니다. 또한 웹사이트 파일을 저장한 디렉터리를 가리키는 DocumentRoot 지시문도 있습니다.

두 개의 새로운 지시문인 ServerName과 ServerAlias를 추가해야 합니다. ServerName은 기본 도메인 이름을 설정합니다. 여기에 도메인을 입력합니다. ServerAlias는 Apache가 기본 도메인 이름인 것처럼 일치시켜야 하는 다른 이름을 정의합니다. 이를 통해 www와 같은 호스트를 일치시킬 수 있습니다.

아래와 같이 보이도록 파일을 업데이트합니다:

그 후, 도메인과 이메일을 적절하게 업데이트합니다. 완료되면 CTRL + O와 ENTER를 눌러 파일을 저장합니다. 편집기를 종료하려면 CTRL + X를 누릅니다.

  • mydomain.com 도메인을 위한 첫 번째 가상 호스트 파일 생성

첫 번째 도메인의 가상 호스트를 복사하여 두 번째 도메인에 필요한 부분을 업데이트하면 됩니다. 다음 명령어를 사용하여 파일을 복사합니다:

그런 다음, 다음 명령어를 사용하여 nano 편집기에서 엽니다:

지시문을 찾아 적절하게 업데이트하여 파일이 아래와 같이 보이도록 합니다:

완료되면 파일을 저장하고 편집기를 종료합니다.

Step 5 – Enabling the Virtual Host Files

4단계에서 가상 호스트 파일을 생성했습니다. 하지만 활성화하기 전까지는 작동하지 않습니다. Apache에는 가상 호스트를 활성화하는 데 사용할 a2ensite라는 도구가 있습니다.

가상 호스트를 활성화하려면 다음 두 명령어를 입력합니다:

위 명령어의 출력은 아래와 같습니다:

Apache еnable configuration

다음으로 기본 설정 파일을 비활성화해야 합니다. 사이트를 비활성화하기 위해 a2dissite Apache 도구를 사용합니다. 다음 명령어를 입력합니다:

출력에서 볼 수 있듯이, 설정을 적용하려면 Apache를 재시작해야 합니다. 다음 명령어를 사용합니다:

그런 다음, 다음 명령어를 사용하여 Apache의 상태를 확인합니다:

출력 결과는 서버가 정상적으로 작동 중이며 두 개의 웹사이트를 서비스할 수 있음을 보여줍니다.

Apache 2 status

6단계 – 예시 도메인으로 로컬 호스트 파일 수정하기

실제 도메인을 등록하지 않고 대신 테스트 도메인을 사용하는 경우, 로컬 호스트 파일을 업데이트해야 합니다. 가상 호스트 파일에 설정된 도메인 중 하나로 이동할 때 트래픽을 가로채서 웹사이트 디렉토리로 안내해야 하기 때문입니다. 이 작업은 로컬 컴퓨터에서만 작동한다는 점을 기억하세요. 로컬 컴퓨터가 Windows 운영 체제를 실행하는 경우, 이 링크의 호스트 설정 지침을 따르세요.

Mac 또는 Linux 기기를 사용하는 경우, hosts 파일은 /etc 디렉토리에 있습니다. nano 편집기를 사용하여 파일을 열고 테스트 도메인을 추가하겠습니다. 먼저, 다음 명령어를 입력하여 VPS IP 주소를 찾으세요:

다음 명령어를 입력하여 파일을 열고 서버의 IP 주소로 업데이트합니다:

그런 다음 파일을 저장하고 닫습니다. 브라우저에 도메인 이름을 입력할 때마다 먼저 host 파일이 확인됩니다. 도메인 이름이 발견되면 트래픽이 지정된 IP 주소로 전송됩니다. 발견되지 않으면 글로벌 리디렉션을 위해 DNS 시스템이 사용됩니다. 테스트 도메인의 경우, 트래픽이 지정된 IP 주소로 전송됩니다.

7단계 – 가상 호스트 테스트하기

도메인 이름이 설정되었으므로, 브라우저나 터미널에서 확인하여 제대로 작동하는지 테스트할 수 있습니다:

출력 결과는 다음과 같이 표시되어야 합니다:
curl example.dev

Apache curl mydomain.com

축하합니다! 하나의 서버에서 두 개의 웹사이트가 실행되도록 성공적으로 구성했습니다.

결론

이 가이드에서는 둘 이상의 웹사이트를 서비스하도록 Apache 서버를 구성하는 방법을 배웠습니다. 웹사이트를 더 추가하려면 단계를 따라 가상 호스트를 설정하면 됩니다. Apache는 서버 리소스가 감당할 수 있는 한 원하는 만큼 많은 도메인을 처리할 수 있습니다.

즐거운 컴퓨팅 되세요!

author

Akshay Nagpal

작성자 · CloudSigma

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

댓글

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