CentOS 7: Moodleをインストールする

e-LearningプラットフォームのMoodleをインストールする手順を記載します。

1 Moodleをインストールする

  • この記事ではhttpsの為にデフォルトのSSL/TLS証明書を使っています。別にSSL/TLS証明書を用意している場合はそちらをお使いください。
  • httpではなくhttpを使用する場合は、/etc/httpd/conf.d/moodle.confにて、443を80にしてSSLXXXのディレクティブを削除してください。
  • MOODLE_FQDNはお使いの環境のFQDNに変更してください。
  • MOODLE_PASSWDはMySQLで使うmoodleユーザのパスワードです。
#!/bin/sh

set -e

[ -z "${MOODLE_FQDN}" ] && \
  MOODLE_FQDN=centos-7-moodle.hiroom2.com
[ -z "${MOODLE_PASSWD}" ] && \
  MOODLE_PASSWD=moodle

mysql_install()
{
  sudo yum install -y mariadb-server
  sudo systemctl enable mariadb
  sudo systemctl start mariadb

  cat<<EOF | sudo mysql -uroot
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT ALL PRIVILEGES ON moodle.* TO moodle@localhost
  IDENTIFIED BY '${MOODLE_PASSWD}';
exit
EOF
}

moodle_install()
{
  # The moodle needs the following php extensions.
  # curl iconv mbstring openssl tokenizer xmlrpc soap ctype zip zlib
  # gd simplexml spl pcre dom xml xmlreader intl json hash fileinfo.
  sudo yum install -y php php-mysql php-gd php-intl php-mbstring \
       php-soap php-xml php-xmlrpc

  sudo yum install -y git

  sudo mkdir -p /var/lib/moodle

  cd /usr/share
  sudo git clone https://github.com/moodle/moodle
  cd moodle
  sudo git checkout v3.1.6 -b v3.1.6 # moodle 3.2 does not work on PHP 5.4.

  cat <<EOF | sudo tee config.php
<?php
unset(\$CFG);
global \$CFG;
\$CFG = new stdClass();

\$CFG->dbtype = 'mariadb';
\$CFG->dbhost = 'localhost';
\$CFG->dbname = 'moodle';
\$CFG->dbuser = 'moodle';
\$CFG->dbpass = '${MOODLE_PASSWD}';
\$CFG->prefix = 'mdl_';

\$CFG->wwwroot = 'https://${MOODLE_FQDN}/moodle';
\$CFG->dirroot = '/usr/share/moodle';
\$CFG->dataroot = '/var/lib/moodle';
\$CFG->directorypermissions = 0750;
\$CFG->admin = 'admin';

\$CFG->pathtodu = '$(which du)';
\$CFG->unzip = '$(which unzip)';
\$CFG->zip = '$(which zip)';

\$CFG->respectsessionsettings = true;
\$CFG->disableupdatenotifications = true;
\$CFG->enablehtmlpurifier = true;

if (file_exists("\$CFG->dirroot/lib/setup.php"))  {
  include_once("\$CFG->dirroot/lib/setup.php");
} else {
  if (\$CFG->dirroot == dirname(__FILE__)) {
    echo "<p>Could not find this file: \$CFG->dirroot/lib/setup.php</p>";
    echo "<p>Are you sure all your files have been uploaded?</p>";
  } else {
    echo "<p>Error detected in config.php</p>";
    echo "<p>Error in: \\\$CFG->dirroot = '\$CFG->dirroot';</p>";
    echo "<p>Try this: \\\$CFG->dirroot = '".dirname(__FILE__)."';</p>";
  }
  die;
}
EOF
}

apache_install()
{
  sudo yum install -y httpd mod_ssl

  sudo chown -R apache:root /var/lib/moodle

  cat <<EOF | sudo tee /etc/httpd/conf.d/moodle.conf
<VirtualHost _default_:443>
  SSLEngine on
  SSLCertificateFile /etc/pki/tls/certs/localhost.crt
  SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

  Alias /moodle /usr/share/moodle

  <Directory /usr/share/moodle>
    Options FollowSymLinks MultiViews
    AllowOverride None
    Require all granted

    php_flag magic_quotes_gpc Off
    php_flag magic_quotes_runtime Off
    php_flag file_uploads On
    php_flag session.auto_start Off
    php_flag session.bug_compat_warn Off
    php_value upload_max_filesize 2M
    php_value post_max_size 2M
  </Directory>
</VirtualHost>
EOF

  sudo firewall-cmd --add-service=https --permanent
  sudo firewall-cmd --reload
  sudo systemctl enable httpd
  sudo systemctl restart httpd
}

moodle_main()
{
  mysql_install
  moodle_install
  apache_install
}

moodle_main

2 Moodleへアクセスする

以下のURLにアクセスしてMoodleをセットアップします。

https://<server>/moodle