워드프레스를 정적사이트 생성기로 사용

워드프레스를 개인 블로그로 사용해오면서 끝없이 들어오는 해킹 시도를 막는 게 귀찮아서 대안을 찾다가 발견한 방법이다.

 

Jekyll1https://jekyllrb.com/Hexo2https://hexo.io/, Hugo3https://gohugo.io/ 등.. 정적 사이트를 만들어 주는 툴이 많은데 굳이 워드프레스를 개인 블로그로 쓴다고 하면 별스러운 놈 취급 받는 경향이 있다. 텍스트 중심의 블로그 시대가 저문지 오래되었다해도 개인의 역사를 기록하는 것은 그 자체로 의미가 있다고 난 믿는다. 쓸모없이 보이는 하루 한 때의 기록이 몇년 지난 뒤에 어떤 식으로 평가될지 섵불리 판단 할  수 없다. 조선 시대 왕의 일거수 일투족을 기록했던 사무관이 기록했던 것이 현대와서 당시의 시대를 이해하는데 도움되는 정도라고 할수도 없고 어차피 디지털인 정보는 사라지는 건 한순간이니 너무 과하게 생각하지 않는다.  난 생계형 작가가 아니며 잘 쓰는 것도 아니다. 단지 뭔가 기록으로 남기는 걸 좋아할 뿐이다.

 

 발단

난 명령형 정적사이트 생성 툴이 불편하다. 마크다운 형식을 미워하진 않지만 그렇다고 블로그에 쓰는 글에 적합하다 생각진 않는다. 단순히 글을 남기는 용도라면 훌륭하다. 그러나 난 정해진 형식 외에도 실험적인 것들을 모두 담아넣고 싶기 때문에 하루가 다르게 새로운 정적생성 툴이 나오더라도 내겐 고려대상이 아니었다. 또한 내가 아무리 명령형 어플을 선호한다 해도 블로그 글까지 VIM 이나 Spcemacs로 편집하고 싶지는 않다.  MediaWiki 와 Phabricator를 개인 정보 관리용으로 사용하는 건 한계가 분명했기에 한동안 지겹게도 시도하는 워드프레스 해킹 시도를 막는데 시간 좀 보냈었다. 그러다가 문뜩, WP SuperCache 같은 플러그인이 정적 파일을 만들어내서 접근 속도를 높이는 거라면 모든 공개 가능한 컨텐트를  정적파일로 만들어 내면 되지 않겠는가 생각이 들었다.

 

Simple-Static4https://www.simplystatic.co/, WP2Static5https://wp2static.com/ 두가지를 시도해보니 WP2Static 이 월등히 우수하고 내 목적에 맞았다. 라즈베리파이에서 동작 중이던 기존 워드프레스를 걷어내고 NginX 만 사용하도록 변경한 뒤, 내 맥북에서 생성된 정적 파일을 rsync로 전송했다. 덕분에 해킹때문에 신경 쓰던 것과 속도 때문에 라즈베리파이4를 구매할려고 했던 생각들이 한방에 정리됐다. 

 

 공개할 기능 설정과 기존 Permalink 문제

일단 정적 사이트에는 검색 기능을 제공하지 않기로 결정했다. Algoria6https://community.algolia.com/wordpress/ 라는 플러그인의 소스를 약간 수정하면 되지만, 서두에 말했다시피 나는 워드프레스에 민감한 정보를 많이 저장하는 타입이라 Algoria가 내 컨텐트를 싹 쓸어 가는 걸 원치 않는다. 게다가 해당 팀에서 공식적으로 플러그인 지원을 중단했으므로 시간 들여서 소스를 수정할 정도로 사람들에게 보여주고 싶은 컨텐트가 없다는게 검색 기능을 제외한 이유다.  글 목록 페이지를 보거나 분류/태그 등 블로그 방문객이 검객할 방법은 아예 없진 않다. 외부에서 유입되는 건 어차피 구글이 알아서 다 사용자들에게 보여주겠지…

 

검색기능 외에 무분별하게 설정했던 기존 permalink URL이 더 큰 문제였다. 한글로 된 permalink는 WP2Static 생성기가 encoding 해버리는 과정에서 파일이 생성되지만 찾을 수 없는 404 Not Found 상황을 만들어 버린다. 한글 permalink를 사용한 포스트를 일일이 변경시키는 과정은 시간도 제법 잡아먹었고 변경한 뒤에도 뭔가 제대로 동작하지 않는 상황이 반복되었다. 짜증;;; 

결국 SQL을 덤프해서 perl/sed/awk 등으로 일괄 패턴 처리 해버림으로써 일단락했다… 싶었더니, slug 에 한글이 끼어들어간게 또 문제인 것을 뒤늦게 발견… 다시 한번 SequelPro7https://www.sequelpro.com/로 수동 조작해서 정리해버렸다.  이렇게되니 기존 permalink로 들어오는 모든 접근을 rewrite 해야하는 상황이 됐는데,  어차피 내 블로그를 찾는 사람은 페블 언어팩 다운로드가 목적인 사람이 80% 이기 때문에 기존 박살난 permalink rewrite 문제는 걍 포기하기로 결정했다. 뭐.. 그리 중요한 글이 있는 것도 아니고;;;  잔뜩 쌓여져 있는 MediaWiki 글을 블로그에 포함 시킬 수도 있으나 /blog/ 로 시작하는 Base URL이 거슬려 / 로 변경했다. 덕분에 구글링 된 기존 링크는 모두 개털이 됐다. 

 

 Custom Post Type 적극 활용

플러그인 간의 충돌 해결이 제일 시간소요가 많았고 갖가지 문제가 발생해서 추적하느라 힘들었지만 내가 블로그에 담고자 했던 시도를 통일되게 해결하는게 필요했다. MediaWiki 컨텐트를 가져오는 건 너무 쉬운 일인데 CSS 수정에 시간이 좀 들어간다.게다가 추가적인 접근을 차단하기 위해서는 해당 플러그인의 소스를 수정해야 한다. Jupyter-Notebook을 Embed 하는 건 쉬운데 역시 CSS/JS 적용에 통일 된 방법이 필요했다. ReactJS Project를 포스트/페이지에 포함하는 것도 CSS/JS 관련 문제다.  비슷한 모든 문제는 대부분 CSS/JS 적용 방법 때문이었고 그동안 사용하지 않았던 Custom Post Type으로 해결할 수 있어보여 간단한 플러그인을 만들어 넣었더니 의외로 한방에 해결됐다. Custom CSS/JS 관련 플러그인이 많지만 무료에 내 요구사항에 맞는게 없었다. 어쨌든  정말 이번 작업하면서 워드프레스의 설계에 감탄을 금하지 않을 수 없었다. 

 

 WIX8https://ko.wix.com/, Medium9https://medium.com/ 등에 비해 워드프레스가 뒤처진다고 해도 개인적인 사용 용도에는 끝내주는 물건이다

헤아리기 힘들 정도로 많은 수의 플러그인, 테마가 널려있어 입맛대로 선택할 수 있는데다  특정 부분은 내 입맛대로 코드 수정가능하다. 마크다운 기반으로 정적사이트 생성하는 툴과 달리, 수 많은 사용자 플러그인을 지원 받는 워드프레스는 명령행 기반 정적 사이트 생성 툴과 비교할 수 없다고 생각한다.  개인 사진파일과 짤, 화면샷 등의 이미지를 보기좋게 관리할 수 있고 문서내에서 참조하기도 쉽다. Pixave10http://www.littlehj.com/mac/ 어플 같은 근사한 어플의 기능에 비할 수는 없지만 이 어플이 언제 종료될지, 또 내가 계속해서 맥을 쓴다는 보장도 없고 Pixave 기능의 일부에 해당하는 것만 지원되도 문제없어서 워드프레스 갤러리 플러그인으로 만족한다. 한 때 절대 macOS 만 쓰겠다고 생각했던 적 있었지만 인증서 문제로 모든 어플을 다시 다운받아야 했던 사건 이후로 생각이 달라졌다. 게다가 요즘 Window10 도 괜찮아 보인다. 비록 워드프레스 v5 이후로 망조라고 해도 나같은 개인 사용자에겐 충분하다.

 

얼마간은 계속해서 설정을 손봐야 겠지만 워드프레스를 정적사이트 생성툴로 사용한 건 정말 잘했다고 생각한다.  permalink 변경시 NginX rewrite 룰을 자동생성해주는 툴을 달고 블록에디터도 활용할 방법을 찾아 적용하면 개인 정보와 컨텐트 관리용으로서 10년 정도는 계속해서 사용할 수 있지 않을까? 어차피 가상화해둔 공간에서 동작하는 워드프레스이니 그냥 계속 쭉~ 사용할 예정이다.

References   [ + ]

1. https://jekyllrb.com/
2. https://hexo.io/
3. https://gohugo.io/
4. https://www.simplystatic.co/
5. https://wp2static.com/
6. https://community.algolia.com/wordpress/
7. https://www.sequelpro.com/
8. https://ko.wix.com/
9. https://medium.com/
10. http://www.littlehj.com/mac/