Moodle 설치 · 6 min read · Sep 08, 2025
Debian 12 서버에 Moodle LMS 설치하는 방법

Moodle은 학습 관리 시스템(LMS)을 위한 오픈 솔루션입니다. 온라인 강좌 생성, 온라인 학교 관리, 콘텐츠 관리 및 협업 학습 제공 등 교육 목적으로 사용되는 플랫폼입니다. Moodle은 주로 PHP로 작성되었으며 MySQL/MariaDB를 데이터베이스로 사용하며 모든 운영 체제에서 실행할 수 있습니다. Moodle 설치를 위해 Apache 또는 Nginx 중에서 선택할 수 있습니다.
이 가이드에서는 Debian 12 서버에 Moodle 학습 관리 시스템을 설치하는 방법을 배웁니다. LAMP 스택(Linux, Apache, MariaDB, PHP)으로 Moodle을 실행하고, UFW(간단한 방화벽)를 사용하여 Debian 서버를 보호한 다음, Certbot과 Letsencrypt를 통해 HTTP로 Moodle을 보호합니다.
전제 조건
시작하기 전에 다음 사항을 확인하세요:
- Debian 12 서버
- 관리자 권한이 있는 비루트 사용자
- 서버 IP 주소를 가리키는 도메인 이름
종속성 설치
Moodle LMS는 PHP와 MySQL로 작성되었으므로 시스템에 해당 패키지를 설치해야 합니다. 이 예제에서는 LAMP 스택(Linux, Apache, MariaDB, PHP)으로 Moodle을 실행할 것입니다. 따라서 지금은 Debian 서버에 LAMP를 설치합니다.
패키지를 설치하기 전에 아래 명령어를 실행하여 Debian 패키지 인덱스를 업데이트합니다.
sudo apt update
이제 아래 명령어를 사용하여 LAMP 스택(Linux, Apache, MariaDB, PHP) 종속성을 설치합니다. 설치를 진행하려면 ‘Y’를 입력하세요.
sudo apt install apache2 mariadb-server php-cli php-intl php-xmlrpc php-soap php-mysql php-zip php-gd php-tidy php-mbstring php-curl php-xml php-pear php-bcmath libapache2-mod-php
설치가 완료되면 ‘apache2’ 서비스가 실행되고 있는지 확인합니다.
sudo systemctl is-enabled apache2
sudo systemctl status apache2아래에서 Apache 웹 서버가 실행 중이고 활성화되어 있는 것을 확인할 수 있습니다.

이제 아래 명령어를 실행하여 ‘mariadb’ 서비스를 확인합니다.
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb아래 출력에서 MariaDB 서버가 실행 중인 것을 확인할 수 있습니다.

마지막으로 아래 명령어를 사용하여 PHP 버전을 확인하고 활성화된 모듈 목록을 확인합니다.
php -v
php -mPHP 8.2가 설치되어 있으며 ‘curl’, ‘exif’, ‘date’와 같은 기본 모듈이 활성화되어 있는 것을 확인할 수 있습니다.

UFW(간단한 방화벽) 설치
LAMP 스택을 설치한 후, 서버를 보호하기 위해 UFW(간단한 방화벽)를 설치합니다. 그런 다음 SSH, HTTP 및 HTTPS 프로토콜을 위한 포트를 엽니다. 마지막으로 UFW를 시작하고 활성화합니다.
UFW를 설치하려면 아래 ‘apt’ 명령어를 실행합니다.
sudo apt install ufw
UFW가 설치되면 아래 ‘ufw’ 명령어를 실행하여 OpenSSH, HTTP(80) 및 HTTPS(443) 포트를 엽니다. ‘규칙이 업데이트되었습니다’라는 출력이 표시됩니다.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp이제 아래 명령어를 실행하여 Debian 머신에서 UFW를 시작하고 활성화합니다. 프롬프트가 나타나면 ‘y’를 입력하여 확인하고 진행합니다. ‘방화벽이 활성화되었으며 시스템 시작 시 활성화됩니다’라는 출력이 표시됩니다.
sudo ufw enable마지막으로 아래 명령어를 사용하여 UFW 상태를 확인합니다. UFW가 ‘활성’ 상태이며 OpenSSH와 포트 ‘80’ 및 ‘443’이 ‘ 허용됨 ‘으로 표시됩니다.
sudo ufw status
MariaDB 서버 구성
Moodle을 설치하기 전에 기본 스토리지 엔진을 ‘innodb’로 변경하고 ‘Barracuda’를 기본 형식으로 설정해야 합니다. 그 후, MariaDB 서버를 보호하고 ‘mariadb-secure-installation’ 유틸리티를 사용하여 ‘root’ 비밀번호를 설정해야 합니다.
기본 MariaDB 서버 구성 파일 ‘/etc/mysql/mariadb.conf.d/50-server.cnf’를 ‘nano’ 편집기로 엽니다.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf아래 구성을 삽입하여 ‘Barracuda’ 형식을 활성화하고 기본 스토리지 엔진을 ‘InnoDB’로 설정합니다.
innodb_file_format = Barracuda
default_storage_engine = innodb
innodb_large_prefix = 1
innodb_file_per_table = 1파일을 저장하고 편집기를 종료합니다.
이제 아래 ‘systemctl’ 명령어를 실행하여 MariaDB 서버를 재시작하고 변경 사항을 적용합니다.
sudo systemctl restart mariadb그 후, 아래 ‘mariadb-secure-installation’ 명령어를 실행하여 MariaDB 서버 설치를 보호합니다.
sudo mariadb-secure-installation이로써 MariaDB 서버 구성에 대한 질문이 표시됩니다:
- 루트 비밀번호에 대한 질문이 있을 때 ENTER를 누릅니다(나중에 구성할 것입니다)
- ‘unix_socket’ 인증으로 전환하라는 질문이 있을 때 ‘n’을 입력합니다
- MariaDB 루트 비밀번호를 설정하라는 질문이 있을 때 ‘Y’를 입력한 후 새 비밀번호를 입력하고 반복합니다
- MariaDB에서 익명 사용자를 제거하라는 질문이 있을 때 ‘Y’를 입력합니다
- 루트 사용자의 원격 로그인을 비활성화하라는 질문이 있을 때 ‘Y’를 입력합니다
- 기본 데이터베이스 ‘test’와 그 권한을 제거하라는 질문이 있을 때 ‘Y’를 입력합니다
- 테이블 권한을 다시 로드하고 변경 사항을 적용하라는 질문이 있을 때 ‘Y’를 입력합니다
작업이 완료되면 다음 단계로 넘어가서 새 데이터베이스와 사용자를 생성합니다.
Moodle을 위한 데이터베이스 및 사용자 생성
MariaDB 서버가 구성되었으므로 이제 Moodle에서 사용할 새 데이터베이스와 사용자를 생성합니다. ‘mariadb’ 클라이언트를 사용하여 MariaDB에 로그인하고 새 데이터베이스와 사용자를 생성합니다.
아래 ‘mariadb’ 명령어를 사용하여 MariaDB 서버에 로그인합니다. 프롬프트가 나타나면 MariaDB 루트 비밀번호를 입력합니다.
sudo mariadb -u root -p아래 쿼리를 실행하여 새 데이터베이스와 비밀번호 ‘MoodlePassw0rd’를 가진 사용자 ‘moodle’을 생성합니다. 다음 데이터베이스 자격 증명을 귀하의 정보로 변경해야 합니다.
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON moodle.* TO 'moodle'@'localhost' IDENTIFIED BY "MoodlePassw0rd";
FLUSH PRIVILEGES;
이제 아래 쿼리를 실행하여 사용자 ‘moodle’을 확인합니다. 사용자 ‘moodle’이 데이터베이스 ‘moodle’에 접근할 수 있는지 확인합니다.
SHOW GRANTS FOR moodle@localhost;마지막으로 ‘QUIT’을 입력하여 MariaDB 서버에서 로그아웃합니다.

PHP 구성
이제 MariaDB 서버를 구성하고 새 데이터베이스 사용자를 생성했으므로 ‘php.ini’ 파일을 구성하고 Moodle에서 필요로 하는 기본 구성을 변경합니다.
‘php.ini’ 파일을 ‘nano’ 편집기로 엽니다.
sudo nano /etc/php/8.2/apache2/php.ini기본 PHP 구성을 아래와 같이 변경합니다. 서버 메모리에 따라 ‘memory_limit’를 적절히 변경할 수 있습니다.
memory_limit = 256M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Amsterdam
max_input_vars = 5000작업이 완료되면 파일을 저장하고 편집기를 종료합니다.
마지막으로 아래 ‘systemctl’ 명령어를 실행하여 ‘apache2’ 웹 서버를 재시작하고 새 PHP 구성을 적용합니다.
sudo systemctl restart apache2Moodle 소스 코드 다운로드
PHP 구성을 마친 후, Moodle 소스 코드를 다운로드할 준비가 되었습니다. 그런 다음 Moodle 설치 디렉토리와 ‘data’ 디렉토리를 설정합니다. 이 예제에서는 Moodle 설치 디렉토리를 ‘/var/www/moodle’로, ‘data’ 디렉토리를 ‘/var/www/moodledata’로 설정합니다.
‘/var/www’ 디렉토리로 이동하여 아래 ‘wget’ 명령어를 사용하여 Moodle 소스 코드를 다운로드합니다.
cd /var/www
sudo wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.tgz다운로드가 완료되면 아래 ‘tar’ 명령어를 실행하여 Moodle 소스 코드를 추출하고 추출된 디렉토리의 이름을 ‘moodle’로 변경합니다. 이렇게 하면 Moodle 설치가 ‘/var/www/moodle’ 디렉토리에 위치하게 됩니다.
tar -xf moodle-latest-405.tgz다음으로, Moodle 설치를 위한 데이터 디렉토리로 사용할 새 디렉토리 ‘/var/www/moodledata’를 생성합니다.
mkdir -p /var/www/moodledata마지막으로 아래 명령어를 실행하여 ‘/var/www/moodle’ 및 ‘/var/www/moodledata’ 디렉토리의 소유권을 사용자 ‘www-data’로 변경합니다. 그리고 ‘www-data’ 사용자가 해당 디렉토리 내의 파일을 읽고, 쓰고, 실행할 수 있도록 설정합니다.
sudo chown -R www-data:www-data /var/www/moodle /var/www/moodledata
sudo chmod u+rwx /var/www/moodle /var/www/moodledata
Apache 가상 호스트 설정
이제 Moodle을 다운로드했으므로 다음 단계는 Moodle을 위한 새로운 Apache 가상 호스트 파일을 만드는 것입니다. 따라서 도메인 이름이 서버 IP 주소에 해결되거나 가리키고 있는지 확인합니다.
새 가상 호스트 구성 ‘/etc/apache2/sites-available/moodle.conf’를 ‘nano’ 편집기로 생성합니다.
sudo nano /etc/apache2/sites-available/moodle.conf아래 구성을 삽입하여 Moodle을 위한 가상 호스트 파일을 설정합니다. ‘ServerName’ 매개변수를 귀하의 도메인 이름으로 변경해야 합니다.
DocumentRoot /var/www/moodle/
ServerName moodle.howtoforge.local
ServerAdmin [email protected]
Options +FollowSymlinks
AllowOverride All
Require all granted
ErrorLog /var/log/apache2/moodle_error.log
CustomLog /var/log/apache2/moodle_access.log combined
작업이 완료되면 파일을 저장하고 편집기를 종료합니다.
이제 아래 ‘a2enmod’ 명령어를 실행하여 ‘rewrite’ 모듈을 활성화하고, 아래 ‘a2ensite’ 명령어를 실행하여 ‘moodle.conf’ 가상 호스트를 활성화합니다.
sudo a2enmod rewrite
sudo a2ensite moodle.conf다음으로 아래 ‘apachectl’ 명령어를 실행하여 Apache 구성을 확인합니다. 올바른 Apache 구성이면 ‘구문이 올바릅니다’라는 출력이 표시됩니다.
sudo apachectl configtest
마지막으로 아래 ‘systemctl’ 명령어를 실행하여 Apache 웹 서버를 재시작하고 변경 사항을 적용합니다.
sudo systemctl restart apache2HTTPS를 통한 Moodle 보안
이 시점에서 Moodle 설치가 준비되었습니다. 계속 진행하기 전에 Certbot과 Letsencrypt를 통해 Moodle을 HTTPS로 보호합니다. 공용 서버에 Moodle을 설치할 때 이 작업을 수행합니다. 로컬 개발 환경에서는 HTTPS를 생략하거나 자체 서명된 인증서를 통해 구현할 수 있습니다.
아래 ‘apt’ 명령어를 사용하여 ‘certbot’ 및 ‘python3-certbot-apache’ 플러그인을 설치합니다. 설치를 확인하려면 ‘Y’를 입력합니다.
sudo apt install certbot python3-certbot-apache설치가 완료되면 아래 ‘certbot’ 명령어를 실행하여 Moodle에 대한 SSL 인증서를 생성합니다. 다음 도메인 이름과 이메일 주소를 귀하의 도메인으로 변경해야 합니다.
sudo certbot --apache --agree-tos --no-eff-email -m [email protected] -d moodle.howtoforge.local작업이 완료되면 SSL 인증서는 ‘/etc/letsencrypt/live/domain.com’ 디렉토리에 저장되며 Moodle 설치는 HTTPS에서 실행됩니다.
Moodle 설치
웹 브라우저를 열고 Moodle 설치 도메인인 https://moodle.howtoforge.local/를 방문하면 Moodle 설치 마법사가 표시됩니다.
Moodle의 기본 언어를 선택하고 ‘ 다음 ‘을 클릭합니다.

도메인 이름과 Moodle 데이터 디렉토리를 ‘ /var/www/moodledata ‘로 입력합니다.

‘ MariaDB ‘를 Moodle의 기본 데이터베이스로 선택합니다.

MariaDB 데이터베이스 세부정보(예: dbname, dbuser 및 비밀번호)를 입력합니다.

저작권 고지에서 ‘ 계속 ‘을 클릭합니다.

‘서버 검사’ 섹션 내에서 Debian 서버가 Moodle 요구 사항을 충족하는지 확인합니다. 모든 항목의 상태가 ‘ OK ‘여야 합니다.

이제 다음과 같은 Moodle 설치 화면을 보게 됩니다:

설치가 완료되면 관리자 세부정보(사용자 이름, 이메일 및 비밀번호)를 입력합니다.

이제 Moodle 사이트 정보를 입력합니다.

마지막으로 다음과 같은 Moodle 관리자 대시보드를 보게 됩니다.

결론
축하합니다! Debian 12 서버에 Moodle 학습 관리 시스템(LMS) 설치를 완료했습니다. LAMP 스택(Linux, Apache, MariaDB, PHP)으로 Moodle을 실행하고 UFW(간단한 방화벽) 및 Certbot과 Letsencrypt를 통해 HTTPS로 보호했습니다. 여기서 Moodle에 대한 새로운 테마를 적용하거나 기능을 확장하기 위해 새로운 애드온을 설치하거나 Moodle 설치 관리를 위한 Moodle 사용자 가이드를 학습할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.