서버 설정 · 3 min read · Jan 07, 2026

BIND와 Apache를 사용하여 CentOS 5에서 웹 서버 만들기 (간단화) - 페이지 2

다시 점프합니다 :) 이번에는 1005행으로 조금 더 나아갑니다. 그곳에서 다음을 볼 수 있어야 합니다:

NameVirtualHost *:80

NameVirtualHost 지시문은 Apache에 이름 기반 가상 호스팅을 사용하고 싶다는 것을 알려줍니다. 간단히 말하면, 동일한 IP 주소를 사용하는 여러 웹사이트입니다. ‘#NameVirtualHost *:80’ 아래에 몇 개의 빈 줄을 추가하고 그 바로 아래 줄에 NameVirtualHost와 호스트 이름 또는 IP 주소를 추가한 후 :80을 붙입니다. ‘:80’은 HTTP 프로토콜에 대해 이름 기반 가상 호스팅을 사용하고 있음을 의미합니다.

따라서 다음과 같은 내용을 생성해야 합니다:

NameVirtualHost host.website.com:80

이제 httpd.conf 파일 구성이 거의 완료되었습니다. 우리가 구성해야 할 유일한 것은 누군가가 도메인 이름 대신 IP를 사용하여 서버를 방문할 경우, 해당 사용자에게 표시될 기본 호스트 이름을 설정하는 것입니다. 이를 구성 파일의 끝에 삽입할 수 있습니다.


    ServerAdmin [email protected]
    DocumentRoot /www
    ServerName 77.77.197.69
    ErrorLog logs/error_log
    CustomLog logs/access_log common

httpd.conf를 관리하기 쉽게 유지하기 위해 파일의 맨 아래에 다음 줄을 추가해야 합니다:

Include conf/vhosts/*.conf

이는 /etc/httpd/conf/vhosts에서 모든 .conf 항목을 포함하겠다는 의미입니다. 여기에는 웹사이트를 추가할 때 가상 호스트를 저장할 것입니다. 진행하면서 이해하기 쉬울 것입니다. 이제 거의 완료되었습니다. httpd.conf를 저장하고 계속 진행합니다.

웹사이트 디렉토리 생성

이제 웹사이트를 제대로 관리하기 위해 웹사이트 디렉토리 구조를 생성해야 합니다. 먼저 기본 디렉토리를 생성해 보겠습니다:

mkdir /www

이제 /www의 소유자를 root로 설정합니다:

chown root.root /www

더 진행하기 전에 하나의 조정을 해야 합니다. httpd.conf에서 호스트 이름으로 사용했기 때문에 host.website.com에 대한 영역을 named.conf에 추가해야 합니다. 이를 하지 않으면 오류가 발생합니다. 따라서 named.conf에 다음을 추가해야 합니다.

zone "host.website.com" IN {
        type master;
        file "/var/named/host.website.com.db";
};

그리고 물론 아래는 파일의 내용입니다:

/var/named/chroot/var/named/host.website.com.db
$TTL 14400
@      86400    IN      SOA     ns1.website.com. [email protected]. (
                2008021501      ; serial, todays date+todays
                86400           ; refresh, seconds
                7200            ; retry, seconds
                3600000         ; expire, seconds
                86400 )         ; minimum, seconds
host.website.com. 86400 IN NS ns1.website.com.
host.website.com. 86400 IN NS ns2.website.com.
host.website.com. IN A 77.77.197.69
localhost.host.website.com. IN A 127.0.0.1

원하는 만큼 레코드를 추가할 수 있습니다. named를 재시작하기 전에 링크를 만듭니다:

ln -s/var/named/chroot/var/named/host.website.com.db /var/named/host.website.com.db
service named restart

이제 디렉토리 구조로 돌아갑니다. 따라서 우리는 website.com에 대한 영역을 추가했으며 이제 이를 위한 가상 디렉토리가 필요합니다.

cd /www  
mkdir website.com  
cd website.com  
mkdir html  
mkdir html/cgi-bin  
mkdir databases  
mkdir logs

웹사이트를 위한 디렉토리를 만들었으므로, 이제 이 도메인 이름을 관리할 수 있는 사용자가 필요합니다. 다음과 같이 할 수 있습니다:

useradd -d /www/your-domain/ domain_user

또는 사용자의 셸 접근을 제한하고 싶다면 다음을 사용하세요:

useradd -d /www/your-domain/ -s /sbin/nologin domain_user

사용자가 추가된 후에는 다음으로 비밀번호를 수정할 수 있습니다:

passwd

이 사용자는 여전히 자신의 “홈” :) 장소가 없으므로 이제 다음을 추가합니다:

cd /www && chown domain_user:domain_user website.com

“databases” 디렉토리를 생성하면 소유자를 mysql 사용자로 변경해야 합니다. 그렇지 않으면 MySQL이 데이터베이스 파일에 쓸 수 없습니다. 데이터베이스와 관련된 모든 디렉토리, 하위 디렉토리 및 파일은 mysql 사용자 소유여야 하며, 다음 명령으로 수행할 수 있습니다:

cd website.com && chown -R mysql:mysql databases

이로써 웹사이트 디렉토리 구조 생성을 완료했습니다. 이제 남은 것은 Apache에 웹사이트가 어디에 있는지 알려주는 것입니다. 이제 httpd.conf를 구성할 때 삽입한 줄을 다시 추적해 보겠습니다:

Include conf/vhosts/*.conf

이제 왜 그렇게 했는지 알게 될 것입니다. 폴더가 아직 존재하지 않으므로 생성해야 합니다:

cd /etc/httpd/conf && mkdir vhosts

이제 vhosts 디렉토리로 들어갑니다:

cd vhosts

그리고 도메인을 위한 새 파일을 생성합니다:

nano website.com.80.conf

이 파일에 다음을 삽입해야 합니다:


    ServerAdmin [email protected]
    ServerName website.com
    ServerAlias www.website.com
    DocumentRoot /www/website.com/html
    ScriptAlias /cgi-bin/ /www/website.com/html/cgi-bin/
    ErrorLog /www/website.com/logs/error_log
    CustomLog /www/website.com/logs/access_log combined

이제 웹사이트의 디렉토리를 Apache에 알려주는 최종 지점에 도달했습니다. 이제 브라우저의 www.website.com에 대한 모든 요청은 /www/website.com/html에서 읽히며, 그곳에 index.html과 같은 파일을 넣어야 합니다. 이제 httpd를 켜거나, 이미 켜져 있다면 재시작할 수 있습니다.

service httpd start

또는

service httpd restart

이 튜토리얼이나 Apache 또는 BIND 구성에 문제가 발생하면 주저하지 말고 저에게 연락하세요. 저도 그런 문제와 더 심각한 문제를 겪었으니, 여유 시간에 기꺼이 도와드리겠습니다.

저자

: Emir Ibrahimbegovic

E:

[email protected]

W:

www.green.ba

감사:

Tony Bhimani, Sébastien Wains, Nayyar Ahmad

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.