3.웹 서버 구축하기, 여러 웹사이트를 한 서버에서 호스팅하는 방법 (가상 호스트 설정)

우분투 서버에서 웹 사이트를 호스팅하는 것은 개인 또는 비즈니스 프로젝트를 위해 중요한 작업일 수 있습니다. 여러 웹사이트를 한 서버에서 운영하고자 할 경우, 가상 호스트(Virtual Host) 설정을 통해 이를 손쉽게 관리할 수 있습니다. 이 글에서는 우분투 서버를 설치하고, Apache 웹 서버를 설정하여 여러 웹사이트를 호스팅하는 방법을 자세히 설명합니다.

1. 우분투 서버 설치

웹 서버를 구축하기 위해 우선 우분투 서버를 설치해야 합니다. 아래 단계를 따라 해 주세요.

  • 1.1 우분투 서버 다운로드: 우분투의 공식 웹사이트에서 우분투 서버 ISO 이미지를 다운로드합니다.
  • 1.2 서버 설치: 다운로드한 ISO 이미지를 USB에 굽거나 가상 머신을 통해 서버에 설치합니다. 설치 과정에서 언어, 키보드 레이아웃, 사용자 계정, 그리고 네트워크 설정을 수행합니다.

2. Apache 웹 서버 설치

우분투 서버가 설치되었다면 다음 단계로 Apache 웹 서버를 설치합니다. Apache는 가장 널리 사용되는 웹 서버 중 하나입니다. 아래의 명령어를 사용하여 설치할 수 있습니다.

sudo apt update
sudo apt install apache2

설치가 완료되면 웹 브라우저에서 서버의 IP 주소를 입력하여 Apache 기본 페이지가 나타나는지 확인합니다.

3. PostgreSQL 및 PHP 설치 (옵션)

동적 웹 콘텐츠를 제공하려면 PHP 및 데이터베이스가 필요할 수 있습니다. 여기에서는 PHP와 PostgreSQL 데이터베이스를 설치합니다. 다음 명령어를 사용하여 설치하세요.

sudo apt install php libapache2-mod-php php-mysql
sudo apt install postgresql postgresql-contrib

4. 가상 호스트 설정

이제 가상 호스트를 설정하여 여러 웹사이트를 하나의 서버에서 호스팅할 수 있게 됩니다. 가상 호스트는 특정 도메인 이름에 대한 요청을 처리하기 위해 Apache가 사용하는 설정입니다.

4.1 가상 호스트 디렉토리 생성

각 웹사이트의 파일을 저장할 디렉토리를 만듭니다. 예를 들어, 두 개의 웹사이트 example1.com과 example2.com을 설정한다고 가정하겠습니다.

sudo mkdir -p /var/www/example1.com/public_html
sudo mkdir -p /var/www/example2.com/public_html

각 웹사이트에 기본 HTML 파일을 생성합니다.

echo '

Welcome to Example 1!

' | sudo tee /var/www/example1.com/public_html/index.html echo '

Welcome to Example 2!

' | sudo tee /var/www/example2.com/public_html/index.html

4.2 권한 설정

웹 서버가 해당 디렉토리에 접근할 수 있도록 적절한 권한을 설정합니다.

sudo chown -R www-data:www-data /var/www/example1.com/public_html
sudo chown -R www-data:www-data /var/www/example2.com/public_html

4.3 가상 호스트 파일 생성

각 웹사이트에 대해 별도의 가상 호스트 파일을 생성합니다. 다음 명령어를 사용하여 example1.com에 대한 가상 호스트 파일을 만듭니다.

sudo nano /etc/apache2/sites-available/example1.com.conf

아래와 같은 내용을 추가합니다:

<VirtualHost *:80>
    ServerAdmin admin@example1.com
    ServerName example1.com
    ServerAlias www.example1.com
    DocumentRoot /var/www/example1.com/public_html

    <Directory /var/www/example1.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

그 다음으로 example2.com에 대한 가상 호스트 파일도 생성합니다.

sudo nano /etc/apache2/sites-available/example2.com.conf

이 파일에 아래 내용을 추가합니다:

<VirtualHost *:80>
    ServerAdmin admin@example2.com
    ServerName example2.com
    ServerAlias www.example2.com
    DocumentRoot /var/www/example2.com/public_html

    <Directory /var/www/example2.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

4.4 가상 호스트 활성화

가상 호스트 파일을 활성화하려면 다음 명령어를 입력합니다.

sudo a2ensite example1.com.conf
sudo a2ensite example2.com.conf

이제 Apache 구성을 테스트하여 오류가 없는지 확인합니다.

sudo apache2ctl configtest

오류가 없다면 Apache를 다시 시작하여 변경 사항을 적용합니다.

sudo systemctl restart apache2

5. 도메인 이름 설정

가상 호스트 설정이 완료되었으므로, 실제 도메인 이름을 설정해야 합니다. 도메인을 구입하고 DNS 설정에서 A 레코드를 서버의 공인 IP 주소로 설정합니다. 예를 들어, example1.com과 example2.com 각각 A 레코드를 추가하여 해당 도메인이 서버의 IP 주소를 가리키도록 합니다.

6. SSL 인증서 설치 (옵션)

HTTPS를 통해 웹사이트를 안전하게 제공하려면 SSL 인증서를 설치해야 합니다. Let’s Encrypt를 사용하여 무료 SSL 인증서를 설치하는 방법이 있습니다. Certbot을 사용하여 설치할 수 있습니다. 다음 명령어를 입력합니다.

sudo apt install certbot python3-certbot-apache

그 다음, Certbot을 사용하여 SSL 인증서를 요청합니다.

sudo certbot --apache -d example1.com -d www.example1.com
sudo certbot --apache -d example2.com -d www.example2.com

SSL 인증서가 성공적으로 설치되면 HTTPS로 웹사이트에 접근할 수 있습니다. Certbot은 인증서 갱신을 자동화할 수 있는 기능도 제공하므로, 설정 후 주기적으로 확인하는 것이 좋습니다.

7. 보안 강화 및 유지 관리

서버를 안전하게 유지하고 웹사이트의 안정성을 확보하기 위해 다음 사항을 고려해야 합니다.

  • 정기적으로 패키지 업데이트: 웹 서버를 최신 보안 패치를 유지합니다.
  • 방화벽 설정: UFW(Uncomplicated Firewall)를 사용하여 필요 없는 포트를 차단합니다.
  • 백업 계획: 웹사이트 데이터의 정기 백업을 수행하여 데이터 유실 위험을 줄입니다.
  • 로그 모니터링: 웹 서버 로그를 모니터링하여 이상 트래픽이나 공격을 탐지합니다.

이와 같은 방법으로 여러 웹사이트를 하나의 우분투 서버에서 효율적으로 호스팅할 수 있습니다. 각 도메인에 대해 별도로 가상 호스트를 설정함으로써 관리의 용이성을 높일 수 있습니다.

8. 결론

우분투 서버를 구축하고 여러 웹사이트를 호스팅하는 것은 초기 설정이 필요하지만, 가상 호스트를 통해 손쉽게 관리할 수 있습니다. Apache 웹 서버와 SSL 인증서를 통해 보안성을 높이고, 정기적인 유지 관리를 통해 안정적인 서비스를 제공할 수 있습니다.

다양한 요구에 맞춰 웹사이트를 기능적으로 구현하고 싶다면, 추가적인 모듈이나 기술을 학습하여 서버 관리 능력을 더욱 향상시킬 수 있습니다. 최종적으로 웹 서버 기술을 활용하여 개인 블로그에서 기업 웹사이트에 이르기까지 다양한 분야에서 성공적인 프로젝트를 수행할 수 있습니다.