Table of Contents
1 Install Moodle
- This article uses default SSL/TLS certicication file for https. Please change your SSL/TLS certification file.
- If you use http instead of https, change 443 to 80 and delete SSLXXX directive in /etc/apache2/sites-available/moodle.conf.
- Set your environment FQDN to MOODLE_FQDN.
- MOODLE_PASSWD is password of moodle user in MySQL.
#!/bin/sh -ePHP_VERSION=7.2[ -z “${MYSQL_PASSWD}” ] && MYSQL_PASSWD=mysql[ -z “${MOODLE_FQDN}” ] && MOODLE_FQDN=$(hostname -f)[ -z “${MOODLE_PASSWD}” ] && MOODLE_PASSWD=moodlemysql_install(){ sudo apt install -y default-mysql-servercat <<EOF | sudo tee -a /etc/mysql/my.cnf[client]default-character-set = utf8mb4[mysqld]innodb_file_format = Barracudainnodb_file_per_table = 1innodb_large_prefixcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciskip-character-set-client-handshake[mysql]default-character-set = utf8mb4EOF sudo systemctl enable mysql sudo systemctl restart mysql cat <<EOF | sudo mysql_secure_installationy${MYSQL_PASSWD}${MYSQL_PASSWD}nyyyEOF cat<<EOF | sudo mysql -uroot -p${MYSQL_PASSWD}CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;GRANT ALL PRIVILEGES ON moodle.* TO moodle@localhost IDENTIFIED BY ‘${MOODLE_PASSWD}’;exitEOF}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. # # libapache2-mod-php has php-mbstring and php-xml. sudo apt install -y php php-mysql php-curl php-xmlrpc php-soap php-gd php-intl php-json php-xml php-zip php-mbstring sudo apt 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.5.1 -b v3.5.1 cat <<EOF | sudo tee config.php<?phpunset($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->dboptions = array(‘dbcollation’ => ‘utf8mb4_unicode_ci’,);$CFG->wwwroot = ‘https://${MOODLE_FQDN}/moodle’;$CFG->dirroot = ‘/usr/share/moodle’;$CFG->dataroot = ‘/var/lib/moodle’;$CFG->directorypermissions = 0750;$CFG->admin = ‘admin’;$CFG->pathtodu = ‘/usr/bin/du’;$CFG->unzip = ‘/usr/bin/unzip’;$CFG->zip = ‘/usr/bin/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 apt install -y apache2 libapache2-mod-php sudo chown -R www-data:root /var/lib/moodle cat <<EOF | sudo tee /etc/apache2/sites-available/moodle.conf<VirtualHost _default_:443> SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.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 a2enmod ssl sudo a2enmod php${PHP_VERSION} sudo a2ensite moodle sudo systemctl enable apache2 sudo systemctl restart apache2}moodle_main(){ mysql_install moodle_install apache_install}moodle_main
2 Access to Moodle
Access to the following URL and setup Moodle.
https://<server>/moodle