서버 운영/워드프레스(Wordpress)

워드프레스(Wordpress) 5.0.3 멀티사이트 구성 03 - 네트워크 활성화(Vi를 이용한 wp-config.php 파일과 .htaccess 파일 편집)

씨실과 날실 2019. 2. 23. 09:00

vi를 통한 파일 편집에 대한 소회

개인적으로 프로그래머도 아닌데 익숙지도 않은 vi 문서 편집을 굳이 시간을 들여가며 공부할 필요가 있는지에 대해서는 회의적입니다. 물론 서버 관리자나 전문 프로그래머는 vi 같은 텍스트 기반 편집 프로그램이 보다 익숙하고 또 생산성도 높을 겁니다. 그러나 업(業)이 아니라면 문서 편집 시 겪게 되는 그 무수한 상황에 대한 수많은 명령어들을 언제 다 익히고 자유자제로 사용할 수 있겠습니까?

vi 사용법 학습은 굉장히 오랜 시간이 듭니다. 자주, 그리고 오랫동안 사용해야 빠르게 익힐 수 있는 진입장벽이 높은 프로그램입니다. 코드를 매일같이 보고 사는 사람이 아니라면 우리가 이 코드를 보면 얼마나 보겠습니까? 그렇다는 얘기는 코드를 작성하거나 편집하는 일이 적다는 것이고 그것은 vi 등을 사용할 기회가 적어진다는 것이며 이 이야기는 vi를 익힐 절대적 시간량이 부족해진다는 말이 됩니다.

프로그래머들이 vi 등 텍스트 기반 편집기를 사용하는 이유는 짧은 시간 안에 많은 양의 코드를 작성, 편집하기 위해서 입니다. 한마디로 생산성 향상을 위해서입니다. 분명 익숙해지면 생산성이 높아지지만 그 수준까지 오르는데 많은 시간이 투자되어야 하는데 우리와 같은 보통 사람들은 그정도까지 코드 작성에 생산성 향상을 추구할 필요 없습니다. 우리는 기껏해야 다른 이들이 만들어 놓은 도구를 자신의 환경에 맞게 일부 수정하여 사용하는 수준에서 그치기 때문입니다. 즉 생산성 향상의 유인이 적습니다.

우리가 gedit와 같은 편집기를 쓰나 vi를 쓰나 생산성에는 큰 차이는 없을 겁니다. 아니 vi 같은 경우는 익숙지 않기 때문에 속도가 현저하게 느려질 것입니다.

따라서 반드시 vi를 배우기 위해 시간과 노력을 소비할 필요는 없다는 것이 제 생각입니다. 중요한 것은 주체는 사람이며, vi 등은 단지 필요에 의해 개발되고 사용되는 도구에 불과합니다. 따라서 꼭 필요하지 않는다면 다른 익숙한 대체제도 많은 요즘 환경에서 굳이 vi를 고집할 필요는 없다는 것이 제 생각입니다.

그럼에도 불구하고 vi를 이용한 wp-config.php 파일과 .htaccess 파일 편집 방법을 안내하고자 합니다. 이유는 지난 연재에서도 말씀드린 적이 있지만 리눅스와 서버 등을 처음 접하는 초심자 분들께 보다 다양한 경험을 접하게 해드리기 위해서입니다.

부족한 제 연재가 여러분들께 조금이나마 도움이 되기를 바랍니다.

vi 편집

위 글의 작업을 마친 분들은 사실 이 글을 굳이 보실 필요는 없습니다. 그러나 Vi 사용법을 익히실 분은 한번쯤 훑어 보시는 것도 나쁘지 않을 겁니다.

워드프레스 네트워크 설치 메뉴 활성화

wp-config.php


네트워크 활성화

wp-config.php


study@study-VirtualBox:~$ cd /var/www/html/wp
study@study-VirtualBox:/var/www/html/wp$ vi wp-config.php

위처럼 워드프레스를 설치한 디렉토리로 이동한 후, wp-config.php파일을 vi로 열어줍니다.

그러면 위 그림처럼 터미널에 wp-config.php 파일의 내용을 볼 수 있습니다.

화면에서 각 줄의 끝마다 ^M이 붙은 것을 볼 수 있는데요. 이는 텍스트 파일을 생성시 사용된 운영체제와 다른 운영체제의 시스템에서 불러온 경우(예를 들어 윈도 시스템에서 만든 문서 파일을 리눅스 시스템에서 불러올 경우) 붙게 됩니다.

이는 개행 문자 처리방식이 달라 생긴 문제로 이것들은 수정하지 않아도 큰 문제는 없습니다.


코드를 편집할 때 줄번호가 없다면 굉장히 불편합니다. 그러니 각 줄마다 줄번호가 보이도록 설정해줍니다.

:set nu

vi로 파일을 연 직후는 명령어 모드 상태입니다. 이 상태에서 :(쌍점)을 누르면 특수 명령을 사용할 수 있는 ex모드로 전환됩니다.

set nu는 set number의 약자입니다.

그후 /키를 눌러줍니다. /는 vi에서 특정 문자열을 찾을 때 사용합니다.

/That's all, stop editing!

해당 문자열이 포함되어 있는 줄의 전체 내용은  /* That’s all, stop editing! Happy blogging. */ 입니다만 이것을 모두 입력하여 검색하면 검색이 되지 않습니다.

위 그림처럼 찾은 문자열의 첫 글자에 커서가 위치하게 됩니다.

여기서 esc키를 눌러 명령어 모드로 전환 후 대문자 O키와 esc키를 번갈아 입력하여 아래 그림처럼 적당히 빈 줄을 만들어 줍니다. 그후 명령어 모드 상태에서 화살표키를 움직여 코드를 입력할 자리에 커서를 위치시킵니다.

vi는 3가지 모드를 가지고 있습니다.

일반 명령을 실생하는 명령어 모드(command mode)

내용을 입력하는 입력모드(insert mode)

특수 명령을 실행하는 ex모드(ex mode)

vi 실행 시 기본 모드는 명령어 모드입니다.

명령어 모드에서 i, I, o, O 등을 입력하여 입력모드로 전환합니다.

명령어 모드에서 :(쌍점)을 입력하여 ex모드로 전환합니다.

입력모드나 ex모드에서 esc키를 입력하여 명령어 모드로 전환합니다.

입력모드와 ex모드 상호간 직접 전환은 불가능합니다. 반드시 명령어모드를 거쳐서 전환을 합니다.


저의 경우는 추가하는 코드를 손쉽게 찾아 알아볼 수 있게 define( 'WP_ALLOW_MULTISITE', true ); 구문과  /* That's all, stop editing! Happy blogging. */ 구문 사이 위 아래로 한 줄씩 비운 상태에서 아래 그림처럼 코드를 추가하였습니다.

추가한 코드는 다음과 같습니다. 참고로 아래 코드는 제 서버 환경을 확인하여 워드프레스에서 제공한 코드입니다.

여러분의 서버 환경에 따라 약간씩 코드 내용이 달라지게 됩니다. 따라서 제가 알려드린 코드는 하나의 예시로만 참고하시고 워드프레스에서 제공한 코드를 추가하시기 바랍니다.

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'localhost');
define('PATH_CURRENT_SITE', '/wp/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1); 

각 구문마다 ;(세미콜론)을 빠뜨리지 마시기 바랍니다. ;(세미콜론)은 각 구문의 완료를 알ㄹ히는 표시입니다. 이 표시가 없으면 각 구문이 종료되지 않고 내용이 이어지는 것으로 프로그램이 인식하게 되어 오류가 발생합니다.

입력 완료 후 esc키를 눌러 명령어 모드로 전환 후 위 그림처럼 저장하고 나가기 명령어를 실행해줍니다.

:wq

:w는 저장하기, :q는 나가기 명령어입니다. 따라서 저장 후 종료하려면 위 예시처럼 실행해주시면 됩니다.

저장하고 나오면 위 그림처럼 터미널이 이전의 프롬프트 상태로 돌아옵니다.

.htaccess

wp-config.php 파일을 수정한 후 이제 .htaccess파일을 수정해줍니다. 그런데 이 .htaccess 파일은 wp-config.php 파일과 명령이 약간 다릅니다.

만약 .htaccess 파일을 wp-config.php 파일처럼 일반적인 방법으로 vi를 실행, 편집 후 저장 명령을 실행시키면 위 그림처럼 오류(E45)를가 발생합니다.

.htaccess 파일은 일반 계정의 경우 읽기 전용으로 설정되어 있어 관리자 권한으로 명령을 실행해주어야 합니다.

study@study-VirtualBox:/var/www/html/wp$ sudo vi .htaccess

.htaccess 파일을 vi로 열면 위와 같은 화면을 볼 수 있습니다.

wp-config.php 파일과 마찬가지로 줄번호를 매깁니다.

:set nu

.htaccess 파일은 내용이 굉장히 적어 굳이 줄번호를 매기지 않고 바로 다음 단계로 넘어가도 큰 문제가 없을 겁니다.

이렇게 줄번호를 매겼으면 이제 내용을 편집합니다.

.htaccess 파일은 <IfModule mod_rewrite.c>와 </IfModule> 사이의 코드들을 지우고 워드프레스가 서버 환경에 맞게 제공한 새 코드들을 입력합니다.

명령어 모드 상태에서,

커서를 위 그림처럼 첫 번째 Rewrite 구문에 위치시킵니다.

6dd를 입력하여 4번재 줄부터 9번째 줄까지 6줄의 코드를 삭제합니다.

O(대문자 O)를 입력하여 커서 위에 빈줄 하나를 만들고 그 상태에서 새 코드를 입력해줍니다.

입력 완료 후, esc키를 눌러 명령어 모드로 전환 후 :wq를 실행해줍니다.

위 과정을 하기 전에 cp 명령어를 이용하여 .htaccess 파일을 꼭 백업하도록 합시다.

개인적으로 기존 코드들을 위 작업처럼 지우는 것을 추천드리지 않습니다. 지우지 않고 주석처리하면 추후에 파일을 복원할 때 굉장히 편리합니다. 실수로 백업을 하지 않았을 때도 기존 코드들이 파일 안에 살아 있으므로 주석 표시만 제거하면 그대로 살릴 수 있습니다.

개인적으로 위 과정 대신 다음과 같이 작업하시기를 추천합니다. 위 그림 상태의 명령어 모드 상태에서 v를 누르고 나서 화살표키로 아래 그림과 같이 블록을 씌워줍니다.

위 그림처럼 <IfModule mod_rewrite.c>와 </IfModule> 사이의 코드들을 블록으로 씌워 주시면 됩니다.

블록을 씌운 상태에서 :(쌍점)을 누르면 위 그림처럼 ex모드의 명령 대기 상태 모습이 :상태에서 :'<,'>로 바뀝니다.

:'<,'> 상태에서 다음과 같이 명령을 실행해줍니다.

:'<,'>norm i#

# 표시 뒤에 스페이스 바로 한 칸 띄어 준 다음 실행해주세요.

그럼 위 그림처럼 해당 코드들에 주석처리가 됩니다.

명령어 모드 상태에서 커서를 첫 번째 rewrite 구문에 두고 대문자 O와 esc키를 번갈아 입력해 적절히 빈 줄을 생성하고 입력모드 상태에서(O를 입력하면 빈줄이 생김과 동시에 바로 입력몯 상태가 됩니다.) 새 코드를 입력해줍니다.

wp-config.php 의 경우와 마찬가지로 워드프레스가 자기가 설치된 서버에 맞게 설정한 값의 새 코드를 입력해주시면 됩니다.

RewriteEngine On


RewriteBase /wp/ RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L]

위 코드는 새 코드의 예시일 뿐입니다. 이 코드를 그대로 복사해 붙이지 마시기 바랍니다. 워드프레스가 제공한 새 코드를 사용하시기 바랍니다.

이제 명령어 모드에서 :wq를 실행하여 저장하고 빠져 나갑니다.

이것으로 vi를 이용한 wp-config.php 파일과 .htaccess 파일 수정은 끝입니다.

수고하셨습니다.