그누보드

덤프버전 : r20240101

Gnuboard
그누보드
종류
CMS
언어
PHP
라이선스
GNU 일반 공중 사용 허가서(GPL)
개발
SIR 소프트
최신 버전
5.5.8.3.4 (2023년 08월 17일)
SIR 홈피겸 그누보드 사용자 커뮤니티
그누보드 Github 저장소

1. 개요
2. 특징
3. 설치 환경
3.1. 장점
3.2. 단점
4. 역사
4.1. 그누보드 4
4.2. 그누보드 5
5. 기능
6. 파생된 프로그램
6.1. 영카트
6.2. 그누커머스
6.3. 라온보드
7. 관련 문서


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 를 가지고 개발을 하려고 하니까 위와같은 문제가 발생하며 심한 경우에는 단순 CMS를 고집하다가 그대로 리액트나 뷰 빌드 파일을 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가 다시 포함되었다.

나린위키라는 그누보드의 플러그인도 있는데, 이름에서 알 수 있듯이 위키위키 플러그인이다.


6. 파생된 프로그램[편집]



6.1. 영카트[편집]


그누보드 기반의 온라인 쇼핑몰 플러그인으로 다른 플러그인이나 빌더와는 다르게 그누보드 제작사 SIR이 직접 제작한다. 또한 다른 플러그인들과는 다르게 영카트 4까지는 유료로 판매했다. 유료로 판매되던 그누보드 4 기반의 영카트 4와 달리, 그누보드 5 기반의 영카트 5부터는 무료 배포가 결정되었다. XpressEngine의 쇼핑몰 플러그인들이나 카페24 쇼핑몰 창업 서비스처럼 판매 수익을 포기하는 대신 결제 수수료로 수익 구조를 전환했다. 그누보드를 자유 소프트웨어로 풀면서도 SIR이 영리사업체로 버티는 이유는 바로 이 영카트의 판매 수익과 결제 수수료가 수입원이기 때문이다.

2021년 6월 17일에 나온 5.4.6 버전부터 그누보드 5에 영카트가 항상 통합되어 배포된다. 세팅에서 영카트 관련 옵션을 끄면 그누보드 5 단독으로만 작동하는 구조다.


6.2. 그누커머스[편집]


워드프레스 용 그누보드 게시판+쇼핑몰 플러그인이다. 원래 그누프레스라는 이름으로 게시판 플러그인만 개발하고 있었지만, 쇼핑몰도 얹은 형태로 변경되었다. 영카트의 워드프레스 버전이라 할 수있다.

그누커머스와 영카트 5는 호환이 안 된다. 워드프레스는 그누보드와 구조가 다르기 때문이다.

2020년 12월 31일자에 그누커머스를 포함한 그누프레스, 그누페이의 공식 지원을 중단한다고 공지했다. 지원중단 공지


6.3. 라온보드[편집]


그누보드의 PHP 라라벨 프레임워크(PHP Laravel Framework) 버전이다.
2015년 상반기쯤 개발중이였다. 화면출력 부분을 분리 시키려고 MVC패턴 적용을 위해 프레임워크 사용해서 개발 중이었다.
하지만 PHP 7이 나오기전이였고 라라벨이 알려진지 얼마 되지않아서 책도 별로 없었다 더구나 국내 웹호스팅에서는 SSH 접속시 PHP 버전이 다르다거나 하는 호스팅사들 문제때문에 불편하다보니 생각보다 사용자가 늘어나지 않아서 2018년 말에 개발이 중단되었다.

2019년 무렵 리엑트를 비롯한 SPA가 대세가 되자 SIR 자유게시판에서는 라온보드의 부활이나 그누보드 차기 버전을 라우터를 쓰는 방식으로 개발하자는 의견이 올라온다.

그렇지만 중단된지 5년 넘은 프로젝트가 부활 하지는 않을것같다.


7. 관련 문서[편집]



파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-11-14 19:03:20에 나무위키 그누보드 문서에서 가져왔습니다.

[1] 거기에 PHP 5.2 버전등 5 버전을 지원한다. 다양한 PHP 버전을 지원하다보니 버전 별로 다른 코드들이 많다.[2] 훅스가 지원하지 않으면 코어를 수정하는 수밖에..[3] 자세히 설명하자면 회원아이디가 DB에서 키 값으로 잡혀있어서 삭제시 탈퇴한 회원이 탈퇴전 썻던 게시글 , 댓글이 연관되어있어서 삭제하면 안된다고한다[4] MariaDB 10.1 이하 및 MySQL 5.1 ~ 5.6 버전도 사용은 가능하지만 End of Life가 지난 버전을 사용하는 것은 바람직하지 않다. 특히 MySQL 5.5.2 이하는 3바이트 문자(utf8mb3) 까지만 지원하기 때문에 4바이트(utf8mb4) 이모지는 사용할 수 없다.[5] '나 " 를 이스케이프하는게 대부분 아스키 문자열을 벗어나게 해서 공격하는것들이라 문자열 범위를 늘리면 우회가 더 어려워지기 때문[6] common이나 mysql을 설치하면 pdo 모듈이 함께 설치되는데, 만약 설치되지 않으면 pdo 모듈을 추가로 설치해줘야 한다. [7] 과거에는 mcrypt를 사용하기도 했으나 PHP 7.2 부터는 openssl을 사용한다. PHP 7.2에서 mcrypt 모듈이 제외되었기 때문이다. openssl은 PHP 자체에 내장되어 있기 때문에 별도의 extension은 설치할 필요가 없다.[8] exif 모듈은 이미지 자동회전 기능에 필요하다.[9] fileinfo 모듈은 첨부파일 보안검사를 할 경우에 필요하다.[10] 보통은 웹뷰를 통해 웹사이트의 모바일 페이지를 보여주는 것으로 해결한다. [11] g4_import.php라는 이름으로 DB 변환 프로그램이 내장되어 있다.