웹사이트 검색

Ubuntu 22.04에서 Apache 가상 호스트를 구성하는 방법


이 페이지에서

  1. 무엇을 다룰 것인가?
  2. 지금 시작하세요...\n
  3. Apache 가상 호스트 설정 테스트\n
  4. 결론

가상 호스팅 개념은 회사에서 단일 시스템을 사용하여 여러 웹사이트를 호스팅하는 데 사용됩니다. 이는 'IP 기반' 방법 또는 '이름 기반' 접근 방식으로 달성할 수 있습니다. 'IP 기반' 호스팅에서는 각 웹사이트에 고유한 IP 주소가 있습니다. '이름 기반' 호스팅의 경우 각 IP 주소에 여러 이름이 실행됩니다.

우리는 무엇을 다룰 것인가?

이 자습서에서는 이름 기반 가상 호스팅을 사용하여 Ubuntu 22.04 시스템에서 두 개의 가상 호스트를 호스팅하는 방법을 살펴봅니다. 우리는 Apache 웹 서버를 사용할 것입니다.

지금 시작하세요...

1단계. 리포지토리와 운영 체제도 업데이트합니다.

sudo apt update
sudo apt upgrade -y

2단계. 다음 명령을 사용하여 Ubuntu용 Apache 웹 서버를 설치합니다.

sudo apt install apache2 -y
sudo systemctl restart apache2
sudo systemctl status apache2

샘플 출력:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
     Active: active (running) since Mon 2022-06-27 09:32:14 UTC; 18s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 13093 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/S>
   Main PID: 13098 (apache2)
      Tasks: 55 (limit: 1146)
     Memory: 4.7M
        CPU: 25ms
     CGroup: /system.slice/apache2.service
             ??13098 /usr/sbin/apache2 -k start
             ??13099 /usr/sbin/apache2 -k start
             ??13100 /usr/sbin/apache2 -k start

4단계. 'www' 폴더 안에 두 개의 새 디렉토리를 만듭니다. 이 디렉토리를 host1 및 host2로 지정하십시오.

다시 말하지만, 이 디렉토리 안에 웹 파일을 보관할 폴더를 하나 더 만듭니다. 이 디렉토리를 public_html 및 public_html로 둡니다. 이 디렉토리에는 다음 두 호스트에 해당하는 index.html 파일이 포함됩니다.

sudo mkdir -p /var/www/host1/public_html
sudo mkdir -p /var/www/host2/public_html

'/var/www/host1/public_html' 및 '/var/www/host2/public_html' 디렉토리도 두 가상 호스트의 문서 루트를 나타냅니다.

5단계. 위에서 만든 디렉터리는 루트 사용자가 소유합니다. 일반 사용자가 이 디렉토리의 파일을 수정할 수 있도록 하려면 다음 명령을 사용하여 소유권을 변경해야 합니다.

sudo chown -R $USER:$USER /var/www/host1/public_html
sudo chown -R $USER:$USER /var/www/host2/public_html

'$USER' 변수는 현재 로그인한 사용자의 값을 사용합니다. 이제 'public_html'은 이 사용자가 소유하게 됩니다.

6단계. 이제 Apache 일반 웹 디렉토리에 대한 '읽기 액세스' 권한을 설정합니다.

sudo chmod -R 755 /var/www

7 단계. 이제 각 가상 호스트에 대한 기본 페이지 즉 index.html을 설정합니다. 이는 'echo' 명령을 사용하여 터미널에서 직접 수행할 수 있습니다. 가상 호스트1의 경우:

sudo echo “Welcome to Virtual Host 1.” > /var/www/host1/public_html/index.html

가상 호스트2의 경우:

sudo echo “Welcome to Virtual Host 2.” > /var/www/host2/public_html/index.html

8단계. 더 진행하기 전에 중간 단계를 사용하고 있습니다. 여기에서 호스트 파일을 수정하여 로컬 호스트 주소를 두 개의 가상 호스트 도메인 이름(www.host1.com 및 www.host2.com)에 매핑합니다. 이는 도메인 이름이 공개적으로 등록되는 것을 방지하기 위한 것입니다.

sudo sh -c "echo 127.0.0.1 www.host1.com >> /etc/hosts"
sudo sh -c "echo 127.0.0.1 www.host2.com >> /etc/hosts"

위의 단계는 아래 그림에 나와 있습니다.

"000-default.conf\는 각 가상 호스트의 기본 파일로 사용할 수 있습니다. 이 파일을 host1.conf 및 host2.conf라는 두 가지 다른 이름으로 동일한 위치에 복사하기만 하면 됩니다.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/host1.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/host2.conf

10단계. 이제 파일을 열고 각 가상 호스트에 맞게 수정합니다. 예를 들어 가상 호스트1의 경우 다음 매개변수를 다음과 같이 수정해야 합니다.

<VirtualHost *:80>

    ServerAdmin

    ServerName host1

    ServerAlias www.host1.com

    DocumentRoot /var/www/host1/public_html

    ErrorLog ${APACHE_LOG_DIR}/error.log

</VirtualHost>

두 번째 파일(host2.conf)의 경우 host1 항목을 host2로 바꿉니다. 또는 두 개의 새 파일을 만들고 각 가상 호스트에 해당하는 위 내용을 입력할 수 있습니다. host2.conf 파일은 다음과 같습니다.

<VirtualHost *:80>

    ServerAdmin

    ServerName host2

    ServerAlias www.host2.com

    DocumentRoot /var/www/host2/public_html

    ErrorLog ${APACHE_LOG_DIR}/error.log

</VirtualHost>

10단계. 이제 가상 호스트 파일을 만들었으므로 이 파일을 실제로 활성화할 시간입니다. 이를 위해 Apache는 'a2ensite'라는 도구를 제공합니다. 아래 명령을 사용하여 활성화하십시오.

sudo a2ensite host1.conf
sudo a2ensite host2.conf

11단계. 터미널에서 새 구성을 활성화하기 위해 Apache를 다시 로드하라는 메시지가 표시되지만 그 전에 다음 명령을 사용하여 "000-default.conf\로 표시되는 기본 사이트를 비활성화합니다.

sudo a2dissite 000-default.conf

12단계. 다음을 사용하여 구성 파일에서 구문 오류가 있는지 확인합니다.

sudo apache2ctl configtest

13단계. 마지막으로 apache2 서비스를 다시 로드하여 위에서 변경한 사항을 적용합니다.

sudo systemctl reload apache2

Apache 가상 호스트 설정 테스트

이제 모든 것이 올바르게 설정되었는지 확인합니다. 컴퓨터에서 터미널을 열고 다음 명령을 실행합니다.

$ curl www.host1.com

위의 명령은 가상 host1 인덱스 페이지의 메시지를 반환해야 하며, 유사하게 아래 명령은 가상 호스트2의 메시지를 표시해야 합니다.

$ curl www.host2.com

결론

드디어 해냈고 가상 호스팅이 예상대로 작동하고 있습니다. Terraform을 사용하여 이 자습서를 수행할 수도 있습니다. 그냥 사용해 보세요.