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_user
가gnuboard_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 회원”, “관리자” 등으로 등급을 나누고 권한을 설정가능.