Post

docker로 그누보드 만들기

Docker를 이용한 그누보드 5 설치

1. 파일 및 폴더 구조 생성

먼저 필요한 폴더 구조를 만들기. 이 구조는 그누보드와 데이터베이스를 위한 공간을 마련하기 위함.

1
2
3
4
5
6
7
8
9
gnuboard-docker/
│
├── docker-compose.yml
├── Dockerfile
└── public/
    └── gnuboard/
        ├── gnuboard5/  (여기에 그누보드 파일을 넣음)
        └── data/       (데이터 디렉토리)

2. Dockerfile 작성

PHP와 Apache를 기반으로 그누보드를 실행할 Dockerfile을 작성. 이 파일에서는 필요한 PHP 확장 기능을 설치하고, Apache의 설정을 조정함.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# PHP와 Apache를 기반으로 하는 이미지 사용
FROM php:8.0-apache

# 필요한 PHP 확장 설치 (예: mysqli, zip 등)
RUN docker-php-ext-install mysqli

# 권한 설정
RUN chown -R www-data:www-data /var/www/html

# 아파치 DocumentRoot 설정
RUN sed -i 's#/var/www/html#/var/www/html/gnuboard/gnuboard5#g' /etc/apache2/sites-available/000-default.conf

# Apache mod_rewrite 활성화
RUN a2enmod rewrite

3. Docker Compose 파일 작성

MySQL과 PHP-Apache 서버를 정의한 docker-compose.yml 파일을 작성. 이 파일은 필요한 서비스를 설정하고 컨테이너 간 네트워크를 정의.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
version: '3.8'

services:
  web:
    build: .
    container_name: gnuboard-web
    ports:
      - "8080:80"
    volumes:
      - ./public:/var/www/html
    networks:
      - gnuboard-network

  db:
    image: mysql:5.7
    container_name: gnuboard-db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: gnuboard_db
      MYSQL_USER: gnuboard_user
      MYSQL_PASSWORD: gnuboard_password
    ports:
      - "3306:3306"
    volumes:
      - /home/jiwoon/docker/data:/var/lib/mysql
    networks:
      - gnuboard-network

networks:
  gnuboard-network:
    driver: bridge

volumes:
  db_data:

4. 그누보드 파일 준비

gunboard download 그누보드 공식 홈페이지에서 최신 버전을 다운로드하여 public/gnuboard/gnuboard5/ 폴더에 압축을 품. 이때 생성된 gnuboard5.6.4 폴더 안의 모든 파일과 폴더를 gnuboard5 폴더로 옮기기. 이렇게 하면 웹서버가 올바른 경로에서 그누보드를 실행할 수 있음.

최종 폴더 구조는 다음과 같다:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
plaintext코드 복사
gnuboard-docker/
│
└── public/
    └── gnuboard/
        ├── gnuboard5/
        │   ├── adm/
        │   ├── bbs/
        │   ├── data/
        │   ├── extend/
        │   ├── lib/
        │   ├── mobile/
        │   ├── plugin/
        │   ├── theme/
        │   ├── install.php
        │   └── ...

5. Docker Compose로 컨테이너 실행

프로젝트 폴더로 이동한 후, 다음 명령어로 Docker Compose를 실행.

1
docker-compose up -d

이 명령어는 docker-compose.yml 파일에 정의된 웹 서버와 데이터베이스 서버를 백그라운드에서 실행.

6. 브라우저에서 그누보드 설치

정보입력화면

Docker Compose가 성공적으로 실행되면, 브라우저에서 http://localhost:8080으로 접속하여 그누보드 설치를 진행. 설치 화면이 나타나면 다음과 같이 데이터베이스 정보를 입력(컴포즈 파일에 입력한 정보대로 입력):

  • DB: gnuboard_db
  • User: gnuboard_user
  • Password: gnuboard_password
  • Host: db

설치가 완료되면 그누보드를 사용할 수 있음.

7. 개발과 관리

Docker Compose를 사용하면 그누보드 환경을 쉽게 관리할 수 있다:

  • 컨테이너 상태 확인: docker-compose ps
  • 컨테이너 중지: docker-compose down
  • 로그 확인: docker-compose logs

완료

완료이미지

설치시 에러

db가 없고 유저가 없음.

에러이미지

db 연결 확인

1
2
3
root@server:/home/jiwoon/docker/gnuboard-docker/public/gnuboard/gnuboard5# docker exec -it gnuboard-db mysql -u gnuboard_user -pgnuboard_password gnuboard_db
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'gnuboard_user'@'localhost' (using password: YES)

MySQL 데이터베이스에 접속하려고 시도할 때 발생하는 인증 오류. 구체적으로는 ‘gnuboard_user’라는 사용자가 MySQL 서버에 접근하려고 했을 때 접근이 거부되었다는 의미.

MySQL 컨테이너 내에서 root 사용자로 로그인한 후, gnuboard_user의 계정과 권한을 확인하고 필요한 경우 새로 설정해야 함.

먼저 MySQL 컨테이너에 root 사용자로 접속:

1
docker exec -it gnuboard-db mysql -u root -prootpassword

그 다음, MySQL 내부에서 gnuboard_user 사용자의 권한을 설정:

1
2
3
4
CREATE USER 'gnuboard_user'@'%' IDENTIFIED BY 'gnuboard_password';
GRANT ALL PRIVILEGES ON gnuboard_db.* TO 'gnuboard_user'@'%';
FLUSH PRIVILEGES;
EXIT;

위 명령어들은 다음을 수행:

  • gnuboard_user를 생성하고, 모든 호스트(%)에서 접근할 수 있도록 설정.
  • gnuboard_usergnuboard_db 데이터베이스에 대한 모든 권한을 가지도록 설정.
  • 변경 사항을 적용.

사용자는 생성했고 다시 접속하니까 이제 db가 없다고 함

1
2
3
root@server:/home/jiwoon/docker/gnuboard-docker/public/gnuboard/gnuboard5# docker exec -it gnuboard-db mysql -u gnuboard_user -pgnuboard_password gnuboard_db
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1049 (42000): Unknown database 'gnuboard_db'

먼저, root 사용자로 MySQL에 다시 접속:

1
docker exec -it gnuboard-db mysql -u root -prootpassword

그런 다음, gnuboard_db라는 이름의 데이터베이스를 생성:

1
2
CREATE DATABASE gnuboard_db;
EXIT;

다시 MySQL 사용자로 접속 시도

1
docker exec -it gnuboard-db mysql -u gnuboard_user -pgnuboard_password gnuboard_db

여기까지하니까 정상적으로 그누보드가 생성됨

편집

1. 그누보드 관리 페이지 접속

그누보드의 관리 페이지에 접속하려면 보통 다음 URL을 사용하면 됨.

학교 서버라서 http://도메인:8080/adm 여기로 들어가면 됨.

로그인 후 다양한 설정과 편집 작업이 가능.

2. CSS 편집

2.1 테마 CSS 파일 위치

그누보드에서 사용하는 CSS 파일은 보통 다음 경로.

1
2
/path/to/gnuboard/theme/your-theme/style.css

여기서 your-theme은 현재 사용 중인 테마의 이름임. 이 파일을 열어 직접 CSS 코드를 수정하면 됨.

2.2 CSS 편집

  • FTP나 파일 관리자를 통해 style.css 파일을 열고 원하는 스타일을 수정.
  • 또는, 관리 페이지에서 특정 테마의 CSS 편집을 허용하는 경우, 관리 페이지를 통해 수정할 수도 있음.

2.3 캐시 제거

CSS를 수정한 후 변경 사항이 즉시 반영되지 않으면 브라우저 캐시를 지우거나 Ctrl + F5를 눌러 강제로 새로 고침.

3. 메뉴 추가 및 편집

3.1 메뉴 설정

  • 관리 페이지에서 “환경 설정” → “메뉴 설정”을 클릭.
  • 여기서 상단, 하단, 사이드바 등 메뉴를 편집할 수 있음.

3.2 메뉴 추가

  • 새 메뉴 추가 버튼을 클릭하면 됨.
  • 메뉴 이름, 링크, 순서 등을 입력한 후 “저장”을 클릭하면 메뉴가 추가됨.
  • 링크는 내부 페이지나 외부 URL로 지정 가능.

3.3 메뉴 삭제 및 순서 변경

  • 각 메뉴 항목 옆에 있는 “삭제” 버튼을 클릭해 메뉴를 삭제가능.
  • “순서 변경”을 사용하여 메뉴의 위치를 위아래로 조정가능.

4. 게시판 관리

4.1 게시판 생성

  • 관리 페이지에서 “게시판 관리” → “게시판 추가”를 클릭.
  • 게시판 이름, 테이블 이름, 관리자 설정 등을 입력하고 “추가” 버튼을 클릭하면 게시판이 생성됨.
  • 추가된 게시판은 메뉴에서 자동으로 연결할 수도 있고, 직접 링크를 추가할 수도 있음.

4.2 게시판 설정

  • 각 게시판의 설정에서 접근 권한, 게시물 권한, 게시판 스킨, 페이지당 게시물 수 등을 설정가능.
  • 게시판을 통해 기본적인 웹사이트 기능을 확장할 수 있음 (예: 공지사항, 자유게시판, 갤러리 등).

5. 플러그인 및 확장 기능

5.1 플러그인 설치

  • 그누보드 홈페이지나 서드파티 사이트에서 플러그인을 다운로드함.
  • 플러그인을 /plugin 디렉토리에 업로드하면 됨.
  • 관리 페이지에서 플러그인을 활성화하여 기능을 사용가능.

5.2 확장 기능 사용

  • 추가 기능(예: 쇼핑몰, 회원 관리 등)을 설치하고 활성화하여 그누보드의 기본 기능을 확장가능함.

6. 게시물 편집기 사용

6.1 기본 편집기

  • 기본 제공되는 편집기는 간단한 텍스트 포맷팅과 이미지 삽입을 지원.
  • HTML 모드로 전환하여 직접 HTML 태그를 사용할 수도 있다.

6.2 외부 편집기 설치

  • CKEditor, TinyMCE 같은 외부 편집기를 설치해 사용도 가능.
  • 설치 후, 설정에서 기본 편집기로 외부 편집기를 선택가능.

7. 사이트 관리

7.1 기본 설정

  • 관리 페이지에서 “환경 설정” → “기본 설정”에서 사이트 제목, 관리자 이메일, 언어 설정 등을 관리하면 됨.
  • 이 설정은 사이트의 전반적인 정보와 연락처 정보를 구성.

7.2 로그 관리

  • 사이트 방문자 로그, 접속자 로그 등을 관리 페이지에서 확인 가능.
  • 필요에 따라 보안 관련 로그를 설정하고 관리할 수 있다.

8. 사용자 관리

8.1 회원 관리

  • “회원 관리” 메뉴에서 회원 등록, 수정, 삭제가 가능.
  • 각 회원의 등급과 권한을 설정해 특정 게시판이나 메뉴에 대한 접근을 제한할 수 있음.

8.2 회원 등급 관리

  • 회원 등급을 추가하고, 각 등급별로 권한을 세분화할 수 있음.
  • 예를 들어, “일반 회원”, “VIP 회원”, “관리자” 등으로 등급을 나누고 권한을 설정가능.
This post is licensed under CC BY 4.0 by the author.