APM + GNU Board 설치하기 참고 : https://cafe.naver.com/linuxmasternet/60
GNU board 란 PHP로 만든 누구나 무료로 사용할 수 있는 공개 게시판이다.
GNU board를 설치하기 위해서는 APM 연동 설치를 해야 하며 이글에서는 LAMP(Linux+Apache+Php+Mysql)에 설치하고 GNU board를 설치하는 과정이다.
클라이언트/서버 환경의 통신 구조
아래 그림은 클라이언트가 서버와 통신하는 구조를 설명한 그림이다.
APM : Apache + PHP + MariaDB(MySQL)
APM의 실행 파일
A : /usr/sbin/httpd
P : /usr/bin/php
M : /usr/libexec/mysqld

CentOS 7 에서 APM을 설치하는 두 가지 방법중 하나를 사용한다.
첫 번째 방법 : 소스 설치 (장점 : 다양하게 설치가 가능하다. 단점 : 어렵다.)
두 번째 방법 : yum 설치 (장점 : 편리하다. 단점 : 입맛에 맞게 설치를 못한다.)
여기서는 두 번째 방법인 yum으로 설치하는 방법을 사용한다.
또한 PHP 버전을 7이나 8로 설치할 수도 있지만 여기서는 기본 저장소에 있는 5 버전을 설치하는 것으로 한다.
실습> APM + GNU Board 설치하기
1. APM 설치
[root@localhost ~]# yum -y install httpd php mariadb mariadb-server
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl enable mariadb
2. 설정파일 수정
apache 웹서버 설정
[root@localhost ~]# vi /etc/httpd/conf.d/php.conf
<FilesMatch .(php|html)$>
SetHandler application/x-httpd-php
DirectoryIndex index.php index.html
php 설정
211번 라인에 short_open_tag 를 On 으로 변경한다.
[root@localhost ~]# vi /etc/php.ini
short_open_tag = On
display_errors = On
mariadb 설정
utf-8 언어셋으로 설정한다.
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[root@localhost ~]# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
collation-server = utf8_general_ci
character-set-server = utf8
skip-character-set-client-handshake
:
:
3. GD 라이브러리 설치
[root@localhost ~]# yum -y install php-gd gd gd-devel libjpeg libjpeg-devel giflib giflib-devel libpng libpng-devel freetype freetype-devel
4. DBMS 라이브러리 설치
[root@localhost ~]# yum -y install php-mysql
5. DBMS 시작
mariadb 를 시작한다.
[root@localhost ~]# systemctl start mariadb
6. DBMS 비번 설정
mysqladmin : MariaDB 관리 프로그램
mysqladmin 으로 비번 변경 형식 :
mysqladmin -u <사용자> -p<비밀번호> password <새로운비밀번호>
비밀번호와 새로운비밀번호는 생략한다.
mysql의 관리자(root) 비밀번호를 설정한다.
[root@localhost ~]# mysqladmin -u root -p password
Enter password: <-- 엔터
New password: <-- 111111
Confirm new password: <-- 111111
7. DataBase 생성
[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database gnuboard;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> show databases;

5 rows in set (0.00 sec)
MariaDB [(none)]> quit
8. 웹서버 시작
/usr/sbin/httpd : 웹서버 실행파일
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl status httpd
방화벽을 중지시킨다.
[root@localhost ~]# systemctl stop firewalld
9. 웹페이지 생성
APM연동이 잘 되었는지 테스트 파일을 생성한다.
phpinfo() 함수 : APM 연동 정보를 출력하는 함수
[root@localhost ~]# cd /var/www/html
[root@localhost ~]# vi p.html
연동 확인 후 p.html 파일은 삭제한다.
[root@localhost ~]# rm -f p.html
10. 그누보드 다운로드
그누보드 : 공개형 무료 게시판
실제 운영 서버에서 git을 설치하지 말고 gnuboard를 winscp로 업로드하는
것이 좋다. 여기서는 테스트 서버이므로 git 패키지를 설치하고 git으로
gnuboard를 설치하는 것으로 한다.
[root@localhost ~]# cd /var/www/html
[root@localhost ~]# mkdir bbs
[root@localhost ~]# cd bbs
[root@localhost ~]# yum -y install git
[root@localhost ~]# git clone https://github.com/gnuboard/gnuboard5.git .
[root@localhost ~]# rm -rf .git .gitattributes .gitignore
data 디렉토리를 777 권한으로 생성한다.
웹 사용자가 DB접속 파일(dbconfig.php)들을 data 디렉터리에 저장하기 때문에
이 디렉터리를 일반유저가 write 할 수 있어야 한다.
이 디렉터리는 그누보드 설치가 완료된 후에 보안상 701로 변경해준다.
[root@localhost ~]# mkdir -m 777 data
[root@localhost ~]# ls -ld
drwxrwxrwx. 2 root root 6 1월 7 11:46 data
SELinux 를 잠시 중지한다.
실무에서는 중지하면 보안상 좋지않고 SELinux를 설정하는게 좋다.
[root@localhost ~]# setenforce 0
11. 그누보드 설치
이제 그누보드를 설치하기 위해서 http://웹서버IP주소/bbs/ 로 접근하면
아래와 같이 설치 화면이 나온다.
오른쪽 아래쪽에 그누보드5 설치하기 버튼을 클릭해서 그누보드를 설치한다.
데이터베이스 정보를 입력하고 다음을 클릭한다.
참고로 여기서는 연습이므로 DB 사용자를 관리자인 root 로 넣어주지만
실제 운영할 경우에는 보안상 root가 아닌 일반유저를 생성해서 넣어줘야
한다는 점을 꼭 기억해야한다.
설치가 완료되면 data 디렉터리를 701로 설정한다.
[root@localhost ~]# chmod -c 701 data