vhost는 virtual host로 웹 서버의 다른 디렉터리로 요청을 라우팅 하여하나의 IP 주소에서 여러 개의 도메인을 처리하는 데 사용합니다.
사용할 수 있는 도메인이 하나이므로 서브도메인을 www, eee로 지정하여 vhost를 구성해 보겠습니다.
1) CentOS 7
apache2.4로 소스 설치가 완료된 환경에서 진행하겠습니다.
도메인의 DocumetRoot를 생성합니다.
mkdir /usr/local/apache/htdocs2
저는 htdocs2를 만들어 eee.domain.com의 DocumentRoot로 지정하겠습니다.
다른 방법으로는 user를 추가하여 /home/www.domain.com과 /home/eee.domain.com으로 구분하여 사용하기도 합니다.
이 또한 서비스 환경에 따라 맞춰 설정해 주시면 됩니다.
그리고 index 파일을 수정하여
htdocs의 index.html은 www test
htdocs2의 index.html은 eee test로 저장하여 구분하도록 하겠습니다.
echo "www test" > /usr/local/apache/htdocs/index.html
echo "eee test" > /usr/local/apache/htdocs2/index.html
다음으로 apache의 설정파일을 수정합니다.
vi /usr/local/apache/conf/httpd.conf
에서 Virtual hosts로 검색하여 주석처리 되어있는 Include 설정을 제거해 줍니다.
그리고 해당 디렉터리의 접근 권한을 설정해야 하므로 아래의 코드를 추가합니다.
<Directory "/usr/local/apache/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory "/usr/local/apache/htdocs2">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
해당 설정을 하지 않으면 페이지를 불러올 권한이 없어 에러메시지가 출력됩니다.
vhost 설정 파일 수정
vi /usr/local/apache/conf/extra/httpd-vhosts.conf
에서 vhost의 설정을 변경합니다.
<VirtualHost *:80>
ServerAdmin admin@domain.com
DocumentRoot "/usr/local/apache/htdocs"
ServerName www.domain.com
ErrorLog "logs/www.domain.com-error_log"
CustomLog "logs/www.domain.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@domain.com
DocumentRoot "/usr/local/apache/htdocs2"
ServerName eee.domain.com
ErrorLog "logs/eee.domain.com-error_log"
CustomLog "logs/eee.domain.com-access_log" common
</VirtualHost>
ServerAdmin은 서버주의 메일 주소를 입력하면 되고
log는 필요에 따라 커스텀로그를 삽입하여 관리해도 됩니다.
이제 DNS에 www와 eee를 A레코드로 생성해 주면 완료입니다!
다음은 ubuntu22.04에서 패키지로 설치된 apache2.4로 진행해 보겠습니다.
2. ubuntu22.04
패키지로 설치된 apache의 documentroot는 /var/www에 위치합니다
저는 여기에 www.domain.com과 eee.domain.com 디렉터리를 생성하여 관리하겠습니다.
mkdir /var/www/www.domain.com
mkdir /var/www/eee.domain.com
이번 테스트에서도 www test와 eee test로 구분하여 진행하겠습니다.
echo "www test" > /var/www/www.domain.com/index.html
echo "eee test" > /var/www/eee.domain.com/index.html
이제 vhost의 conf를 설정해야 합니다.
cp vim /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/eee.domain.com.conf
000-default는 www의 설정으로 사용해야 vhost의 default서버를 www로 지정할 수 있습니다.
centos와 같이 ServerName과 DocumetRoot, log파일 경로 등을 설정합니다.
vi /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerName www.domain.store
DocumentRoot /var/www/www.domain.com
ErrorLog ${APACHE_LOG_DIR}/www-error.log
CustomLog ${APACHE_LOG_DIR}/www-access.log combined
</VirtualHost>
eee의 설정 또한 마찬가지로 알맞게 수정합니다.
이제 a2ensite 명령어를 사용하여 eee.domain.com.conf를 사용하여 vhost설정을 완료합니다.
a2ensite eee.domain.com
# 신택스 검사
apache2ctl configtest
신택스 검사도 완료하면 apache를 재시작하여 vhost설정을 확인합니다.
apache2ctl -S
이제 www와 eee로 vhost설정이 되었는지 확인하면 됩니다.
이상입니다!
'OS > Linux' 카테고리의 다른 글
sendmail로 메일송신 하기 (0) | 2024.04.16 |
---|---|
apache mod_cband 설치 및 설정 (0) | 2024.04.15 |
AWStats 설정 및 설치 (1) | 2024.04.12 |
htpasswd로 웹페이지 잠금하기 (2) | 2024.04.11 |
letsencrypt를 사용하여 무료ssl 인증서 발급 및 적용 (0) | 2024.04.11 |