워드프레스 멀티사이트 대신 독립 엔진을 운영하는 방법 – 아파치 Alias로 하위 경로 분리

의인화된 아파치 웹 서버가 3개의 워드프레스 엔진 중 하나와 통화하고 있는 모습으로, 하나의 도메인에서 복수의 독립 워드프레스 엔진을 운영하는 모습을 의미하는 섬네일

웹 사이트를 운영하다 보면, 특정 하위 경로나 독립된 주제 영역을 기존 워드프레스에 포함시키기보다 별도의 WordPress 엔진으로 분리하는 편이 더 나을 때가 있다. 본 글에서는 워드프레스 멀티사이트 모드 대신 독립 엔진을 사용하는 이유와, 하나의 도메인 안에서 두 개 이상의 WordPress 엔진이 서로 다른 하위 경로를 담당하도록 Apache 웹 서버의 Alias를 설정하는 방법을 설명한다.

워드프레스 멀티사이트 대신 독립 엔진이 필요한 이유

하나의 Apache 서버에서 여러 도메인이나 웹 사이트를 운영하는 기본 방법은 VirtualHost 설정이다. 하지만 이미 하나의 도메인으로 운영 중인 웹 사이트 안에서 /battery/, /media-ops/처럼 특정 하위 경로만 별도의 워드프레스 엔진으로 분리하고 싶다면 이야기가 달라진다. 이 경우에는 새로운 VirtualHost를 추가하는 것이 아니라, 기존 도메인의 VirtualHost 안에서 Alias를 이용해 특정 경로를 별도 디렉토리로 연결해야 한다.

보통의 개인 블로그나 홈페이지는 하나의 도메인 전체를 하나의 워드프레스 엔진으로 운영하는 경우가 많다. 새로운 주제의 섹션을 추가할 때도 카테고리를 나누거나, 서브 도메인 또는 서브 경로를 만들어 워드프레스 멀티사이트 모드로 구성하는 경우가 흔하다.

그러나 다음과 같은 경우에는 워드프레스 멀티사이트 모드보다 독립된 워드프레스 엔진을 별도로 설치해 운영하는 편이 더 유리할 수 있다.

  • 사이트의 주제가 기존 메인 사이트와 명확히 다를 때
  • 별도의 브랜드나 서비스명을 유지해야 할 때
  • 카테고리, 태그, 사용자 흐름을 독립적으로 관리해야 할 때
  • 플러그인 구성이 메인 사이트와 크게 다를 때
  • 캐시, 보안, 백업등의 정책을 분리해야 할 때
  • 장애 발생 시 메인 사이트에 영향을 주지 않아야 할 때
  • SEO 실험이나 구조 변경을 독립적으로 진행해야 할 때
  • 향후 별도 서비스나 플랫폼으로 확장할 가능성이 있을 때

물론, 멀티사이트 모드를 사용하거나 또는 고도의 커스터마이징을 통해 하나의 워드프레스 엔진에서 구현하는 것도 가능하다. 하지만 독립된 워드프레스 엔진을 이용할 경우 아래와 같은 장점이 있다.

  • 하나의 워드프레스가 망가지거나 플러그인 충돌이 발생해도 다른 사이트까지 함께 영향을 받지 않는다.
  • 사이트마다 PHP 버전, 플러그인, 테마, 캐시, SEO 정책을 완전히 독립적으로 운영할 수 있어 유지보수가 훨씬 유연하다.
  • 멀티사이트는 데이터베이스와 코어 구조가 강하게 묶여 있어 구조 변경이나 이전 작업이 까다롭지만, 독립 엔진은 백업·복원·이전·폐기가 훨씬 단순하다.
  • 커스터마이징에 들어가는 시간과 노력이 절감된다.

이 글은, 본 필자가 www.DectENG.com 사이트를 www.eqmaker.kr 로 통합하는 과정의 실제 경험을 바탕으로 정리한 글 이다.

작업의 요약과 기본 배경

  • 현재의 설정
    • yourdomain.kr 이라는 웹서버가 있음
    • yourdomain.kr 의 기본 웹 문서 경로는 /var/www/yourdomain
    • yourdomain.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 파일의 내용이 표출 될 것이다. 이를 먼저 확인한 다음 워드프레스를 설치해 주면 된다.

아파치 웹 서버 설정 변경

본 필자의 예는 데비안 리눅스에 아파치 웹 서버가 설치된 환경을 기준으로 한다. 다른 리눅스 배포판이나 다른 웹 서버 엔진을 사용하는 경우라면 설정 파일의 위치나 문법이 달라질 수 있으므로, 해당 환경의 설정 방식을 확인해야 한다.

아파치 웹 서버의 설정 파일은 /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>

...(중략)...
</VirtualHost>
</IfModule>

위의 예는 yourdomain.kr라는 도메인에 대한 웹 서버의 설정 예시로, 다음과 같이 구성 되어 있다.

  • 443번 포트 (HTTPS) 를 사용하는 yourdomain.kr 도메인에 대한 설정으로, www.yourdomain.kr URL도 함께 처리한다.
  • 기본 웹 서버의 문서 경로는 /var/www/yourdomain이며
  • /suburl-1의 웹 문서 경로는 /var/www/suburl-1
  • 새로 추가한 /suburl-2의 웹 문서 경로는 /var/www/suburl-2이다.
  • 3개의 웹 문서 경로 모두 각 디렉토리의 .htaccess파일을 이용해 고유 주소와 리라이트 규칙을 설정하며
  • 웹 요청이 해당 디렉토리를 사용할 수 있도록 접근 권한을 부여해 준다.

만약 HTTPS 설정 파일 외에 HTTP 설정 파일이 있다면, HTTP용 VirtualHost 설정에도 동일한 Alias와 Directory 설정을 추가해야 한다. 그렇지 않으면 HTTPS 접속에서만 정상 동작하고 HTTP 접속에서는 메인 워드프레스가 응답하거나 404 오류가 발생할 수 있다.

설정 확인과 적용

설정에 오류가 없는지 configtest 옵션을 이용해 확인해 준 다음 데몬 설정을 다시 읽어 준다.

eqmaker@webserver:/etc/apache2/sites-available$ sudo apache2ctl configtest
Syntax OK
eqmaker@webserver:/etc/apache2/sites-available$ sudo systemctl reload apache2

확인

마지막으로 웹 브라우저를 실행해 새로 추가한 하위 경로에 접속해 본다. 정상적으로 설정이 완료되었다면, yourdomain.kr/suburl-2/로 접속했을 때 기존 메인 워드프레스 화면이 아니라 앞서 생성한 index.html 파일의 내용이 표시된다.

이 화면이 정상적으로 보인다면 아파치 설정이 의도한 대로 동작하고 있는 것이다. 이후 해당 디렉토리에 워드프레스를 설치하거나, 기존에 준비한 워드프레스 파일과 데이터베이스를 연결하면 하나의 도메인 안에서 별도의 워드프레스 엔진을 운영할 수 있다.

FAQ

하나의 도메인 안에 여러 워드프레스 엔진을 설치할 수 있는가?
가능하다. 하나의 도메인 안에서도 하위 경로별로 서로 다른 디렉토리를 연결하면 여러 개의 독립 워드프레스 엔진을 운영할 수 있다. 예를 들어 메인 사이트는 yourdomain.kr에서 운영하고, 별도의 워드프레스 엔진은 yourdomain.kr/suburl-2/와 같은 하위 경로에서 운영하는 방식이다.
하위 경로별로 독립된 워드프레스 엔진을 사용할 수 있는가?
가능하다. Apache 웹 서버에서는 Alias 설정을 이용해 특정 하위 경로를 별도의 서버 디렉토리로 연결할 수 있다. 이를 이용하면 /suburl-1/, /suburl-2/ 같은 경로마다 서로 다른 워드프레스 엔진을 설치하고 독립적으로 운영할 수 있다.
독립된 워드프레스 엔진을 사용할 경우 멀티사이트 모드보다 유리한 것은?
웹 사이트의 섹션별로 플러그인, 테마, 캐시, 보안, 백업, SEO 정책을 완전히 분리해야 할 때는 워드프레스 멀티사이트 모드보다 독립 워드프레스 엔진이 더 유리할 수 있다. 특히 특정 하위 경로나 주제 영역이 메인 사이트와 성격이 다르거나, 향후 별도 서비스로 분리될 가능성이 있다면 독립 엔진 방식이 관리와 이전 작업에 더 적합하다.
Apache Alias 설정은 어떤 역할을 하는가?
Apache Alias 설정은 웹 브라우저에서 특정 URL 경로로 접근했을 때, 실제로는 다른 서버 디렉토리의 파일을 읽도록 연결해 주는 역할을 한다. 예를 들어 yourdomain.kr/suburl-2/ 요청을 /var/www/suburl-2 디렉토리로 연결하면, 하나의 도메인 아래에서 복수의 독립 워드프레스 엔진을 운영할 수 있다.
VirtualHost와 Alias는 무엇이 다른가?
VirtualHost는 서로 다른 도메인이나 호스트명을 각각 다른 웹 문서 경로로 연결하는 설정이다. 반면 Alias는 이미 운영 중인 하나의 도메인 안에서 특정 하위 경로를 별도의 서버 디렉토리로 연결하는 설정이다. 즉, 여러 도메인을 분리할 때는 VirtualHost를 사용하고, 하나의 도메인 안에서 하위 경로를 분리할 때는 Alias를 사용한다.
왜 먼저 index.html 파일로 테스트를 진행하는가?
워드프레스를 설치하기 전에 Apache Alias 설정이 정상적으로 동작하는지 확인하기 위해서다. 먼저 테스트용 index.html 파일을 만들어 두면, 문제가 발생했을 때 원인이 Apache 설정인지 워드프레스 설치 문제인지 구분하기 쉽다. 설정이 올바르다면 브라우저에서 지정한 하위 경로로 접속했을 때 생성한 테스트 파일의 내용이 표시된다.
HTTP와 HTTPS 설정 파일을 모두 수정해야 하는가?
그렇다. HTTPS뿐 아니라 HTTP 설정 파일이 별도로 존재한다면 동일하게 Alias와 Directory 설정을 추가해 주는 것이 안전하다. 그렇지 않으면 https 접속에서는 정상적으로 동작하지만, http 접속에서는 메인 워드프레스가 응답하거나 404 오류가 발생할 수 있다.
워드프레스 고유주소를 사용하려면 Directory 설정도 필요한가?
필요하다. 워드프레스는 고유주소와 리라이트 규칙을 .htaccess 파일로 처리하는 경우가 많다. 따라서 Alias로 연결한 디렉토리에도 AllowOverride All 설정을 적용해 워드프레스의 리라이트 규칙이 정상적으로 동작하도록 해야 한다.
하나의 도메인에 여러 워드프레스 엔진을 운영하면 SEO에 문제가 생기는가?
구조를 명확히 설계하면 문제가 되지 않는다. 오히려 주제가 다른 영역을 독립 워드프레스 엔진으로 분리하면 카테고리, 태그, 구조화 데이터, 캐시 정책, 사이트맵을 각각 최적화할 수 있다. 다만 중복 콘텐츠, 잘못된 canonical 설정, 내부 링크 단절, 사이트맵 누락이 발생하지 않도록 관리해야 한다.

갱신 내역

  • 최초 게시
  • 수정

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다