Prerequisite

PHP Settings

Settings

  1. Check and set these settings in your php.ini
memory_limit
============

memory_limit = 128M

session.save_handler
====================

session.save_handler = files

file_uploads
============

file_uploads = On

session.auto_start
==================

session.auto_start = 0


post_max_size and upload_max_filesize
=====================================

post_max_size = 500M
upload_max_filesize = 500M

Restart Server

  1. Restart the web server after setting the above settings

    systemctl restart httpd.service

PHP Extensions

PHP Extensions

  1. Install the below list of PHP extensions with the command below (a lot of these extensions are installed by default when installing PHP).  See Install PHP on how to install PHP.
yum install php-mbstring curl php-xmlrpc php-soap php-gd php-xml php-intl php-json

MySQL Settings

MySQL settings

Adding the configuration settings

  1. Open my.cnf file

    vi /etc/my.cnf

  2. Add the below config settings to the end of the file
[client]
default-character-set = utf8mb4

[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake

[mysql]
default-character-set = utf8mb4

Restart the MySQL daemon

  1. Restart the MySQL daemon after adding the configuration changes
systemctl restart mysqld

MySQL Database

Setting up the MySQL Database

  1. Log into MySQL as root, providing the password at the prompt

    mysql -u root -p

  2. Create the database with the command below

    CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  3. Create a user/password combination with appropriate permissions for the database (replace moodle, moodleuser and yourpassword with an appropriate database name, username and password)

    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'yourpassword';


  4. Flush the privileges

    flush privileges;

  5. Exit the database

    exit;

Folder Structure

Creating a Moodle Folder Structure

Moodle Data Folder

  1. Navigate to /var/www

    cd /var/www

  2. Create Moodle datafolder, replacing "foldername" with an appropriate name

    mkdir moodledata-foldername

  3. Change the owner of the folder

    chown -R apache:apache moodledata-foldername

Moodle Installation Folder

  1. Navigate to /var/www

    cd /var/www

  2. Create Moodle datafolder, replacing "foldername" with an appropriate name

    mkdir foldername

Virtual Host File

Moodle Virtual Host File

  1. Create a virtual host configuration file for Moodle, like the example below (replacing subdomain.domain.com with an appropriate name).  For more information on how to do this, see Apache Virtual Hosts
<VirtualHost subdomain.domain.com:80>
        ServerName subdomain.domain.com

        Redirect permanent / https://subdomain.domain.com

</VirtualHost>

<VirtualHost subdomain.domain.com:443>
        ServerName subdomain.domain.com

        DocumentRoot "/var/www/subdomain.domain.com"
        <Directory "/var/www/subdomain.domain.com">

        Options Indexes FollowSymLinks MultiViews
        # AllowOverride controls what directives may be placed in .htaccess files.
        AllowOverride All

        # Controls who can get stuff from this server file
        Order allow,deny
        Allow from all

        </Directory>

        <IfModule mpm_peruser_module>
                ServerEnvironment apache apache
        </IfModule>

</VirtualHost>

SSL Certificate

Obtaining a Certificate

  1. Run the command below (replacing example.com with the actual domain details)

    certbot --apache -d example.com

  2. Follow the prompts of the application
  3. At the option, "Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access," choose 1.  Https redirection is configured in the domains conf file
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):1

For more information, see Let's Encrypt Certificates