웹사이트 검색

CentOS 7에 무들 3.2를 설치하는 방법


이 페이지에서

  1. 1단계 - Nginx 설치
  2. 2단계 - PHP-FPM 설치 및 구성
  3. 3단계 - MariaDB 서버 설치 및 구성
  4. 4단계 - Moodle 다운로드 및 구성
  5. 5단계 - SSL 및 가상 호스트 구성\n
  6. 6단계 - SELinux 및 방화벽 구성\n
  7. 7단계 - Moodle 설치
  8. 8단계 - 테스트
  9. 참조

Moodle은 PHP로 작성된 오픈 소스 eLearning 소프트웨어입니다. 원격 교육, e-러닝 프로젝트 및 혼합 학습에 사용됩니다. Moodle은 Modular-object-oriented dynamic learning environment의 약어로서 Martin Dougiamas가 개발하고 교육자와 교사가 상호 작용 및 공동 구성 콘텐츠에 중점을 둔 온라인 코스를 만들 수 있도록 GPL 라이선스로 출시되었습니다.

이 튜토리얼에서는 현재 무들 3.2인 안정적인 최신 무들 버전을 설치하는 방법을 단계별로 보여드리겠습니다. Moodle은 MariaDB 데이터베이스 서버를 사용하고 PHP-FPM7.0을 사용하여 Nginx 웹 서버에서 실행됩니다. 운영 체제는 CentOS 7을 사용합니다.

전제 조건

  • CentOS 7 서버
  • 루트 권한\n

우리가 할 일:

  1. Nginx 설치
  2. PHP-FPM 설치 및 구성
  3. MariaDB 설치 및 구성
  4. Moodle 다운로드 및 구성
  5. SSL 및 가상 호스트 구성\n
  6. SELinux 및 방화벽 구성\n
  7. 무들 설치하기\n
  8. 테스트

1단계 - Nginx 설치

이 단계에서는 epel 저장소에서 Nginx를 설치합니다. Nginx는 기본적으로 Centos 리포지토리에서 사용할 수 없으므로 Nginx를 설치하려면 새 리포지토리 epel-repository를 추가해야 합니다.

yum 명령으로 epel-repository를 설치합니다.

yum -y install epel-release

다음으로 epel-repository에서 Nginx를 설치합니다.

yum -y install nginx

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

systemctl start nginx
systemctl enable nginx

Nginx가 설치되었으며 포트 80에서 실행 중입니다. netstat로 시스템의 열린 포트를 확인하세요.

netstat -plntu

netstat 명령이 설치되어 있지 않은 경우 net-tools 패키지를 설치하여 얻을 수 있습니다.

yum -y install net-tools

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

Moodle 3.2는 새로운 PHP 7 버전을 지원하므로 PHP 7.0을 사용하겠습니다. PHP-FPM 7.0은 기본 CentOS 리포지토리에서 사용할 수 없습니다. 여기에서 사용할 것이지만 PHP7용 webtatic의 타사 저장소가 있습니다.

rpm 명령을 사용하여 새 webtatic 저장소를 시스템에 추가합니다.

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

다음으로, Moodle에 필요한 모든 확장 및 패키지와 함께 PHP-FPM 7.0을 설치합니다.

yum install -y graphviz aspell php70w-fpm php70w-cli php70w-pspell php70w-curl php70w-gd php70w-intl php70w-mysql php70w-xml php70w-xmlrpc php70w-ldap php70w-zip php70w-json php70w-opcache php70w-readline php70w-mbstring php70w-soap

설치가 완료되면 vim으로 PHP 구성 파일 php.ini를 편집합니다.

vim /etc/php.ini

cgi.fix_pathinfo 줄의 주석을 해제하고 값을 0으로 변경합니다.

cgi.fix_pathinfo=0

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

php-fpm 구성 디렉토리로 이동하여 php-fpm 구성 파일 www.conf를 편집합니다.

cd /etc/php-fpm.d/
vim www.conf

웹 서버가 사용자 및 그룹 nginx에서 실행되도록 사용자 및 그룹 줄을 nginx로 변경합니다.

user = nginx
group = nginx

서버 포트를 사용하는 대신 php-fpm용 소켓 파일을 사용합니다. 수신 라인의 값을 /run/php-fpm/php-fpm.sock으로 변경합니다.

listen = /run/php-fpm/php-fpm.sock

다음으로 소켓 파일 소유자, 그룹 및 기본 권한 줄의 주석을 해제하고 아래와 같이 변경합니다.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

PHP가 구문 분석할 파일 확장자를 구성합니다.

.php 파일만 허용합니다.

security.limit_extensions = .php

아래의 PHP-FPM 환경 변수 행의 주석을 제거하십시오.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

파일을 저장하고 편집기를 종료합니다.

이제 우리는 php 세션 경로를 위한 새로운 디렉토리를 생성해야 합니다. 새 디렉터리를 만들고 디렉터리 소유자를 nginx 사용자 및 그룹으로 변경합니다.

mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/

php-fpm 소켓 파일 디렉토리의 소유자도 nginx 사용자로 변경하십시오.

chown -R nginx:nginx /run/php-fpm/

PHP-FPM 구성이 완료되었습니다. PHP-FPM을 시작하고 다음 두 개의 systemctl 명령을 사용하여 부팅 시 자동으로 시작되도록 추가하십시오.

systemctl start php-fpm
systemctl enable php-fpm

PHP-FPM은 소켓 파일에서 실행됩니다. PHP-FPM이 netstat로 다시 실행되는지 확인하십시오.

netstat -lx | grep php-fpm.sock

3단계 - MariaDB 서버 설치 및 구성

이 가이드에서는 MariaDB를 데이터베이스 서버로 사용하겠습니다. Centos 리포지토리에서 mariadb-server를 설치한 다음 MariaDB 루트 암호를 구성하고 Moodle에 대한 새 데이터베이스 및 사용자를 추가합니다.

아래 yum 명령으로 mariadb-server를 설치합니다.

yum -y install mariadb-server mariadb

설치가 완료되면 my.cnf 구성 파일을 편집합니다.

vim /etc/my.cnf

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

default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda

저장하고 종료한 다음 MariaDB를 시작하고 부팅 시 시작되도록 활성화합니다.

systemctl start mariadb
systemctl enable mariadb

MariaDB가 설치되어 현재 포트 3306에서 실행 중이지만 아직 루트 암호가 없으므로 구성해야 합니다. 아래 명령을 사용하여 새 MySQL 루트 비밀번호를 설정하십시오.

mysql_secure_installation

MySQL 루트 비밀번호를 묻는 메시지가 표시됩니다.

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

MariaDB 구성이 완료되었습니다.

그런 다음 mysql 명령으로 MySQL 셸에 연결한 다음 Moodle에 대한 새 데이터베이스 및 사용자를 만들고 데이터베이스에 대한 권한을 새 사용자에게 부여합니다.

mysql 셸에 연결합니다.

mysql -u root -p
TYPE YOUR PASSWORD

아래의 mysql 쿼리를 실행하여 비밀번호 hakaselabs123 및 새 데이터베이스 moodledb로 새로운 사용자 moodleuser를 생성한 다음 새 사용자에게 데이터베이스의 모든 권한을 부여합니다. 서버에서 다른 안전한 비밀번호를 선택하세요!

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;

Moodle용 사용자 및 데이터베이스가 생성되었습니다.

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

GitHub 저장소에서 직접 Moodle을 다운로드할 것이므로 시스템에 git 명령이 필요합니다. 아래와 같이 yum으로 git을 설치합니다.

yum -y install git

다음으로 새 웹 루트 /var/www/ 디렉토리를 만듭니다.

mkdir -p /var/www/

/var/www/ 디렉토리로 이동하여 GitHub 저장소에서 Moodle을 복제합니다.

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

그런 다음 무들 디렉토리로 이동하여 사용 가능한 무들 분기를 확인합니다.

cd moodle/
git branch -a

Moodle 안정 분기를 나열하고 최신 안정 분기를 선택하고 최신 안정 분기 버전을 확인하십시오.

git branch --track MOODLE_32_STABLE orogin/MOODLE_32_STABLE
git checkout MOODLE_32_STABLE

이제 당신은 Moodle의 최신 안정 분기에 있어야 합니다. 아래의 git 명령으로 확인할 수 있습니다.

git status

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

# On branch MOODLE_32_STABLE
nothing to commit, working directory clean

이제 새로운 디렉토리인 moodledata를 생성하고 디렉토리의 소유자가 nginx 사용자 및 그룹인지 확인하십시오.

mkdir -p /var/moodledata
chown -R nginx:nginx /var/moodledata
chmod 777 /var/moodledata

무들 디렉토리의 소유자를 nginx 사용자로 변경합니다.

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

무들이 다운로드되었습니다.

5단계 - SSL 및 가상 호스트 구성

안전한 HTTPS 연결을 통해 nginx 웹 서버에서 Moodle을 실행합니다. 라이브 서버에 있을 때 자신의 인증서 파일을 사용하거나 let encrypt의 무료 인증서를 사용할 수 있습니다. 여기 내 로컬 컴퓨터에 있으므로 자체 서명된 새 인증서 파일을 직접 생성할 수 있습니다.

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

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

다음으로 cd 명령을 사용하여 nginx 구성 디렉토리로 이동하고 conf.d 디렉토리에 무들에 대한 새 가상 호스트 파일을 만듭니다.

cd /etc/nginx/
vim conf.d/moodle.conf

아래에 nginx 무들 가상 호스트를 붙여넣습니다.

# PHP Upstream Handler
upstream php-handler {
    server unix:/run/php-fpm/php-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 fastcgi.conf;
                        fastcgi_pass php-handler;
                }
        }
}

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

Nginx 구성을 테스트하고 오류가 없는지 확인한 다음 Nginx를 다시 시작하십시오.

nginx -t
systemctl restart nginx

무들에 대한 SSL 인증서 및 새로운 가상 호스트 구성이 완료되었습니다.

6단계 - SELinux 및 Firewalld 구성

이 단계에서는 SELinux 및 Firewalld를 구성합니다. SELinux가 꺼져 있고 사용하지 않으려면 이 단계를 건너뛰고 Firewalld 구성을 시작할 수 있습니다. SELinux 상태를 확인하고 firewalld가 설치되어 있는지 확인하십시오.

아래 명령으로 SELinux 상태를 확인하십시오.

sestatus

SELinux는 Enforcing 모드로 활성화됩니다.

SELinux를 구성하려면 시스템에 설치된 SELinux 관리 도구가 필요합니다.

yum으로 policycoreutils-python을 설치합니다.

yum -y install policycoreutils-python

이제 아래의 semanage 명령을 사용하여 무들 웹 루트 디렉토리와 무들 데이터 디렉토리에 대한 SELinux 컨텍스트 파일 및 디렉토리 설정을 변경합니다.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/moodle(/.*)?'
restorecon -Rv '/var/www/moodle/'

semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata(/.*)?'
restorecon -Rv '/var/moodledata/'

무들에 대한 SELinux 설정이 완료되었으므로 이제 Firewalld를 설정해야 합니다.

그것이 없다면 firewalld 패키지를 설치하십시오.

yum -y install firewalld

방화벽을 시작하고 부팅 시 시작되도록 자동으로 방화벽을 추가합니다.

systemctl start firewalld
systemctl enable firewalld

그런 다음 아래의 firewall-cmd 명령을 사용하여 HTTP, HTTPS 및 SSH용 포트를 엽니다.

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh

firewalld를 다시 로드하고 HTTP 및 HTTPS가 서비스 목록에 있는지 확인합니다.

firewall-cmd --reload
firewall-cmd --list-all

방화벽 구성이 완료되었습니다.

7단계 - 무들 설치

Moodle 설치 준비가 완료되었습니다. 이제 Moodle 가상 호스트의 도메인 이름을 방문하여 Moodle을 설치할 수 있습니다. 이 튜토리얼에서 사용한 도메인 이름은 moodle.hakase-labs.com입니다.

웹 브라우저를 열고 주소 표시줄에 URL moodle.hakase-labs.com을 입력합니다.

Moodle 설치 페이지가 표시되면 언어를 선택하고(저의 경우 영어) 다음을 클릭합니다.

이제 무들에 대한 구성 데이터를 입력하십시오: 웹 주소는 moodle.hakase-labs.com, 무들 웹 루트 디렉토리는 /var/www/moodle, moodledata 디렉토리는 /var/moodledata입니다. 계속하려면 다음을 클릭하십시오.

데이터베이스 드라이버는 아래와 같이 MySQL을 선택하고 다음을 클릭합니다.

무들 데이터베이스 구성

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

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

저작권 고지를 보려면 계속 버튼을 클릭하십시오.

Moodle은 시스템 및 모든 php 확장 요구 사항을 확인하고 모든 결과가 정상인지 확인한 다음 계속을 클릭하여 설치합니다.

무들 설치가 시작됩니다. 모든 결과가 성공인지 확인한 다음 계속을 클릭하여 Moodle을 구성합니다.

사용자 관리자 구성. 이름 이메일 비밀번호 등과 같은 정보를 입력하고 프로필 업데이트를 클릭합니다.

Moodle Front Page Configuration에서 무들 정보를 입력하고 변경 사항 저장을 클릭합니다.

그러면 Moodle 사용자 관리 대시보드로 리디렉션됩니다.

무들 설치가 오류 없이 완료되었습니다.

8단계 - 테스트

Moodle 첫 페이지인 moodle.hakase-labs.com을 방문하십시오.

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

무들 사용자 대시보드.

Moodle 시스템 구성을 위한 Moodle 사이트 관리.

무들 사용자 환경 설정.

CentOS 7 시스템에서 Nginx 웹 서버, php-fpm 및 MariaDB를 사용한 Moodle 설치가 성공적으로 완료되었습니다.

참조

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