오픈소스 LMS (Moodle)설치(MS Azure)

Posted 2022. 1. 10. 16:43

moodle이라는 오픈소스 LMS를 MS Azure Cloud에 설치합니다.

docker-compose를 통해서 간단히 설치하는 방법도 있었지만 직접 APM형태로 설치&세팅하였습니다.

참고 설치 매뉴얼(한글)
https://techexpert.tips/ko/moodle-ko/%EC%9A%B0%EB%B6%84%ED%88%AC-%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90-%EB%AC%B4%EB%93%A4-%EC%84%A4%EC%B9%98/

 

I. MS Azure 인프라 설치

 

1. Azure 리소스그룹 생성
 > 그룹명 : lms-vnet-rg
 > : 10.2.0.0/22

2. 가상네트워크(lms-vnet), subnet (subnet1, subnet2) 생성( DB, Web분리예정)
 > lms-vnet : 10.2.0.0/22
 > subnet1 : 10.2.1.0/24 (Web Server)
 > subnet2 : 10.2.2.0/24 (DB 영역)

3. 가상머신 생성
 > OS : CentOS7.8-free
 > WEB : 2vcpu, 4GiB 메모리 / DB : 4vcpu, 16GiB 메모리
 > 위치 : 한국 중부

II. moodle 소스 설치를 위한 APM 설치

 

1. Database 설치(MariaDB)

//MariaDB용 yum repository를 업데이트한다.
sudo vi /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64/
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1

//mariadb, mariadb-server를 설치
sudo yum install mariadb mariadb-server -y 

//설치된 mariadb를 실행
sudo systemctl start mariadb

//Character-set 설정 (MariaDB 10.3기준)
sudo vi /etc/my.cnf.d/mysql-clients.cnf 

[mysql]
default-character-set=utf8mb4
..
[mysqldump]
default-character-set=utf8mb4
..


sudo vi /etc/my.cnf.d/server.cnf

[server]
init-connect='SET NAMES utf8mb4'
lower_case_table_name=1
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# this is only for the mysqld standalone daemon
[mysqld]
default_storage_engine=innodb

//moodle용 Database와 사용자를 추가한다.(권한포함)
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

//Create a user/password combination with appropriate permissions for the database. For example (MySQL again):
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'moodleuser123!';
Query OK, 0 rows affected (0.003 sec)

//web-server접속용 권한
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'10.2.1.0/255.255.255.0' IDENTIFIED BY 'moodleuser123!';
Query OK, 0 rows affected (0.005 sec)

 

2. ==== LMS Moodle 설치를 위한 Apache, PHP설치 ====

1). yum update ( 옵션 ) 
  sudo yum update -y

2). Apache 설치 

 sudo yum install httpd -y

 2.1) openssl, mod_ssl 설치 ( rpm -qa|grep OOO 으로 확인해서 설치되었다면 pass )

 sudo yum install mod_ssl -y 

 /etc/httpd/modules 아래에 mod_ssl.so 생성확인 

 2.2) ssl.conf 수정 및 인증서 복사 
  2.2.1 인증서 파일 복사하여 위치시킴.
  2.2.2 httpd.conf 를 수정하여 Rewrite 설정 (http -> https ) 

3). SELinux 해제 
    \> sudo vi /etc/selinux/config

    SELINUX=disabled 로 변경후 재부팅 
    임시로 적용 : sudo setenforce 0 

4). php 모듈 설치 

sudo yum install epel-release yum-utils
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 

sudo yum-config-manager --enable remi-php73
sudo yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd php-xml php-pear php-pdo libapache2-mod-php php-mbstring php-xmlrpc php-zip php-bcmath php-ldap php-pspell php-curl php-intl php-soap -y 

5). 아파치 재시작 및 php 적용사항 확인 
  sudo systemctl restart httpd

  sudo vi /var/www/html/phpinfo.php

<?php
phpinfo()
?>

 

2. 소스 다운로드 및 설치 진행

최신버전 : https://download.moodle.org/releases/latest/

1). 소스 다운로드(최신버전은 별도 확인)
version3.8
 wget https://download.moodle.org/stable38/moodle-latest-38.tgz

version3.11
 wget https://download.moodle.org/download.php/stable311/moodle-3.11.4.tgz

2). 압축을 해제 
sudo tar -zxvf moodle-latest-38.tgz

해제된 소스를 Apache Document Root로 이동한다. 
cp /downloads/moodle /var/www/html/ -R

3. 접근권한 및 설정 변경

3). 웹서버에게 moodle 디렉토리 소유권을 부여하고 접근권한을 변경한다.

 sudo chown apache.apache /var/www/html/moodle -R
 sudo chmod 0755 /var/www/html/moodle -R

4). Moodle 데이터 업로드 디렉토리를 생성 후 접근권한을 변경한다. 
  (SELinux가 해제되어 있지 않으면 설치시 오류가 발생한다.)

 sudo mkdir /var/www/moodledata
 sudo chown apache /var/www/moodledata -R

 sudo chmod 0777 /var/www/moodledata -R

5). http://domain.com/moodle/ 로 접속하면 설치가 진행된다.
   앞서 설치된 DB 접속정보를 입력하여 설치를 마무리 한다.
   설치후 변경은 config.php정보를 수정한다.

 

4. Google smtp 연동사용

회원가입, 수강신청등의 이유로 메일연동이 필요하다. smtp를 구글메일로 사용하기 위한 일반적인 설정.

설정시 AWS에 설치된 타시스템에서는 정상적으로 작동했는데, MS Azure에서는 미작동한다. 이유가?
PHP Mail 테스트로도 발송이 안되고 아래와 같이 오류가 발생함.
아래 오류를 획득하기 위해서 /etc/php.ini에서 error log 출력을 위한 설정을 변경해야한다. (별도구글링 )

오류
2021-11-23 11:06:40     SERVER -> CLIENT: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbv
                                          534-5.7.14 5flh2VmuG9Rpp1NcnLIkbChbKw0FMwuzjkRkz76Ka-FP7xOgVcUXwDM6sJkX2MWXNeLeI
                                          534-5.7.14 i0CgTViB6ZJK5jAW0tSA1NpT5CZNSXumtvLT_qzu2YMrun2Cacr1yNcLDOQHImm7>
                                          534-5.7.14 Please log in via your web browser and then try again.
                                          534-5.7.14  Learn more at
                                          534 5.7.14  https://support.google.com/mail/answer/78754 t66sm11915990pfd.150 - gsmtp
2021-11-23 11:06:40     SMTP ERROR: Password command failed: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbv
                                          534-5.7.14 5flh2VmuG9Rpp1NcnLIkbChbKw0FMwuzjkRkz76Ka-FP7xOgVcUXwDM6sJkX2MWXNeLeI
                                          534-5.7.14 i0CgTViB6ZJK5jAW0tSA1NpT5CZNSXumtvLT_qzu2YMrun2Cacr1yNcLDOQHImm7>
                                          534-5.7.14 Please log in via your web browser and then try again.
                                          534-5.7.14  Learn more at
                                          534 5.7.14  https://support.google.com/mail/answer/78754 t66sm11915990pfd.150 - gsmtp
2021-11-23 11:06:40     SMTP Error: Could not authenticate.
2021-11-23 11:06:40     CLIENT -> SERVER: QUIT
2021-11-23 11:06:40     SERVER -> CLIENT: 221 2.0.0 closing connection t66sm11915990pfd.150 - gsmtp
2021-11-23 11:06:40     SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

 

해결방법은 아래와 같다.

 

사용하려고 하는 gmail계정의 보안/인증에서 2단계인증 후 앱 비밀번호 생성해서 해당정보를 설정해줘야한다.

요약

1. 앱 비밀번호 생성시 앱을 선택하고자 할때 기타(맞춤이름)를 선택한다.
2. Smtp Client 로 명시하고 생성을 클릭
3. 생성된 비밀번호를 복사하여 사용자 Password 에 넣는다.
   계정정보는 기존정보를 그대로 넣거나 넣지않아도 정상 작동된다.



« PREV : 1 : 2 : 3 : 4 : 5 : ··· : 381 : NEXT »