하나의 도메인에서 복수의 독립 워드프레스 엔진 운영을 위한 Apache Alias 설정 방법
이미 운영중인 하나의 도메인 웹 서버에 새로운 하위 경로나 서브 도메인을 추가하고, 기존 워드프레스 엔진과 독립된 전용 엔진을 사용할 수 있도록 아파치 웹 서버의 Alias를 설정하는 방법
복수의 워드프레스 엔진이 필요한 이유
보통의 개인 블로그나 홈페이지의 경우, 한 도메인 전체의 웹 서비스를 하나의 워드프레스 엔진을 사용해 운영하는 경우가 많다. 서브 도메인이나 서브 경로를 추가해 새로운 섹션을 추가하는 경우에도 메인 워드프레스 엔진의 멀티사이트 모드를 사용하는 경우가 대다수이다.
하지만 아래와 같은 경우, 멀티사이트 모드보다 독립된 워드프레스 엔진을 이용해 구현하는 것이 더 이득일 경우가 많다.
- 사이트의 주제가 기존 메인 사이트와 명확히 다를 때
- 별도의 브랜드나 서비스명을 유지해야 할 때
- 카테고리, 태그, 사용자 흐름을 독립적으로 관리해야 할 때
- 플러그인 구성이 메인 사이트와 크게 다를 때
- 캐시, 보안, 백업 정책을 분리해야 할 때
- 장애 발생 시 메인 사이트에 영향을 주지 않아야 할 때
- SEO 실험이나 구조 변경을 독립적으로 진행해야 할 때
- 향후 별도 서비스나 플랫폼으로 확장할 가능성이 있을 때
물론, 멀티사이트 모드를 사용하거나 또는 고도의 커스터마이징을 통해 하나의 워드프레스 엔진에서 구현하는 것도 가능하다. 하지만 독립된 워드프레스 엔진을 이용할 경우 아래와 같은 장점이 있다.
- 하나의 워드프레스가 망가지거나 플러그인 충돌이 발생해도 다른 사이트까지 함께 영향을 받지 않는다.
- 사이트마다 PHP 버전, 플러그인, 테마, 캐시, SEO 정책을 완전히 독립적으로 운영할 수 있어 유지보수가 훨씬 유연하다.
- 멀티사이트는 데이터베이스와 코어 구조가 강하게 묶여 있어 구조 변경이나 이전 작업이 까다롭지만, 독립 엔진은 백업·복원·이전·폐기가 훨씬 단순하다.
- 커스터마이징에 들어가는 시간과 노력이 절감된다.
본 글은, 본 필자가 www.DectENG.com 사이트를 www.eqmaker.kr 로 통합하는 과정의 실제 경험을 바탕으로 정리한 글 이다.
작업의 요약과 기본 배경
- 현재의 설정
yourdomain.kr이라는 웹서버가 있음yourdomain.kr의 기본 웹 문서 경로/var/www/yourdomainyourdomain.kr/suburl-1의 기본 웹 문서 주소는/var/www/suburl-1- 이미 두 개의 독립된 워드프레스 엔진이 존재하는 상황
- 해야 하는 것
웹 브라우저에서
yourdomain.kr/suburl-2/로 접속했을 때 메인 워드프레스 엔진이 아닌/var/www/suburl-2에 위치한 워드프레스 엔진(html 파일에 접근)하도록 설정 - 해결 방법
아파치 웹 서버는 HTTP 요청을 받아 URL 경로를 보고 특정 디렉토리의 특정 파일을 읽게 해 주는 역할을 한다. 아파치 웹 서버가
yourdomain.kr/suburl-2에 대한 접근을 받을경우,/var/www/suburl-2의 파일을 읽게 설정을 변경해 준다.
작업의 순서
새로운 경로와 테스트 파일 생성
yourdomain.kr/suburl-2가 바라보아야 하는 경로를 생성해 주고, 그 안에 index.html 파일을 생성해 준다. 구분을 위해 임의의 텍스트 몇 자를 넣어 주면 좋다.
만약 설정이 제대로 완료 되었다면, 웹브라우저에서 yourdomain.kr/suburl-2로 접속했을 때, 생성한 index.html 파일의 내용이 표출 될 것이다.
아파치 웹 서버 설정 변경
웹 서버의 설정을 변경해 준다. 본 필자의 예는 데비안 리눅스에 아파치 웹 서버가 설치된 환경 기준이며, 타 OS나 타 웹 서버 엔진을 사용하는 경우라면 해당 엔진과 OS의 사용 설명을 참고해 동일한 설정을 진행해 주면 된다.
아파치 웹 서버의 설정 파일은 /etc/apache2/sites-available 에 들어 있으며, 경로를 추가하고자 하는 도메인의 파일을 수정해 준다.
eqmaker@webserver:/etc/apache2/sites-available$ cat yourdomain.kr-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName yourdomain.kr
ServerAlias www.yourdomain.kr
DocumentRoot /var/www/yourdomain
Alias /suburl-1 /var/www/suburl-1
Alias /suburl-2 /var/www/suburl-2 # suburl-2 경로의 웹 문서 루트를 /var/www/suburl-2 로 추가
<Directory /var/www/yourdomain>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/suburl-1>
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/suburl-2> # suburl-2 경로에 대해 워드프레스 사용이 가능하도록 속성 추가
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/yourdomain443error.log
CustomLog ${APACHE_LOG_DIR}/yourdomain443access.log combined
Include /etc/ssl-apache.conf
SSLCertificateFile /etc/fullchain.pem
SSLCertificateKeyFile /etc/privkey.pem
</VirtualHost>
</IfModule>
만약, https 외에 http 설정 파일이 존재할 경우, 동일하게 수정 해 주어야 한다.
설정 확인과 적용
설정에 오류가 없는지 configtest 옵션을 이용해 확인해 준 다음 데몬 설정을 다시 읽어 준다.
eqmaker@webserver:/etc/apache2/sites-available$ sudo apache2ctl configtest
Syntax OK
eqmaker@webserver:/etc/apache2/sites-available$ sudo systemctl reload apache2
eqmaker@webserver:/etc/apache2/sites-available$
확인
웹 브라우저를 실행해 새로 생성한 경로로 접속해 본다. 정상적으로 설정이 완료 되었다면, 위에서 생성한 index.html파일의 내용이 표시된다.
요약과 FAQ
이 설정을 통해 도메인의 특정 하위 경로로 HTTP 요청이 들어왔을 경우, 특정한 디렉토리로 넘겨줄 수 있게 되었다. 이제 이 디렉토리에 워드프레스 엔진을 새로 설치해 주면, 메인 사이트와 다른 독립된 워드프레스를 통해 웹 페이지가 서비스된다.
- 멀티사이트 모드 대신 독립 워드프레스 엔진을 사용한 이유는?
- 사이트별로 플러그인, 캐시, 구조화 데이터, SEO 정책을 독립적으로 운영하기 위해서다. 또한 하나의 워드프레스 엔진에서 문제가 발생하더라도 다른 사이트까지 함께 영향을 받지 않도록 하기 위함이다.
- Apache Alias 설정은 어떤 역할을 하는가?
- 웹 브라우저에서 특정 URL 경로로 접근했을 때, 실제로는 다른 디렉토리의 파일을 읽도록 연결해 주는 역할을 한다. 이를 통해 하나의 도메인 아래에서 복수의 독립 워드프레스 엔진을 운영할 수 있다.
- 왜 먼저 index.html 파일로 테스트를 진행하는가?
- 워드프레스를 설치하기 전에 Apache 의 Alias 설정이 정상적으로 동작하는지 확인하기 위해서다. 설정이 올바르다면 브라우저에서 지정한 경로로 접속했을 때 생성한 테스트 파일의 내용이 표시된다.
- http 와 https 설정 파일을 모두 수정해야 하는가?
- 그렇다. HTTPS 뿐 아니라 HTTP 설정 파일이 별도로 존재한다면 동일하게 Alias 와 Directory 설정을 추가해 주는 것이 안전하다.