Server
DB
WEB
WEB의 경우 하나로 모두 설치한 후 복제하여 배포
가용성을 위하여 DB 이중화 구현
최신 Moodle4.1.2+의 경우 MariaDB가 10.4 이상이여야한다.
레포지터리 추가
cat >> /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
yum -y update
yum install MariaDB-client MariaDB-server policycoreutils-python
sellinux 확인
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload
설정 추가
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
서비스 시작
systemctl start mariadb
systemctl enable mariadb
root 비밀번호 설정
mysql -u root -p
alter user 'root'@'localhost' identified by '123qwe!@#QWE';
Slave 유저 생성 및 권한 생성
CREATE USER 'slave'@'%' IDENTIFIED BY '123qwe!@#QWE';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.42' identified by '123qwe!@#QWE';
FLUSH PRIVILEGES;
현재는 모든 테이블을 복사하지만 다르게 한다면 테이블마다 다르게 master와 slave설정이 가능하다
상태 확인
show master status;
설정편집
vi /etc/my.cnf
[mysqld]
server-id=2
이렇게 설정하면 어떤 DB에 접속하든 서로 수정이 가능한 상태가 된다. 즉, Active-standby가 아닌 Active-Active로 된다.
Active-Standby로 하고 싶다면 다음을 추가하면 된다.
read_only=1
report-host=<host or domain>
ip혹은 도메인으로 하면 되는데 도메인으로 하는게 버그가 생길 가능성이 낮다.
systemctl start mariadb
systemctl enable mariadb
Replication 설정
CHANGE MASTER TO
MASTER_HOST='192.168.1.41',
MASTER_USER='slave',
MASTER_PASSWORD='123qwe!@#QWE',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=975;
여기서 MASTER_LOG_FILE과, MASTER_LOG_POS의 경우 상단의 show master status로 나온 내용을 그대로 넣으면 된다.
상태확인
SHOW SLAVE STATUS\G
Sertbot을 사용한 ssl 발급, moodle을 위한 관련 라이브러리 설치
레포지터리 추가
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y update
yum 도구 설치
yum -y install yum-utils
php 버전 허용
yum-config-manager --enable remi-php74
적용 확인
yum list php
yum install php httpd
php 라이브러리 설치 이 부분의 경우 앞서 설치하면서 기록한 내용을 그대로 가져와서 했다. 이것이 없더라도 WebUI설치 과정에서 알 수있다.
MariaDB Moodle Database 생성
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
create user 'moodle'@'192.168.1.31' identified by '123qwe';
create user 'moodle'@'192.168.1.32' identified by '123qwe';
grant all privileges on moodle.* to moodle@'192.168.1.31' identified by '123qwe';
grant all privileges on moodle.* to moodle@'192.168.1.32' identified by '123qwe';
flush privileges;
무들은 다국어를 지원하기 때문에 데이터베이스를 만들때 문자셋 및 콜레이션을 설정해서 생성해야한다.
ssl 발급 및 버츄얼 호스트지정
yum -y install certbot
certbot을 사용하기 위해 http 방화벽을 열면서, 추후에 사용할 https와 mysqld를 추가
일반적으로 방화벽 mysql를 추가 할 필요가 없지만, 어째서인지 moodle은 데이터베이스와 연결할때 클라이언트도 mysql 포트가 오픈되어 있어야 DB 연동이 진행된다.
firewall-cmd --add-service=http --add-service=https --add-service=mysql --permanent
firewall-cmd --reload
certbot certonly --standalone -d <doamin>
ssl 모듈 설치
yum -y install mod_ssl
아파치 설정
vi /etc/httpd/conf/httpd.conf
<VirtualHost _default_:443>
ServerName <doamin>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/<doamin>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<doamin>/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/<doamin>/chain.pem
SSLCACertificateFile /etc/letsencrypt/live/<doamin>/fullchain.pem
</VirtualHost>
moodle 사이트에 업로드된 파일이 저장될 디렉터리 지정
mkdir /var/moodledata
chown apache.apache -R /var/www/html/moodle
chown apache.apache /var/modledata
systemctl start httpd
systemctl enable httpd
설치 과정에서 moodledata경로만 수정해주면된다.
만약 나처럼 웹서버 이중화를 한다면 서버 ip로 웹 서버를 역지않고 도메인으로 접속해서 설치를 진행해야 한다.
DB 연결
php 라이브러리가 정상적으로 모두 설치가 되면 다음과 같이 진행된다.
만약에 안된게 잇다면 한개씩 눌러서 설치를 진행하면된다.