14. 단일 Ubuntu 서버에서 여러 웹사이트 호스팅하기: 유용한 팁

소개

단일 Ubuntu 서버에서 여러 웹사이트를 호스팅하는 것은 개발자, 중소기업, 취미 사용자에게 비용 효율적인 솔루션입니다. 이 가이드에서는 가상 호스트 를 Apache 및 Nginx 에서 설정하여 같은 서버에서 여러 웹사이트를 호스팅하는 방법을 단계별로 안내합니다. 이 튜토리얼을 마치면 여러 도메인이나 하위 도메인을 효율적으로 처리하도록 서버를 구성할 수 있습니다.


이전 글:

01. Ubuntu 서버 소개 – SysOSX: AI & Cloud

02. 첫 Ubuntu 서버 설정 방법: 초보자 가이드 – SysOSX: AI & Cloud

03. Ubuntu 서버를 위한 Linux 명령줄 마스터하기 – SysOSX: AI & Cloud

04. Ubuntu 서버에서 사용자 및 권한 관리: 종합 가이드 – SysOSX: AI & Cloud

05. Ubuntu 서버를 위한 네트워킹 기초: 종합 가이드 – SysOSX: AI & Cloud

06. Ubuntu 서버에 소프트웨어 설치 및 관리: 완전 가이드 – SysOSX: AI & Cloud

07.Ubuntu 서버 패치 및 업데이트: 종합 가이드 – SysOSX: AI & Cloud

08. Ubuntu 서버 보안 강화: 하드닝 및 보호를 위한 실용적인 단계 – SysOSX: AI & Cloud

09. Ubuntu 서버 감사 및 로깅

10. Ubuntu 서버용 시스템 모니터링 도구: 종합 가이드 – SysOSX: AI & Cloud

11. Ubuntu 서버를 위한 중앙 집중식 로깅: 꼭 읽어야 할 가이드 – SysOSX: AI & Cloud

12. Ubuntu 서버 감사 및 규정 준수: 모범 사례 – SysOSX: AI & Cloud

13. 호스팅 및 웹 애플리케이션을 위한 Ubuntu 서버 설정: 궁극 가이드 – SysOSX: AI & Cloud



필수 조건

이 가이드를 따르려면 다음이 필요합니다.

  • Ubuntu 서버(버전 20.04 이상 권장).
  • 권한( sudo )이 있는 사용자 계정.
  • 서버 IP 주소를 가리키는 여러 도메인 이름.
  • Linux 명령에 대한 기본 지식.

파트 1: Apache로 여러 웹사이트 호스팅하기


1단계: Apache 웹 서버 설치

Apache가 아직 설치되지 않았다면 다음 명령을 실행하세요.

sudo apt update && sudo apt install apache2 -y


2단계: 각 웹사이트용 가상 호스트 설정

Apache는 가상 호스트를 사용해 하나의 서버에서 여러 웹사이트를 제공합니다. 각 웹사이트마다 고유한 가상 호스트 구성 파일이 있습니다.

웹사이트용 디렉터리 만들기

  • 각 웹사이트마다 별도의 디렉터리를 만듭니다.
sudo mkdir -p /var/www/website1.com /var/www/website2.com
  • 이러한 디렉터리의 소유권을 사용자 계정에 할당하세요.
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com

가상 호스트 구성 파일 만들기

  • 첫 번째 웹사이트용 구성 파일을 만듭니다.
sudo nano /etc/apache2/sites-available/website1.com.conf
  • 다음 구성을 추가하세요.
<VirtualHost *:80>
    ServerName website1.com
    ServerAlias www.website1.com
    DocumentRoot /var/www/website1.com
    ErrorLog ${APACHE_LOG_DIR}/website1_error.log
    CustomLog ${APACHE_LOG_DIR}/website1_access.log combined
</VirtualHost>

  • 두 번째 웹사이트용 구성 파일을 만듭니다.
sudo nano /etc/apache2/sites-available/website2.com.conf
  • 다음 구성을 추가하세요.
<VirtualHost *:80>
    ServerName website2.com
    ServerAlias www.website2.com
    DocumentRoot /var/www/website2.com
    ErrorLog ${APACHE_LOG_DIR}/website2_error.log
    CustomLog ${APACHE_LOG_DIR}/website2_access.log combined
</VirtualHost>

가상 호스트 활성화

  • 가상 호스트 구성을 활성화하세요.
sudo a2ensite website1.com.conf
sudo a2ensite website2.com.conf
  • 변경 사항을 적용하기 위해 Apache를 다시 로드하세요.
sudo systemctl reload apache2

3단계: Apache 구성 테스트

  • 각 웹사이트용으로 간단한 index.html 파일을 만듭니다.
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html


  • 브라우저에서 http://website1.com 및 http://website2.com 에 접속해 설정을 확인하세요.

4단계: SSL/TLS로 웹사이트 보안 설정

Certbot 설치

Apache 플러그인과 함께 Certbot을 설치하세요.

sudo apt install certbot python3-certbot-apache -y

SSL 인증서 받기

각 웹사이트마다 Certbot을 실행하세요.

sudo certbot --apache -d website1.com -d www.website1.com
sudo certbot --apache -d website2.com -d www.website2.com

Certbot은 두 웹사이트의 SSL을 자동으로 구성하고 HTTP 트래픽을 HTTPS로 리디렉션합니다.


파트 2: Nginx로 여러 웹사이트 호스팅하기


1단계: Nginx 웹 서버 설치

Nginx가 아직 설치되지 않았다면 다음을 실행하세요.

sudo apt update && sudo apt install nginx -y


2단계: 각 웹사이트용 서버 블록 설정

Nginx는 서버 블록(Apache의 가상 호스트와 유사)을 사용해 하나의 서버에서 여러 웹사이트를 제공합니다.

웹사이트용 디렉터리 만들기

  • 각 웹사이트마다 별도의 디렉터리를 만듭니다.
sudo mkdir -p /var/www/website1.com /var/www/website2.com
  • 이러한 디렉터리의 소유권을 사용자 계정에 할당하세요.
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com

서버 블록 구성 파일 만들기

  • 첫 번째 웹사이트용 구성 파일을 만듭니다.
sudo nano /etc/nginx/sites-available/website1.com

  • 다음 구성을 추가하세요.
server {
    listen 80;
    server_name website1.com www.website1.com;

    root /var/www/website1.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/website1_error.log;
    access_log /var/log/nginx/website1_access.log;
}

  • 두 번째 웹사이트용 구성 파일을 만듭니다.
sudo nano /etc/nginx/sites-available/website2.com

  • 다음 구성을 추가하세요.
server {
    listen 80;
    server_name website2.com www.website2.com;

    root /var/www/website2.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/website2_error.log;
    access_log /var/log/nginx/website2_access.log;
}

서버 블록 활성화

  • 서버 블록을 활성화하기 위해 심볼릭 링크를 만듭니다.
sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/

  • Nginx 구성을 테스트하세요.
sudo nginx -t
  • 변경 사항을 적용하기 위해 Nginx를 다시 로드하세요.
sudo systemctl reload nginx

3단계: Nginx 구성 테스트

  • 각 웹사이트용으로 간단한 index.html 파일을 만듭니다.
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html

  • 브라우저에서 http://website1.com 및 http://website2.com 에 접속해 설정을 확인하세요.

4단계: SSL/TLS로 웹사이트 보안 설정

Certbot 설치

Nginx 플러그인과 함께 Certbot을 설치하세요.

sudo apt install certbot python3-certbot-nginx -y

SSL 인증서 받기

각 웹사이트마다 Certbot을 실행하세요.

sudo certbot --nginx -d website1.com -d www.website1.com
sudo certbot --nginx -d website2.com -d www.website2.com

Certbot은 두 웹사이트의 SSL을 자동으로 구성하고 HTTP 트래픽을 HTTPS로 리디렉션합니다.


참고 자료

결론

단일 Ubuntu 서버에서 여러 웹사이트를 호스팅하는 것은 웹 애플리케이션이나 도메인을 관리하는 실용적이고 비용 효율적인 방법입니다. Apache를 사용하든 Nginx를 사용하든, 이 과정에는 디렉터리 설정, 가상 호스트 또는 서버 블록 구성, Certbot을 사용한 SSL/TLS 인증서로 웹사이트 보안 설정이 포함됩니다. 이 가이드를 따르면 여러 도메인이나 하위 도메인을 효율적으로 호스팅하고 서버가 확장성과 보안에 최적화되어 있는지 확인할 수 있습니다.

Apache와 Nginx는 모두 강력한 웹 서버이며, 둘 중 선택은 대개 구체적인 요구 사항에 따라 달라집니다. Apache는 광범위한 구성 옵션과 호환성을 제공하고, Nginx는 성능과 동시 연결 처리에서 뛰어납니다. 어느 쪽을 선택하든 이 가이드를 통해 여러 웹사이트를 효과적으로 관리하기 위한 기초 지식을 얻을 수 있습니다.


다음 주제를 기대해 주세요: Ubuntu 서버에서 스토리지 및 디스크 관리 다가오는 이 가이드에서는 디스크 초기화 구성, 다양한 파일 시스템용 파티션 만들기, 파일 시스템에 마운트하는 것을 포함한 디스크 확장 방법을 배웁니다. 놓치지 마세요!