본문 바로가기
Wordpress/etc

[내 서버에] 워드프레스 멀티사이트 만들고 운영하기

by aegypius 2021. 6. 5.
728x90
반응형

워드프레스 멀티사이트(wordpress multisite)...

워드프레스로 멀티사이트를 구현할 수 있다는 것을 처음 알았을 때에는 별다른 감흥이 없었다. 남는게 서버의 저장공간이고, 남는게 트래픽(이건 좀 슬프다) 이다보니 굳이 자원(플러그인, 테마, 미디어 등)을 공유해서 저장공간을 절약해야 할 이유를 찾지 못했다. 워드프레스로 만든 웹사이트든지 그누보드로 만들었든지 아니면 또다른 뭐가 되었든지....웹사이트와 db를 통째로 복사하고 다른 도메인으로 연결설정만 하면 똑같은 그리고 약간 수정하면 비슷한 웹사이트를 원하는 만큼 만들 수 있으니..... 아마도 직접 서버를 운영하면서 사이트를 돌리고(?) 있다면 누구나 수긍하지 않을까.....?? 서버호스팅과 웹호스팅의 저장공간과 트래픽은 차이가 크니까...-_-;

아직 제대로 워드프레스 멀티사이트를 운영해보지는 않았지만 (설치와 몇가지 기능만 테스트 해봤다)서버를 운영하는 관점(아니 그냥...지극히 개인적인 나의 입장)에서의 워드프레스 멀티사이트의 장점하나의 플러그인을 각각의 사이트들이 공유할 수 있다는 것이다. 덕분에 나는 당장 시작하기로 한 php 공부를 뒤로 미룰 수 있게 되었다. -_-;  워드프레스 멀티사이트를 운영하면 전체 사이트의 용량이 오히려 2배, 아니 20배로 늘어난다 하더라도 멀티사이트를 운영할 분명한 이유가 생겼다. 적어도 나에게는.......

일반적으로 말하는 멀티사이트의 단점들 중에서 크게 눈에 띄는 것은 없어 보인다. 사이트가 다운되거나 해킹당하면 전체 사이트가 다운되거나 해킹당할 수 있다는 얘기는 분명히 맞는 말이다. 웹사이트의 해킹과 서버의 해킹은...그 피해의 규모가 비슷할 수 있지만 반대로 하늘과 땅 차이 일 수도 있다. 특정 사이트가 해킹당했다면 해킹의 피해범위가 그 사이트 하나를 벗어나지 못하도록 관리하는 것이 중요할 것이다. 워드프레스 멀티사이트는 사이트의 개수(수량)가 아무리 많더라도 그리고 모두 다른 테마를 사용하고 다른 디자인을 갖고 있더라도 물리적으로 하나의 사이트로 보아야 할 것이기에 웹사이트 하나가 뚫렸다면 연관된 멀티사이트가 모두 당했다(?)고 봐야 할 것이다. 비정상적인 트래픽이 발생하는 경우라면 해당 웹사이트를 살펴봐야겠지만 서버 차원에서 관리하는 것도 중요하기에 해킹이나 사이트 다운과 같은 맥락인 듯 싶다.

지금 이순간에도 미국 LA에서 삼성의 SM-J111F 폰, 안드로이드(5.1.1) 크롬 73버전으로 내 서버의 웹사이트를 헤매고 있는 놈(이겠지?)이 하나 보인다. (분명히 고의적인 그리고 비정상적인 접속 시도이다)동일한 네트웍에서 Ubuntu X11 윈도우 환경에서 Firefox 62버전으로 같은 짓을 하고 있다. 해당 ip에서 프록시가 탐지된다. user agent는 얼마든지 위장이 가능하기에....별 의미없는 분석일 것이다. 초(second)당 3~5회의 이러한 단순하고 반복적인 접속시도는 분명히 스크립트에 의한 것이다......만약 수작업(?)이라면 정말 존경하고 싶다 -_-;......어디서 몇 달러짜리 해킹툴을 사다가 테스트 하는 것인지...손수 스크립트를 짜서 열심히 돌려보는 것인지는......알 수 없지만.........;;;

워드프레스 멀티사이트는 대시보드에서 여러 개의 사이트를 쉽게 관리할 수 있다는 장점과 메인으로 설정한 워드프레스 사이트의 리소스를 공유할 수 있다는 것.... 뭐 이정도 아닐까? 장단점은 주관적일 수 있으니.....

환경은........
워드프레스 5.7.2(한글버전), 오늘날짜 기준으로 최신버전이다.
서버 os는 centos 7,
php 7.4.x,
mariadb 10.4.x,
apache 2.4.x 이다.

멀티사이트를 구축하는 과정에서 추가되는 사이트들을 서브 도메인으로 할것인지 서브 디렉토리로 할 것인지 선택해야  하는데......나는 서브 도메인을 선택했으며, 이를 위해서 워드프레스가 제안하는 와일드카드(*) DNS 레코드는 사용하지 않았다. 워드프레스와는 무관하게 네임서버를 설정 할 때에 서브도메인으로 사용할 호스트 네임에 와일드카드를 사용하는 것에 살짝 거부감(?)이 있기 때문이다....이 부분은 설치과정을 정리할 때에 다시한번 대충~ 정리할 것이다.

이번 포스팅 또한 웹호스팅이 아닌 자신의 서버에 설치하는 과정을 정리하는 것이기에......웹호스팅 환경이라면 이 글이 아무 도움이 안될 것이다. 그래서 제목에는 [내 서버에]라고......


1. 도메인 확보, 네임서버의 설정

먼저 멀티사이트를 테스트하기 위한 도메인이 필요하다. freenom에서 하나 구하려다가... 보유하고 있는 도메인을 테스트 삼아서 사용해 보기로 했다. webpress.click 도메인에 서브도메인을 만들어서 테스트해 볼 생각이다. 워드프레스와 이름도 비슷한게 잘 어울리는 듯 하다....(??)

테스트용으로 생성한 서브도메인의 리스트는 아래와 같다.

메인 : multi.webpress.click (www.multi.webpress.click)
서브 : sub1.multi.webpress.click
서브 : sub2.multi.webpress.click
서브 : sub3.multi.webpress.click
서브 : site1.multi.webpress.click
서브 : site2.multi.webpress.click
서브 : aegypius.multi.webpress.click

multi.webpress.click을 임시로 만들고 동일한 서버에 네임서버를 위임해서 여러개의 서브도메인을 생성해 보았다. 서브도메인의 가상호스트 별로 access log와 error log를 사용할 수 있다. (참고로 1~3차 등의 서브도메인을 만들려고 한다면 기존에 포스팅했던 아래의 글을 참고하자.)

 

1,2,3차,..(n)차 서브도메인을 만들기 위한 bind 설정

Create Subdomains 네임서버를 설정하는 과정에서 도메인 네임(domain name)에 호스트 네임(host name)을 추가하여 1차(?) 서브도메인을 생성할 수 있다. 실제 테스트 중인 eseoil.com을 예로 들면 아래와 같다.

aegypius.tistory.com

 

2. 가상호스트의 설정

모든 서브도메인(multi, sub1.multi, ..... site2.multi, aegypius.multi)에 대한 가상호스트 설정을 각각 따로 진행했으며, 각각의 디렉토리는 메인으로 사용할 도메인([www.]multi.webpress.click) 하나로 통일하였다. 조금 귀찮더라도 네임서버에서 와일드카드 레코드를 사용하지 않기 위함이다.  (나중에 생각이 바뀌었다.)
2022.06.13 - [Linux/for Hosting] - [워드프레스 멀티사이트를 위한] 네임서버와 웹서버의 설정

 

[워드프레스 멀티사이트를 위한] 네임서버와 웹서버의 설정

Name Server and Web Server Setup for Wordpress Multisite 1년 전에 작성했던 [내 서버에] 워드프레스 멀티사이트 만들고 운영하기에서 나는 와일드카드 DNS를 사용하지 않고, 멀티사이트를 추가할 때..

aegypius.tistory.com

 

SSL 인증서를 적용한 보안서버를 구축하려 한다면 가상호스트의 설정이 끝난 후에 워드프레스를 설치하기 직전 단계인 지금 시점이 가장 좋은데............일단 HTTPS는 다른 도메인으로 실제 사이트를 운영할 때에 적용하기로 하고 패스하자.

 

3. 워드프레스의 설치, 멀티사이트의 기본설정

멀티사이트가 몇 개까지 가능한지는 모르겠지만 하나의 db로 멀티사이트를 운영할 수 있다는 것은 매력적이다. 새로운 db를 생성한 후에 워드프레스를 설치했다면, 멀티사이트 운영을 위해서 wp-config.php를 수동으로 편집해야 한다. 수동 편집이 조금은 아쉽지만 코드 한 줄 추가하는 작업이기에 그리 번거롭지는 않다.

일단 워드프레스를 설치하자. 아래는 설치 후의 알림판의 모습이다.

 

아래와 같이 permalinks를 http(s)://mydoamin.tld/%postname%/로 바꾸자. 보기에도 좋고 SEO를 위해서도 좋은 방법이다.(멀티사이트 운영을 위한 필수사항은 아니며, SEO는 사실 검색엔진에 따라서 다르다. google을 타깃으로 설정했다면 그리 기대하지 말자!) 그리고 .htaccess를 설정하자.

 

 그리고 워드프레스 주소사이트 주소를 다시 한 번 점검하자.

 

워드프레스의 멀티사이트 운영을 위해서 wp-config.php 파일을 열고 파일 끝부분의 /* That's all, stop editing! Happy publishing. */ 바로 윗줄에 다음의 한 줄을 추가하자. (아랫줄도 상관없다. -_-;)

define('WP_ALLOW_MULTISITE', true);

 

편집 후의 wp-config.php의 내용은 아래와 같다.

     77  *
     78  * @link https://wordpress.org/support/article/debugging-in-wordpress/
     79  */
     80 define( 'WP_DEBUG', false );
     81
     82 define('WP_ALLOW_MULTISITE', true);
     83
     84 /* That's all, stop editing! Happy publishing. */
     85
     86 /** Absolute path to the WordPress directory. */
     87 if ( ! defined( 'ABSPATH' ) ) {
     88         define( 'ABSPATH', __DIR__ . '/' );
     89 }
     90
     91 /** Sets up WordPress vars and included files. */
     92 require_once ABSPATH . 'wp-settings.php';
     93

 

이제 워드프레스의 대시보드(알림판, 관리자페이지)에서 웹브라우저를 새로고침(F5)을 한 후에, 사이드 메뉴에서 도구의 하위에 네트워크 설치가 보이는지 확인하자. (도구 -> 네트워크 설치)

 

그리고 네트워크 설치를 선택하자. 아래와 같은 화면이 열린다.

네트워크 제목은 사이트의 제목(title)을 의미하는 것 같다. 그렇다면 분명히 나중에라도 수정할 수 있을 것이다. 상단의 사이트 주소는 하위 디렉토리가 아닌 하위 도메인(서브 도메인)으로 설정하자. 그리고 설치를 진행하면 된다. 아래와 같은 페이지가 열린다. 


| 경고! 와일드카드 DNS를 바르게 구성하지 않았을 수 있습니다!

DNS의 호스트에 와일드카드(*)를 사용했다면 이러한 경고메시지는 없을 것이다. 이것이 워드프레스가 제안한 방법이기도 하다. 네임서버에 이러한 설정을 하지 않았는데.....워드프레스가 랜덤한 호스트이름(anyhost.multi.webpress.click)으로 연결을 시도했으니, 당연히 오류가 발생할 것이다. DNS에 와일드카드를 사용하여 그 어떤 서브도메인이라도 연결되게 설정한 것이 아니라, 처음부터 사용할 서브도메인을 미리 정하였고 서브도메인(의 네임서버 설정)과 웹서버의 설정까지 끝마친 상태이기 때문에 이러한 경고는 아무런 문제가 없다. 물론 웹사이트를 운영하면서 필요하다면 얼마든지 멀티사이트를 추가할 수 있다.

 

| 주의: 존재하는 wp-config.php와(과) .htaccess 파일을 백업하기를 권장합니다.

안내에 따라서 1번의 내용을 wp-config.php에 추가로 넣어줘야 한다. 한글버전의 워드프레스를 설치하였기에 /* 그게 다입니다. 편집을 멈추세요! 즐겁게 발행하세요. */ 바로 윗 줄에 추가하라고 하는데 실제 wp-config.php에서는 대략 84번 째 줄의 /* That's all, stop editing! Happy publishing. */ 이다.(주석문은 한글판이라도 번역을 안한다..ㅎ) 박스 안의 내용을 해당 위치에 넣어보자, 아래와 같을 것이다. 결국 처음에 추가했던 define('WP_ALLOW_MULTISITE', true); 다음줄에 넣으면 된다. 운영중인 웹사이트를 멀티사이트로 전환한 것이 아니기에 최초에 워드프레스를 설치한 데이터는 굳이 백업할 필요가 없다. 문제가 발생한다면 db를 초기화 하고 다시 설치하면 그만이다. -_-;

     70  *
     71  * Change this to true to enable the display of notices during development.
     72  * It is strongly recommended that plugin and theme developers use WP_DEBUG
     73  * in their development environments.
     74  *
     75  * For information on other constants that can be used for debugging,
     76  * visit the documentation.
     77  *
     78  * @link https://wordpress.org/support/article/debugging-in-wordpress/
     79  */
     80 define( 'WP_DEBUG', false );
     81
     82 define('WP_ALLOW_MULTISITE', true);
     83 define('MULTISITE', true);
     84 define('SUBDOMAIN_INSTALL', true);
     85 define('DOMAIN_CURRENT_SITE', 'multi.webpress.click');
     86 define('PATH_CURRENT_SITE', '/');
     87 define('SITE_ID_CURRENT_SITE', 1);
     88 define('BLOG_ID_CURRENT_SITE', 1);
     89
     90 /* That's all, stop editing! Happy publishing. */
     91
     92 /** Absolute path to the WordPress directory. */
     93 if ( ! defined( 'ABSPATH' ) ) {
     94         define( 'ABSPATH', __DIR__ . '/' );
     95 }
     96
     97 /** Sets up WordPress vars and included files. */
     98 require_once ABSPATH . 'wp-settings.php';
     99

 

.htaccess의 값을 두 번째 박스값으로 교체하자. .htaccess까지 편집을 마쳤다면 화면의 가장 하단 우측에 있는 로그인을 클릭하여 다시 로그인을 시도해보자. 아래와 같은 새로운(?) 알림판이 열린다.

 

4. 워드프레스 멀티사이트의 추가

새로운 메뉴가 추가되었다.

 

아래와 같이 상단메뉴의 내 사이트 ▶ 네트워크 관리자 ▶ 알림판 메뉴로 들어가보자. 네트워크 관리자 메뉴는 워드프레스 멀티사이트의 메인 관리메뉴이다.

 

아래와 같이 네트워크 관리자알림판은 단순한 메뉴를 보여준다. 이곳에서 새로운 멀티사이트와 사용자를 추가할 수 있다.

 

새 사이트 만들기새 사용자 만들기 버튼을 클릭해서 사이트나 사용자를 추가할 수 있다. 사이트 검색이나 사용자 검색 메뉴를 통해서 새로만들기를 선택해도 결과는 같다. 새 사이트 만들기를 선택하자. 아래와 같다.

사이트 주소는 미리 만들어두었던 서브도메인 중의 하나인 sub1.multi.webpress.click을 사용해 볼 것이다. 아래와 같이 입력한 후에 사이트 추가하기 버튼을 클릭했다. (이메일은 자신의 이메일을 넣어주면 된다. 필수 입력 사항이다.)

 

사이트를 추가하고 나면 아래와 같이 계속 추가할 수 있는 화면이다.

 

| 사이트를 추가했습니다. 알림판에 방문하거나 사이트를 편집하기 메시지를 보니 정상적으로 등록이 된 듯 하다.

미리 만들어 두었던 서브도메인들을 모두 추가하자. 그리고 관리자메뉴의 내 사이트를 클릭해보자. 아래와 같은 화면을 볼 수 있다.

멀티사이트를 하나만 만든 상태에서는 사이트의 개별 알림판에 접근하기가 까다롭다고 느꼈었는데..지금처럼 잔뜩 만들어 놓으니까...명확해졌다. 위의 상태에서 멀티사이트의 주 사이트를 변경설정할 수 있다.

이후의 작업은 워드프레스로 웹사이트를 제작하는 과정과 동일하다.

재미있는 경험이었다. (멀티사이트의 도메인이름(서브도메인)에 한글이 들어간다면..당연히 퓨니코드를 사용해야한다)


[참고 0] (2024-02-08 추가)

2023.07.27 - [Wordpress/etc] - 워드프레스 멀티사이트의 sign-up 페이지를 비활성화 하는 방법..

 

워드프레스 멀티사이트의 sign-up 페이지를 비활성화 하는 방법..

How to disable wordpress Multisite sign-up page? 구글링을 해보니 동일한 질문이 두 개 눈에 띄는데......해결책을 찾을 수 없었다. 이 문제는 '워드프레스 멀티사이트를 만들기 위해서 네임서버를 설정할 때

aegypius.tistory.com

 

[참고 1]

2022.01.19 - [Wordpress/plugin] - 워드프레스 멀티사이트 미디어라이브러리 공유하기

 

워드프레스 멀티사이트 미디어라이브러리 공유하기

워드프레스 멀티사이트는 기본적으로 미디어 라이브러리, 테마, 플러그인이 모두 공유가 가능한 것으로 알고 있었다. 몇 번의 설치와 테스트 과정에서 테마와 플러그인은 공유가 되었기에 당연

aegypius.tistory.com

 

[참고 2]

2022.06.13 - [Linux/서버구축 1.2.3...] - [워드프레스 멀티사이트를 위한] 네임서버와 웹서버의 설정

 

[워드프레스 멀티사이트를 위한] 네임서버와 웹서버의 설정

1년 전에 작성했던 [내 서버에] 워드프레스 멀티사이트 만들고 운영하기에서 나는 와일드카드 DNS를 사용하지 않고, 멀티사이트를 추가할 때 마다 해당 호스트(서브-도메인)에 대해서 네임서버와

aegypius.tistory.com

 

728x90
반응형

댓글