웹사이트 검색

Ubuntu 16.04에 Moodle 3.2를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 우분투 20.04(Focal Fossa)
  • 우분투 16.04(Xenial Xerus)

이 페이지에서

  1. 1단계 - Nginx 설치
  2. 2단계 - PHP-FPM7 설치 및 구성
  3. 3단계 - MySQL 설치 및 구성
  4. 4단계 - Moodle 다운로드 및 구성
  5. 5단계 - SSL 인증서 생성 및 Nginx 가상 호스트 구성\n
  6. 6단계 - Moodle 설치
  7. 7단계 - 테스트
  8. 참조

Moodle은 PHP로 작성된 오픈소스 학습 관리 시스템 소프트웨어로 GNU General Public License에 따라 출시되었습니다. 원격 교육, e-러닝 프로젝트, 혼합 학습 및 이와 유사한 목적에 사용됩니다. Moodle은 Modular-object-oriented dynamic learning environment의 약어로서 Martin Dougiamas가 개발하여 교육자와 교사가 상호 작용 및 공동 콘텐츠 구성에 중점을 둔 온라인 과정을 만들 수 있도록 지원합니다.

이 튜토리얼에서는 무들과 함께 나만의 학습 센터를 구축하는 방법을 안내합니다. Nginx 웹 서버, MySQL 데이터베이스 및 PHP-FPM7에 Moodle을 설치하고 구성합니다. 운영 체제로는 Ubuntu 16.04(Xenial Xerus)를 사용합니다.

우리가 할 일:

  1. Nginx를 설치합니다.\n
  2. PHP-FPM7.0을 설치 및 구성합니다.\n
  3. MySQL 설치 및 구성.
  4. Moodle을 다운로드하고 구성합니다.\n
  5. SSL 및 가상 호스트를 구성합니다.\n
  6. 무들 설치.
  7. 테스트 중.

전제 조건

  • 우분투 16.04 서버.
  • 루트 권한.\n

1단계 - Nginx 설치

이 튜토리얼에서 Nginx는 Moodle의 웹 서버로 사용됩니다. Nginx는 Ubuntu 저장소에서 사용할 수 있으며 apt 명령으로 쉽게 설치할 수 있습니다.

apt-get install -y nginx

설치가 완료되면 Nginx를 시작하고 부팅 시 자동으로 시작되도록 활성화합니다.

systemctl start nginx
systemctl enable nginx

Nginx는 포트 80에서 실행되며 아래 명령으로 포트가 열려 있는지 확인하고 Nginx가 포트 80을 사용하는지 확인합니다.

netstat -plntu

2단계 - PHP-FPM7 설치 및 구성

Moodle은 PHP를 기반으로 하므로 시스템에 PHP를 설치해야 합니다. 우리는 Nginx 웹 서버를 사용하고 있기 때문에 PHP-FPM을 사용할 것입니다. 버전의 경우 Moodle 3.2 안정 버전에서 지원하는 PHP-FPM7.0을 사용합니다.

아래의 단일 apt 명령을 사용하여 PHP-FPM7.0 및 Moodle에 필요한 모든 확장을 설치합니다.

sudo apt-get install -y graphviz aspell php7.0-fpm php7.0-cli php7.0-pspell php7.0-curl php7.0-gd php7.0-intl php7.0-mysql php7.0-xml php7.0-xmlrpc php7.0-ldap php7.0-zip php7.0-json php7.0-opcache php7.0-readline php7.0-mbstring php7.0-soap

모든 패키지 설치가 완료되면 PHP 구성 디렉토리로 이동하여 php.ini 파일을 편집하십시오.

cd /etc/php/7.0/

vim으로 fpm php.ini 파일을 편집합니다.

vim fpm/php.ini

아래 줄의 주석을 제거하고 값을 0으로 변경합니다.

cgi.fix_pathinfo=0

php.ini를 저장하고 편집기를 종료합니다.

CLI php.ini 파일을 편집합니다.

vim cli/php.ini

아래 cgi.fix 행의 주석을 제거하고 값을 0으로 변경하십시오.

cgi.fix_pathinfo=0

파일을 저장하고 vim을 종료합니다.

다음으로 php-fpm 구성 파일 www.conf를 편집합니다.

vim fpm/pool.d/www.conf

보안 제한 라인의 주석을 제거하고 값이 .php인지 확인하십시오.

security.limit_extensions = .php

파일을 저장하고 vim을 종료합니다.

PHP-FPM 구성이 완료되었습니다. 이제 PHP-FPM을 시작하고 부팅 시 자동으로 시작하도록 추가할 수 있습니다.

systemctl enable php7.0-fpm
systemctl start php7.0-fpm

기본적으로 우분투의 PHP-FPM은 연결할 Nginx용 소켓 파일을 제공합니다. 아래 netstat 명령을 사용하여 PHP 소켓 파일에 대한 결과가 있는지 확인하세요.

netstat -lx

3단계 - MySQL 설치 및 구성

Moodle의 데이터베이스 시스템으로 MySQL을 사용할 것입니다(Moodle은 MySQL 및 PostgreSQL을 지원함). 현재 MySQL 5.7인 Ubuntu 리포지토리의 최신 MySQL 버전을 사용합니다.

아래의 apt 명령을 사용하여 Ubuntu 리포지토리에서 MySQL을 설치합니다.

apt-get install -y mysql-server mysql-client

MySQL 루트 암호에 대해 묻는 메시지가 표시되면 원하는 MySQL 루트 암호를 입력합니다. 복잡하고 너무 짧지 않은 암호를 사용하십시오.

암호를 다시 입력하고 Enter 키를 누릅니다.

이제 MySQL이 자신의 루트 암호로 설치되었습니다.

이제 Moodle 설치를 위한 새 구성을 추가해야 합니다. MySQL 구성 파일 mysqld.cnf를 수정합니다.

/etc/mysql/ 구성 디렉토리로 이동하여 vim으로 mysqld.cnf 파일을 편집합니다.

cd /etc/mysql/mysql.conf.d/
vim mysqld.conf

[mysqld] 줄 아래에 구성을 붙여넣습니다.

default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda

저장하고 종료한 다음 다시 시작하고 부팅 시 자동으로 시작하도록 MySQL을 추가합니다.

systemctl restart mysql
systemctl enable mysql

이제 서비스에서 사용하는 서버 포트인 포트 3306을 확인하여 MySQL이 실행 중인지 확인할 수 있습니다.

netstat -plntu

MySQL이 설치되고 시작되었습니다.

다음으로, 우리는 Moodle을 위한 새로운 데이터베이스와 새로운 데이터베이스 사용자를 생성해야 합니다. 아래의 mysql 명령어로 MySQL 서버에 접속합니다.

mysql -u root -p
TYPE YOUR OWN ROOT PASSWORD

무들 설치를 위해 moodledb라는 이름의 새 데이터베이스와 암호 hakaselabs123을 사용하는 새로운 사용자 moodleuser를 생성한 다음 데이터베이스 사용자에게 권한을 부여합니다. 물론 설치 시 다른 안전한 비밀번호를 사용해야 합니다 :)

아래에서 mysql 쿼리를 실행합니다.

CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
GRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
FLUSH PRIVILEGES;

무들에 대한 새로운 사용자 및 데이터베이스가 생성됩니다.

4단계 - Moodle 다운로드 및 구성

git을 사용하여 GitHub 리포지토리에서 Moodle을 다운로드하고 안정적인 버전 브랜치를 선택합니다.

아래의 apt 명령으로 git을 설치합니다.

apt-get install -y git

/var/www/ 디렉토리로 이동하여 무들 저장소를 복제합니다.

cd /var/www/
git clone https://github.com/moodle/moodle.git

무들 디렉토리로 이동하여 사용 가능한 모든 분기를 나열합니다.

cd moodle/
git branch -a

긴 무들 브랜치 목록이 표시되며 아래 명령을 사용하여 최신 안정 버전 브랜치를 추적합니다.

git branch --track MOODLE_32_STABLE origin/MOODLE_32_STABLE

이제 git checkout을 사용하여 최신 안정 분기로 전환하십시오.

git checkout MOODLE_32_STABLE

이제 최신 안정적인 분기에 있으므로 아래 명령을 사용하여 확인할 수 있습니다.

git status

아래에 결과가 표시됩니다.

On branch MOODLE_32_STABLE
Your branch is up-to-date with 'origin/MOODLE_32_STABLE'.
nothing to commit, working directory clean

다음으로 Moodle 데이터 /var/moodledata에 대한 새 디렉토리를 만들고 디렉토리의 소유자와 권한을 변경합니다.

mkdir /var/moodledata
chown -R www-data:www-data /var/moodledata
chmod 777 /var/moodledata

무들 디렉토리의 소유자 및 권한을 www-data 사용자 및 그룹으로 변경합니다.

chown -R www-data:www-data /var/www/moodle
chmod 755 /var/www/moodle

Moodle 사전 구성이 완료되었습니다.

5단계 - SSL 인증서 생성 및 Nginx 가상 호스트 구성

HTTPS 연결에서 Nginx 웹 서버로 Moodle을 실행합니다. 라이브 서버에 있는 경우 자체 인증서 파일을 사용하거나 Lets Encrypt에서 자체 무료 인증서를 추가할 수 있습니다. 여기 내 로컬 컴퓨터에 있으므로 자체적으로 새 자체 서명 인증서 파일을 생성하려고 합니다.

새 SSL 디렉토리를 생성하고 아래의 openssl 명령을 사용하여 자체 서명된 인증서 파일을 생성합니다.

mkdir -p /etc/nginx/ssl
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/moodle.crt -keyout /etc/nginx/ssl/moodle.key

개인 키의 권한을 변경하십시오.

chmod 600 /etc/nginx/ssl/moodle.key

다음으로 Nginx 구성 디렉토리를 가져와서 사이트 사용 가능 디렉토리에 Moodle용 새 가상 호스트 파일을 만듭니다.

cd /etc/nginx/
vim sites-available/moodle-hakaselabs

아래에 Nginx 가상 호스트 구성을 붙여넣습니다.

# PHP Upstream Handler
upstream php-handler {
    server unix:/run/php/php7.0-fpm.sock;
}
 
# Nginx redirect HTTP to HTTPS - moodle.hakase-labs.com
server {
    listen 80;
    server_name moodle.hakase-labs.com;
    # enforce https
    return 301 https://$server_name$request_uri;
}

# HTTPS Configuration
server {
        server_name          moodle.hakase-labs.com;

        listen               *:443 ssl http2;
        listen               [::]:443 ssl http2;

        # SSL Configuration   
        ssl  on;
        ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        add_header X-Frame-Options DENY;
        add_header X-Content-Type-Options nosniff;
        ssl_session_tickets off;
        #ssl_stapling on;
        #ssl_stapling_verify on;
        resolver_timeout 5s;
        ssl_certificate /etc/nginx/ssl/moodle.crt;
        ssl_certificate_key /etc/nginx/ssl/moodle.key;
       
        # Root Moodle Data DIrectory
        root /var/www/moodle;
        rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last;

        location ^~ / {
                try_files $uri $uri/ /index.php?q=$request_uri;
                index index.php index.html index.htm;

                location ~ \.php$ {
                        include snippets/fastcgi-php.conf;
                        fastcgi_pass php-handler;
                }
        }

파일을 저장하고 vim을 종료한 다음 가상 호스트를 활성화하고 Nginx 구성 파일을 테스트하여 오류가 없는지 확인합니다.

ln -s /etc/nginx/sites-available/moodle-hakaselabs /etc/nginx/sites-enabled/
nginx -t

Nginx 웹 서버를 다시 시작합니다.

systemctl restart nginx

SSL 인증서 파일이 생성되었고 Moodle용 Nginx 가상 호스트가 구성되었습니다.

6단계 - 무들 설치하기

웹 브라우저를 열고 주소 표시줄에 서버의 무들 URL을 입력하고 Enter 키를 누릅니다. 이 튜토리얼에서는 제 도메인 이름인 moodle.hakase-labs.com을 사용하겠습니다.

무들 설치 페이지가 나타납니다.

언어를 선택하고 영어를 사용하겠습니다. 다음을 클릭합니다.

무들 URL을 구성합니다. 제 경우에는 moodle.hakase-labs.com, 무들 웹 루트 디렉토리 /var/www/moodle 및 무들 데이터 디렉토리 /var/moodledata를 구성합니다.

그런 다음 다음을 클릭합니다.

데이터베이스 드라이버를 구성하고 아래의 mysql 데이터베이스 서버를 사용하고 다음을 클릭하십시오.

Moodle에 대한 데이터베이스 정보를 입력합니다.

  • 데이터베이스 호스트: localhost\n
  • 데이터베이스 이름: moodledb
  • 데이터베이스 사용자: moodleuser
  • 데이터베이스 비밀번호: hakaselabs123\n
  • 테이블 접두어: moodle_
  • 데이터베이스 포트: 3306
  • Unix 소켓: /var/run/mysql/mysqld.sock

계속하려면 다음을 클릭하십시오.

저작권 계약에 동의합니다. 계속을 클릭하세요.

시스템 확인, 서버 구성 및 무들에 필요한 모든 PHP 확장을 확인합니다.

모든 결과가 정상인지 확인한 다음 계속을 클릭하여 설치하십시오.

많은 모듈이 설치되는 것을 볼 수 있으며 모든 결과가 성공적인지 확인하십시오.

계속을 다시 클릭합니다.

다음으로 관리자 사용자와 암호를 구성해야 합니다.

관리자 정보를 입력하고 프로필 업데이트를 클릭합니다.

첫 페이지 설정의 경우 자신의 페이지 정보를 입력하고 변경 사항 저장을 클릭합니다.

아래의 사용자 관리 대시보드로 리디렉션됩니다.

무들 설치가 완료되었습니다.

7단계 - 테스트

무들 홈페이지 테스트 - moodle.hakase-labs.com.

Moodle 로그인 페이지 - moodle.hakase-labs.com/login.

Moodle 사용자 관리 대시보드.

Moodle 사용자 기본 설정 페이지.

Moodle 사이트 관리 페이지.

Moodle은 Nginx, PHP-FPM 7 및 MySQL 5.7 서버와 함께 Ubuntu 16.04에 설치되었습니다. 즉 "Moodle with LEMP Stack"입니다.

참조

  • https://docs.moodle.org/32/en/Nginx