자유 게시판 테스트용으로 쓴 글입니다.
페이지 정보
본문
1. 개요[편집]
2000년대 초반부터 쓰이고 있는 PHP 기반 오픈소스 설치형 인터넷 게시판 프로그램(CMS). 홍석명이 처음 개발하였으며 "에스아이알소프트"라는 회사를 설립하여 지속해서 업데이트하면서 배포하고 있다. 독자적인 라이선스를 사용하고, 게시판 밑에 저작권 표기하라고 했던 제로보드와는 달리 GNU 개념의 프로그램이고, LGPL 라이센스를 사용한다. 이름부터가 자유 소프트웨어를 뜻하는 '그누(GNU)'일 정도. 라이선스 자체가 오픈소스인데다 유저가 만든 스킨이나 플러그인에는 GPL을 적용 안 해도 된다는 예외 조항이 있기 때문에, 스킨이나 플러그인 개발이 많고 여러 가지 웹빌더도 나와 있다. 권장 설치 PHP 버전은 PHP 7.2 이상이다. 버그가 있거나 고칠 점은 공식 Git 저장소에 이슈로 남기자.
2. 특징[편집]
PHP 처음에 나온 목적대로 PHP 를 통해 HTML을 수정 후 출력하는 구조라 쉬운편이다.[1] 깃허브에는 오픈소스로 공개되어 있지만 개발, 사용자 문서화가 부족해서 소스코드를 보거나 QnA 를 참고해야한다. 깃헙에 이슈사항을 올리자 소셜 로그인과 훅스 기능이 있다. 훅스기능이 들어간 이후로는 개발자는 스킨이나 테마에서 훅스로 기능을 추가하면 되고 코어는 건들지 않고도 개발 가능하다.[2]
업데이트는 꾸준히 한다. 특정일이 정해진건 아니지만 적어도 한달에 한번은 나온다. 게시판과 쇼핑몰에 필요한 기본적인 기능은 다 있어서 기능추가는 적어도, 보안 패치가 꾸준히 나오는 편. 예전에는 기능 추가를 위해서 그누보드 원본의 소스 코드를 직접 수정하는 일이 다반사라서, 너무 많이 고쳤을 경우 업데이트가 어려워지거나 못하게되는 문제점이 존재한다. 그나마 5.1 버전에서 테마에 커스텀 라이브러리를 추가할 수 있는 기능을, 5.4 버전에서 후크 기능이 들어가서 소스 수정할 일은 전보다 줄어든 편이다. 그누보드는 탈퇴시 개인정보 중 아이디, 닉네임, 이름만 남기고 나머지 정보만 삭제한다.[3] 그래서 탈퇴 후 재가입할 때, 탈퇴했던 아이디로는 가입할 수 없다.(사이트 운영자가 별도로 삭제하지 않는 한..)
3. 설치 환경[편집]
그누보드 5.3 이상을 설치하려면 다음과 같은 조건이 필요하다. PHP 5.2.17 이상 ( 최소버전 요구) ~ 8.2 지원 (PHP 7.2 이상 권장. webp 이미지 처리가 PHP 7.1 부터 지원하기 때문에) MariaDB 10.2 이상 또는 MySQL 5.6 이상 [4] utf8mb4 인코딩으로 설정해야 현재 그누보드 코드상의 SQL 인젝션 공격당하는 문제를 조금이나마 줄일수있다. [5] 필요 PHP 모듈 : curl, gd, mbstring, mysql[6], xml, zip, openssl[7] 선택 PHP 모듈 : exif[8], fileinfo[9]
리눅스 VPS 가상서버 또는 클라우드 서버를 기준으로 그누보드 홈페이지를 운영할 수 있는 최소 사양은, 한적한 블로그나 조용한 사이트는 2GB 메모리와 1 vCPU면 원활하게 돌아간다. 동시 사용자가 50명 정도까지는 사이트의 경우에는 2GB 메모리는 있는 것이 좋고, 활발한 사이트의 경우에는 4GB 메모리와 2+ vCPU가 권장 사양이다. 그누보드는 DB 쿼리를 많이 호출하므로 DB 에 메모리를 더 할당 하는게 성능에 도움된다.
3.1. 장점[편집]
CMS(콘텐츠 관리 시스템)인 한국형 게시판 솔루션이라 화면 디자인만 바꿔서 게시판을 만들 수 있다. 국내 CMS 중에서는 관리자 페이지, KCP, 이니시스, 토스 등 결재 연동과 간편 본인인증까지 이미 다 개발되어있어 편리하다. 소셜로그인 기능으로 네이버, 카카오, 구글, 페이스북 등 다양하게 지원한다. 회원레벨을 설정해서 포인트를 주는 시스템도 있다. 서버 개발을 잘모르는 사람도 웹호스팅을 통해 설치하고 스킨만 수정하는식이라 간단한다. 커뮤니티가 활성화 되어있어서 사용하다가 모르는게 있으면 SIR 커뮤니티에 질문올리면 답변이 금방올라오고 기존 질문 답변도 많아서 해결하기 쉽다
3.2. 단점[편집]
처음 개발 당시 PHP 프로그램들은 MVC 아키텍쳐와 같은 (2000년대 후반이후 보편화된 웹 서버 개발 방법론)을 쓰지 않았는데 그누보드도 그렇다. 하나의 파일 안에서 SQL 쿼리를 실행하는 코드와 HTML을 출력하는 코드가 같이있다. 컨트롤러로만 이루어져있어야 할 /bbs 경로에 있는 코어 파일들 조차 HTML을 출력하는 경우가 있어서 테마/스킨만으론 고치지 못하는 HTML 구조가 있으며, 그리고 뷰로만 이루어져있어야 할 스킨 경로의 파일에서 SQL쿼리를 직접 실행하는 경우도 많다.
2016년 이후로 웹개발에 대세가된 SPA, 리엑트나 뷰 같은 프론트 화면을 SPA가 아니더라도 SSR(서버사이드 렌더링)하는 NextJS, nuxtJS 등도 못쓴다. SSG(정적사이트 생성) 개발도 마찬가지. SPA 의 등장이후 SSR. SSG 등 프론트 프레임워크들과 서버는 JSON 을 주고받는 구조로 가고있기 때문이다. 즉 리엑트나 Vue.js 를 붙일 수가 없다.REST API를 지원하지 않는것 때문에 API만 가져다쓰는 형식의 프론트엔드와의 조합은 소스를 마개조 수준으로 수정하지 않으면 불가능하다.
그누보드로 흥한 사이트들의 앱 서버 개발할때도 인증부분을 제외하면 기존 코드를 재활용하기 거의 불가 하기때문에 (위의 이유로) 서버로직을 새로 개발해야되는 상황이 생긴다. 보통 이런경우는 CMS 사용을 권장하지않는다 애초에 CMS 라는 프로그램과는 맞지가 않기 때문이다. CMS 는 컨텐츠(게시판) 관리 프로그램이지 개발을 편하게 해주는 도구가 아니다 REST API 를 지원하는 프레임워크를 이용한 개발이 권장된다. [10]
많은 에이전시들이 프레임워크를 안쓰고 단순 CMS 를 가지고 개발을 하려고 하니까 위와같은 문제가 발생하는것이다.
물론 단순 홍보페이지들에서는 상관없는 이야기다.
그누보드의 보안적인 측면을 보면, 기본적으로 제로보드와 비슷한 구조를 가지고 있다보니 SQL prepared statement 미지원, extract 함수로 구현한 외부 입력값의 변수화 (PHP 언어에서 업데이트하면서 막은걸 다시 구현한 것. )등 제로보드의 보안 취약점을 그누보드도 고스란히 가지고 있다. 이 보안 문제는 업데이트하고 있는데 구조적 문제라 계속 나오고 있다. 그누보드가 업데이트될 때 꾸준히 업데이트 하자. 코어를 수정했다면 안타깝지만,업데이트는 어려워진다.
4. 역사[편집]
제로보드가 웹 게시판을 꽉 잡고 있을 때 나온 프로그램이라 초창기에는 그다지 인기가 없었다. 하지만 제로보드의 개발자 고영수가 네이버로 가면서 제로보드 4의 개발 및 사후지원을 중단하고 MVC 아키텍쳐로 개편한 XpressEngine(일명 XE)이라는 CMS를 공개함에 따라 상황이 바뀌었다. 기존 제로보드 4는 가뜩이나 해킹 공격에 취약한데 사후 지원마저 중단되어서 더 이상 사이트 플랫폼으로 쓰기 힘들어졌다. 한편 XpressEngine은 단순한 게시판 프로그램이었던 제로보드와는 달리 사이트를 통째로 구축하는 웹 빌더 프로그램이어서 패러다임 자체가 달랐다. 당연히 기존 제로보드의 각종 스킨과 플러그인과는 호환이 되지 않은 데다 기본 구조 MVC 패턴이라 기존과 달랐기 때문에 이미 제로보드로 사이트를 구축해둔 많은 홈페이지들은 옮겨갈 엄두를 낼 수가 없었다. 그래서 제로보드와 구조가 아주유사한 그누보드가 대안으로서 각광을 받은 것이다. 스킨이나 플러그인 호환은 되지 않았지만 DB 구조도 엇비슷하고 변환 프로그램도 많이 나와 있어서 이전도 쉬웠던 것도 인기의 한 원인.
4.1. 그누보드 4[편집]
그누보드 4는 2016년 5월 현재 2015년 11월 30일에 배포된 4.37.38 버전을 끝으로 유지보수가 끝났다. PHP 5.3부터 Deprecated 경고가 뜨며 PHP 7에서는 아예 작동 불가이다. 그누보드 5를 사용하자.
4.2. 그누보드 5[편집]
2013년 3월부터는 웹 접근성 향상 버전을 새로 만들고 있다. 여담이지만 개발자의 작명 센스가 독특하다. 해당 프로그램의 애칭은 지포스(Gnuboard4s). 데모 사이트의 이름은 "써라! 글을"이라는 의미의 썩을써글. 그러다가 2013년 9월을 기점으로 '그누보드 5'로 이름이 바뀌었다. 그리고 2014년 6월 10일, 1년 넘게 달고 있던 베타 딱지를 떼고 그누보드 5의 정식 버전이 공개되었다. 그누보드 5는 구조를 새로 만들었기 때문에 4의 스킨이나 플러그인과는 호환이 되지 않는다. DB도 일부 달라졌고, 이 때문에 변환 프로그램을 거쳐야 그누보드 4의 DB를 5로 옮겨올 수 있다.[11] 그러나 XE처럼 개념이 완전히 달라진 것은 아니고, 1년 넘게 베타 테스팅을 해서 제작에 참고할 만한 스킨도 있어서 큰 혼란은 적었다.
그누보드 4는 웹 표준을 제대로 지원하지 않았다. SIR 측에서도 문제를 인지했는지 DTD 버전이라고 해서 웹표준 지원 버전을 따로 만들다가, 그누보드 4s로 이름을 전환했고 다시 그누보드 5로 전환해서 완성했다. 그누보드 5는 웹표준을 잘 지원한다, 그누보드 4의 스킨이나 플러그인과는 호환이 되지 않게 되었다. 시간이 지나면서 그누보드 5가 완전히 자리를 잡은 2018여년 현재는 전혀 신경쓸 일은 아니게 되었다. 5.1로 버전이 올라가면서 테마 기능이 들어갔다. 기존의 스킨 디렉토리에서 각각으로 관리되던 스킨과 헤더, 푸터 등 사이트 디자인을 이루던 거의 모든 것을 테마로 통합해서 뺀 것이다. 추가적으로 lib 파일도 연결시킬 수 있기 때문에 이전보다 그누보드 소스를 직접 수정해야 되는 일이 많이 줄어들었다. 큰 변경사항 같지만 스킨 함수 등 API나 변수들은 동일하기 때문에 큰 변경 없이 마이그레이션이 가능하다. 또한 중간에 PHP 7 대응패치가 되었다.
2016년 7월 25일 5.2로 중간 버전이 올라갔는데, 변경점은 그냥 보안 패치다. 그누보드와 연동되는 영카트 쪽에서 네이버페이를 지원하는 메이저 업데이트가 있었기 때문에 버전 정보를 서로 맞추느라 이렇게 된 것이다. 2017년 11월 21일 5.3 베타 버전이 나왔고, 2018여년 4월 1일 거짓말같이 5.3 정식 버전이 나왔다. 소셜로그인을 기본으로 지원하고 관리자 페이지와 기본 스킨의 디자인이 개편되었다. 2019년 12월 2일 5.4 정식 버전이 나왔다. 이전에 나왔다가 개발이 중지된 그누보드M에서 먼저 선보인 후크(Hook) 기능이 들어갔다. 이 기능으로 워드프레스와 비슷한 방식으로 플러그인을 제작할 수 있게 되어 기능 추가시 그누보드의 코어부분 수정을 최소화 할 수 있게 되었다. 썸네일 함수 변경 훅스추가 mysql 8.0 지원으로 비밀번호 보안이 강화된 PBKDF2 로 변경 PHP 7.4 지원
2022년 2월 15일 5.5 정식 버전이 나왔다. 본인인증 방식에 KG이니시스 통합인증을 추가하여 네이버나 카카오 등지에서 발행하는 여러 인증서를 지원하게 되었다.
그누보드의 플러그인이였던 영카트가 통합되었다. 2022년 6월 5.5 마이너 버전에서 PHP 8.1 지원 업데이트. HTMLPurifier 업데이트 2022년 6월 5.5.7.5 마이너 버전에서 세션노출 취약점이 해결되었다. 10년전부터 있던 문제인데 이제서야 해결된 것. 세션폴더가 PHP 기본설정폴더로 옮겨졌고 호스팅인 경우 호스팅사에서 관리해서 더욱 안전해졌다. 라이믹스, XE 의 경우 처음부터 세션은 PHP 기본 설정폴더에 있었기 때문에 아무 문제가 없다.
5. 기능[편집]
WYSIWYG도 기본으로 지원하는데, 상용 에디터인 cheditor를 무료로 배포하고 있다. 라이센스는 에디터에 한하여 재배포하지 않는다는 조건. 개인적으로 구입하면 33만원인데, 제작자와 따로 재배포 라이선스 계약(220만원)을 맺어서 그누보드에 한해서만 배포를 하는 듯 하다. 그누보드 5는 처음에는 cheditor가 빠지고 ckeditor라는 오픈소스 에디터가 기본으로 들어갔으나, 5.0.6에서 네이버에서 개발한 스마트에디터 2도 포함됐고, 이것이 5.0.8에서 기본으로 바뀐다. 그러다 5.0.24에서 ckeditor가 제외되고 별도 배포로 바뀌었으나 5.2.6에서는 cheditor가 다시 포함되었다.