시놀로지 NAS로 워드프레스 운영 5개월… 그간의 최적화 팁

배운 게 도둑질이라는 속담처럼 글 쓰는 업(業)을 떠나고 나니 그렇게 싫던 글을 다시 쓰고 싶어졌다. 그래서 5개월 전 블로그를 만들었다. 국내 웹 생태계를 좌지우지하는 포털의 힘을 모르지 않으나, 포털이란 이름의 가두리 양식장에 갇히기 싫었다. 그래서 선택한 것이 설치형 오픈소스 CMS인 워드프레스다.

 

이왕 고난이 길을 걷기로 한 김에 웹 서비스를 할 서버도 가정 내에서 운영 중인 시놀로지 NAS로 운영키로 했다. 단돈 몇 천원이면 나름 괜찮은 호스팅 서비스가 수두룩하지만, 개인 블로그 정도라면 NAS로도 충분하지 않을까란 평소 의문을 이 기회에 풀고 싶었다.

 

그렇게 시작된 블로그 운영이 이제 5개월째에 접어들었다. 튜닝과 검색 최적화에 시간을 할애하는 틈틈이 글을 쓰고 있다. 그러다가 문득 워드프레스를 운영하며 적용해온 최적화 팁을 정리하면 어떨까 싶었다. 여기저기서 얻은 정보를 한 데 모아 정리하는 것에 불과하지만, 하나로 정리된 자료가 없어 고생할 다른 이를 생각하면 이 또한 의미 있는 일이지 않겠는가.

 

NAS SPEC

시놀로지 DS716+ | 인텔 셀러론 N3150 | DDR3L 4GB | DSM 6.1 베타(16년 11월 4일 기준)

 

본론에 앞서
여기서 소개할 최적화 팁 대부분은 터미널 접속과 기초적인 몇 가지 리눅스 명령어에 대한 사전 지식을 요구한다. 기초적인 것인 만큼 간단히 정리하고 본론으로 넘어가겠다.

 

SSH 연결
SSH 연결은 시놀로지 DSM의 제어판에서 ‘터미널 및 SNMP 탭’을 열고 SSH를 활성화하면 된다. SSH는 보안이 적용된 터미널 통신으로 원격지 대상에 커맨드 기반의 명령어를 전달할 수 있다. 많은 기능이 GUI로 구현돼 있지만, 그렇지 않은 것은 SSH로 설정할 수 있다.
윈도우라면 putty를, 맥OS인 경우 응용 프로그램 내 유틸리티에 있는 터미널에서 ‘ssh root@NAS IP’를 입력하면 SSH로 NAS에 접속할 수 있다. 참고로 root 계정으로의 로그인은 시놀로지 DSM 6.0에서 ROOT로 로그인하려면을 참고하면 된다.

 

· 맥에서 SSH로 NAS에 접속하는 예
ssh root@192.168.1.249

 

기초적인 리눅스 명령어 두 가지
여기서 알아야 할 기초적인 리눅스 명령어는 디렉토리간 이동 명령어인 cd와 파일의 텍스트를 편집할 수 있는 vi 이 두 가지다.

 

· cd 명령어

 

· vi 에디터

 

보안과 검색순위 두 마리 토끼를 잡기 위한 ‘HTTPS 적용’
시놀로지 NAS의 패키지로 워드프레스를 설치하고자 한다면 그 전에 SSL부터 적용하길 권한다. HTTPS은 웹 프로토콜이란 통로에서 오가는 텍스트를 암호화하는 보안상의 이점뿐 아니라 구글 검색 결과에서 상위에 노출되는 데에도 HTTPS이 도움이 되기 때문이다. 이와 관련해서는 별도의 포스트로 정리했으니 다음의 글을 참고하길 바란다.

 

무료일 뿐 아니라 5분이면 적용… 시놀로지 NAS와 HTTPS(SSL)

 

최근 가장 핫한 워드프레스 최적화 방법 ‘PHP 7’에 주목하라
최근 워드프레스 최적화 방안 중 가장 주목받는 것은 다름아닌 PHP 7이다. 지금까지 대부분의 워드프레스 호스트는 PHP 5.6을 사용하는데, PHP 7은 5.6 버전 대비 메모리 사용량이 30% 줄었음에도 성능은 오히려 2~3배 향상됐기 때문이다. 최근 공개된 시놀로지 DSM 6.1 베타 버전부터 PHP 7을 패키지 형태로 제공하고 있다. 그 설치 방법과 설정은 다음 포스트를 참고하길 바란다.

 

‘느릿느릿’ 시놀로지 NAS의 워드프레스, PHP 7으로 ‘빠릿빠릿’

 

워드프레스 주소의 ‘/wordpress’ 제거하기
시놀로지의 패키지를 통해 워드프레스를 설치하면 워드프레스의 기본 경로는 web/wordpress/가 된다. 도메인의 끝에 ‘/wordpress/’가 붙으며 주소가 길어지는 것이다. 검색 최적화 등에 주소가 중요한 만큼 ‘/wordpress/’란 디렉토리 명을 주소에서 제거하는 게 좋다. 이 팁은 워드프레스 주소를 바꾸는 것인 만큼 설치 초기에 적용해야 리다이렉트 등 불필요한 작업을 줄일 수 있다.

 

워드프레스 관리자 페이지의 설정에 있는 사이트 주소에서 ‘/wordpress’를 삭제한다.

 

설정의 고유주소로 이동하면, 사이트 주소 변경에 맞춰 고유주소도 바뀌어 있을 것이다. 별다른 변경 없이 하단의 저장을 클릭한다.

 

DSM의 파일 스테이션을 열고, web/wordpress 폴더 내에 있는 index.php와 .htaccess 두 파일을 web 루트 폴더에 복사한다.

 

web 루트로 복사한 index.php 파일을 텍스트 편집기(패키지 설치로 이용 가능)로 열고, 맨 아래에 있는 require( dirname( __FILE__ ) . ‘/wp-blog-header.php’ );를 require( dirname( __FILE__ ) . ‘/wordpress/wp-blog-header.php’ );처럼 ‘wordpress’를 추가하고 저장한다.

 

끝으로 한번 더 워드프레스 관리자 페이지의 설정 내 고유주소 메뉴를 클릭하고, 저장을 누른다.

 

이제 http://시놀로지 NAS 주소를 입력하면 워드프레스 페이지가 열릴 것이다. 이전처럼 /wordpress를 붙이지 않아도 되는 것이다. 이처럼 사이트 주소를 변경했더라도 관리자 페이지 접속 주소는 기존과 같다. 즉 http://시놀로지 NAS 주소/wordpress/wp-admin으로 워드프레스 관리자 페이지에 접속할 수 있다.

 

1~2GB 남짓의 NAS 메모리 용량에 맞춰 적용된 웹 서버의 캐시를 늘려라
기기마다의 최적의 코덱으로 영상을 변환하는 트랜스코딩, 다수가 접속하는 서비스 등으로 인한 부하 상황에서도 NAS의 메모리 사용량은 30%를 넘지 않는 게 태반이다. CPU 의존적인 서비스 특성 때문이지만 1~2GB 남짓에 불과한 메모리 용량에 맞춰 설정된 것에서도 원인을 찾을 수 있다. 이러한 최소 용량으로 설정된 웹 서버 캐시를 늘리는 것만으로 워드프레스의 로딩 속도를 조금이나마 높여 체감 성능을 향상시킬 수 있다. 캐시는 버퍼 메모리라고도 하는데, 빈번히 쓰이는 데이터를 캐시 영역에 두고 빠르게 읽어 성능 향상을 꾀하는 기법이다. 캐시는 프로세서와 같은 하드웨어부터 소프트웨어 등에 광범위하게 쓰이고 있다. 여기서 소개하는 최적화 팁 대부분 또한 이 캐시와 관련이 있다.

 

출처 | Speeding Up WordPress on Synology

 

PHP 환경 변경
vi 편집기로 /etc/php/php.ini를 다음과 같이 수정한다.

 

 

마리아DB(MariaDB) 설정 변경
volume1/@appstore/MariaDB/etc/mysql/my.cnf도 vi 편집기로 다음과 같이 수정한다.

 

 

PHP 성능 개선
워드프레스는 대표적인 PHP 애플리케이션이다. PHP 캐시 활성화로 조금이나마 성능 향상을 꾀할 수 있다. APC(Alternative PHP Cache)와 같은 캐시 기술이 대표적인데, DSM의 웹 스테이션의 PHP 설정 탭에서 ‘PHP 캐시 활성화’를 체크하는 것만으로 캐시를 활성화시킬 수 있다.

 

.htaccess 설정
htaccess는 하이퍼액세스(Hyper Access)의 줄임말로, 아파치 웹 서버의 디렉토리별 설정이 저장되는 파일이다. htaccess는 웹 서비스의 성능뿐 아니라 보안과도 밀접한 관련이 있는 중요 파일이다. 시놀로지 NAS 내 web 디렉토리의 루트(최상위 폴더)에 숨김 파일로서 존재하는데, 워드프레스의 고유주소나 Site URL을 변경하면 생성된다. htaccess는 텍스트 에디터나 vi 에디터 등으로 수정할 수 있는데, 다음의 코드를 추가하자.

 

텍스트, HTML, 자바스크립트, CSS, XML 등을 압축해 트래픽 절감하기

 

이미지, 자바스크립트, CSS 등에 브라우저 캐시 적용하기

 

특정 폴더에 index.php가 없는 경우 전체 디렉토리를 목록화 하는 것을 방지하기

 

HTML, 자바스크립트 등을 GZIP으로 압축해 트래픽 줄이기

 

워드프레스의 주요 파일의 수정 금지하기

 

CSS와 자바스크립트를 압축해 트래픽을 줄여라
워드프레스뿐 아니라 테마, 플러그인 등에는 많은 CSS와 자바스크립트 파일이 여기저기에 흩어져 있다. 수많은 응답과 요청이 수차례 있는 뒤에야 이러한 파일 하나를 다운로드하게 된다. 이처럼 흩어진 CSS와 자바스크립트를 각각 하나의 파일로 묶으면 웹사이트 반응성을 높이는 동시에 트래픽도 절감할 수 있다. 워드프레스라는 Better WordPress Minify라는 플러그인을 설치하는 것만으로 이러한 작업을 손쉽게 적용할 수 있다. 뿐만 아니라 파일 내 공백, 주석 등을 제거하는 식으로 파일 용량도 줄일 수 있다.

 

이미지 용량을 줄이고 CDN을 활용하라
글 못지않게 중요한 게 시각적인 요소다. 그에 따라 점차 더 많은 이미지가 쓰이는 추세다. 이미지는 텍스트 대비 수십 배의 용량을 차지한다. 적절한 최적화가 없다면 트래픽뿐 아니라 웹사이트 로딩 속도에 지대한 영향을 끼칠 수 있다. 사진이라면 jpg를, 그래픽 이미지라면 gif가 용량 절감 측면에서 유리하다. 아울러 이미지의 크기, 품질도 최적화해야 한다. EWWW Image Optimizer는 이러한 이미지 품질 최적화를 해주는 대표적 플러그인이다. 설치하면 워드프레스의 미디어 메뉴에 최적화 메뉴가 활성화된다.

 

만약 이미지 최적화만으로 부족하다면 CDN(Contents Delivery Network) 서비스를 고려할 수 있다. CDN은 영상, 이미지, 음악 등의 콘텐츠를 효과적으로 전송하기 위해 분산된 서버에 저장해 전송하는 네트워크다. 전 세계 어디서 접속하든 지리, 속도 등에서 최적의 서버가 콘텐츠 전송을 맡게 된다. 글로벌 서비스를 위해 고안됐으나 최근에는 블로그나 웹사이트의 트래픽 절감이나 지연 최소화를 목적으로 활용되기도 한다.

 

워드프레스의 경우 다양한 CDN 서비스와 손쉽게 연동할 수 있다. Cloudinary가 대표적이다. Cloudinary는 플러그인 형태로 손쉽게 설치할 수 있고, 2GB 저장공간, 한달에 5GB 대역폭을 무료로 제공한다. Cloudinary 가입 후 플러그인을 설치하고 간단한 인증을 거치면 워드프레스와 연동된다. 워드프레스 미디어에서 이미지를 선택적으로 CDN으로 옮길 수 있는데, 옮겨진 이미지의 주소는 자동으로 CDN상의 주소로 변경된다. 최근에는 Cloudinary과 같은 CDN 외에도 드롭박스나 구글 드라이브, 구글 포토 등의 퍼블릭 클라우드도 워드프레스 CDN으로 활용하는 추세다.

 

데이터베이스를 다이어트하라
워드프레스에 글하나 올릴 때면 십여 개의 리비전 파일이 생성된다. 이러한 임시 파일은 데이터베이스에 지속적으로 쌓여 전반적인 성능 하락을 유발한다. 이러한 리미전 파일뿐 아니라 임시 저장, 스펨 댓글 등 각종 임시파일을 정리해 최적의 성능을 유지시켜주는 것이 WP Cleanup Optimizer Lite Edition 플러그인이다. phpMyAdmin과 달리 데이터베이스에 대한 지식이 없어도 정리 버튼 한 번으로 데이터베이스 최적화를 수행할 수 있다.

 

HTML에도 캐시를 적용하라
앞서 밝혔듯 워드프레스 최적화의 대부분은 캐시와 관련이 있다. 워드프레스 최적화의 첫 걸음 또한 캐시 플러그인 설치인데, 그 중 하나가 WP Super Cache다. 워드프레스로부터 정적인 html 파일을 압축해 생성하고 웹서버 대신 전달하는 캐시 역할을 한다. WP Super Cache는 댓글이나 포스트 내용 등이 변경될 때마다 새로운 정적 html 파일을 생성하는 기능도 제공한다. 이와 관련된 설정 방법은 워드프레스 정보꾸러미의 한 포스트를 참고하기 바란다.

 

자바스크립트와 CSS는 비동기로 처리하라
워드프레스에서 자바스크립트와 CSS는 동기적으로 처리된다. 즉 a, b, c라는 처리해야 할 일이 지정돼 있을 때 그 순서대로만 처리된다. b 처리가 아무리 오래 걸려도 b가 끝난 뒤에만 비로소 c라는 일을 처리한다. 비동기란 a, b, c란 일을 동시에 처리함을 의미한다. 자바스크립트와 CSS를 비동기로 처리하면 웹 로동 속도를 좀 더 높일 수 있다.

 

개발자가 아니라도 걱정이 없다. Async JavaScript와 WP Async CSS 두 플러그인을 설치하고 한 두 개의 옵션 선택만으로 적용할 수 있기 때문이다. 두 플러그인 모두 설정에서 활성화시키는 것만으로 적용되는데, CSS 플러그인 경우 비동기로 처리할 CSS를 직접 선택해야 한다. 비동기 처리 시 웹 렌더링에 일부 문제가 있을 수 있다. 이 경우 문제가 되는 부분은 예외 처리하는 등이 처리가 필요하다.

 

공통 라이브러리는 외부 서버를 활용하자
워드프레스뿐 아니라 많은 웹사이트에는 공통적으로 쓰이는 라이브러리가 있다. 제이쿼리, 제이쿼리 UI와 같은 라이브러리가 그것이다. 이러한 공통 라이브러리들은 구글의 CDN 분산 서버에서 다운로드하도록 바꿀 수 있다. 이를 통해 호스팅 서비스의 트래픽도 줄이고 웹 로딩 속도도 높일 수 있다. 적용 방법은 무척 간단하다. 그저 Use Google Libraries 플러그인을 설치하고 활성화하기만 하면 된다.

suhyeoni

suhyeoni@gmail.com

11 Comments
  • Redmilk

    좋은글 잘보고 갑니다. 덕분에 좀 워드프레스가 빠릿해졌네요

    05. Feb 2017 at 1:18 오전 응답
    • suhyeoni

      네!! 도움이 됐다니 기쁘네요 ^ㅡ^

      08. Feb 2017 at 11:48 오후 응답
  • Klaus

    답변 감사드립니다.^^
    상기 포스팅까지 참고 해서, 고유주소까지 저장했는데요.
    고유주소 저장, .php 파일 수정, .htaccess 파일 수정까지 모두 제대로 이루어졌는데,
    지정 URL로 접속하면 시놀로지 NAS 화면이 나오네요.
    혹시 짐작 가시는 바가 있으실지 문의 드립니다.
    앞에 써주신 포스팅은 정말 큰 도움이 되었습니다. 다시한번 감사드립니다.

    26. Apr 2017 at 8:45 오전 응답
    • suhyeoni

      혹시 사이트 주소가 어떻게 되시나요

      26. Apr 2017 at 9:32 오후 응답
    • suhyeoni

      만약 시놀리지 웹스테이션 페이지가 열린다면 Web 폴더 안에 있는 index.html을 @@index.html로 이름을 바꾸시기 바랍니다.
      아울러 해당 도메인/index.php로 접속을 시도해 보시겠어요!

      26. Apr 2017 at 11:19 오후 응답
  • sili96885

    현재 워드프레스로 홈페이지를 구축해두었는데, 나스를 최근에 새로 구입하게 되면서
    호스팅을 개인 나스에서 하면 어떨까? 기존 워드프레스를 그대로 잘 옮길수 있을까? 하는 걱정이 생깁니다.
    옮기는 것을 추천하시는 편인가요? 궁금하네요

    07. May 2017 at 12:23 오전 응답
    • suhyeoni

      전 NAS를 좀 더 유용하게 활용할 수 없을까란 생각에서 NAS에서 워드프레스를 운영하고 있습니다. 1년 가량 큰 문제 없이 운영하고 있지만 단점이 없는 것은 아닙니다.

      NAS는 저전력, 저비용의 파일 서버를 목표로 설계됐기 때문에 성능 면에서 만족스럽지는 않습니다. 제 사이트는 테마가 무거운 탓도 있지만 그리 빠르게 열리진 않죠 ^^;

      가벼운 테마를 쓰고, 개인 블로그 성격의 사이트라면 크게 문제되진 않겠지만요.

      결론만 말씀드리면 생각보다 어렵지 않게 사이트는 이전할 수 있습니다.
      기존 호스팅 서비스를 그대로 두고 재미삼이 NAS에 옮겨보시는 것도 가능합니다.

      NAS에 동일한 테마, 플러그인을 설치하고 가져오기 기능을 통해 글과 이미지를 가져오시면 됩니다. 물론 테마타 wp-content 폴더를 복사하는 것도 가능합니다(단 이 경우 권한 문제 등이 생길 수도 있습니다.)

      07. May 2017 at 1:07 오전 응답
  • iwaly

    출처를 표기하고 퍼가되 되는지요? 내용이 좋습니다. 글 감사합니다.

    25. Jul 2017 at 12:21 오전 응답
    • suhyeoni

      네! 출처 표기만 꼭 부탁드립니다 ^ㅡ^

      25. Jul 2017 at 1:24 오전 응답
  • 익명

    안녕하세요 좋은글 잘읽고 있습니다.
    다름이 아니라 제가 블로그를 운영중인데요 호스팅 비용도 아깝고 해서
    직접 시놀로지 나스를 구입후 서버를 운영 해보려 하는데 제품 선택 기로에서 막혔습니다.
    블로그 동접자가 하루에 1500명 정도 인데 제가 보고 있는건 218+ 와 718+중 고르려고 합니다.
    시놀로지 나스가 동접 하루 1500명이상 소화 할수 있을까요?

    10. Jan 2018 at 1:00 오후 응답
    • suhyeoni

      DS716+를 사용 중인데, 부하 테스트를 한 적이 있습니다. 동시접속인 경우 기억이 가물가물한데 100명인가 1000명 동시 접속이면 정상적인 서비스가 어려웠습니다. (여기서 동시접속은 100명/1000명이 동시에 사이트에 접속했을 때를 말합니다)

      09. Feb 2018 at 7:56 오후 응답

Post a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.