Installation in a LAMP environment
Moodle is developed in Linux using Apache, MySQL, and PHP (known as the LAMP platform). If you have a choice, this is the preferred environment. There is ongoing debate whether PostgreSQL is the more suitable database option, but we will stick with MySQL as this is the system most administrators are most familiar with.
Also, some organizations are bound to using Microsoft SQL or Oracle. If this is the case, please refer to the respective installation guide as this is beyond the scope of this book.
Go to download.moodle.org
to download Moodle. As you can see, there are quite a number of distributions to choose from.
There are four types of builds available on Moodle's download site:
Current stable builds: For the current version of Moodle, there are two releases the latest stable build and the latest official release. The latest stable version is created weekly (every Wednesday) and is the best choice for a new server. The latest official release contains the stable build as well as new fixes, but the version will not have gone through the weekly code review and might contain unresolved issues.
Older stable builds: Older versions than the current version are maintained by the Moodle development team and bug fixes are back-ported. Sometimes, newly added functionality is back-ported. Currently, the oldest supported version is 1.9 and it is expected that this version will be supported until June 30, 2012.
Legacy versions: For older versions, a stable build and the last release are made available. However, these are not maintained any further.
Upcoming release builds: Moodle also offers you the option to download beta releases of the software (if available) and also the latest development release. These should only be downloaded for testing or development purposes, never in production environments!
Each version is made available in the two compressed formats: TGZ (use the tar
command to uncompress) and ZIP (requires unzip)
. You can either download them by clicking on the respective link or, if you have (secure) shell access, retrieve the file directly by using the wget
command (The file name is kept in sync with the current version number, which increases every 6 months; for example, moodle-latest-22, moodle-latest-24, and so on):
Note
The location where you install Moodle is referred to as dirroot
.
Once you have moved the file to the location where you want to install it on your web server (dirroot), extract the file using the unzip
command (or tar xvfz
if you downloaded the TGZ version). In a hosted environment, you might have to use the uncompressing method provided by the web administration interface (cPanel, Plesk, or any bespoke system).
If you place the entire folder in your web server documents directory, the site will be located at www.yourwebserver.com/moodle. To access your site from www.yourwebserver.com, copy the contents directly into the main web server's documents directory.
Note
The URL via which Moodle is accessed is referred to as wwwroot
.
Once this has been successfully done, you have to create the database that Moodle uses to store its data.
Creating the Moodle database and the data directory
Moodle requires a database where it can store its information. While it is possible to share an existing database, it is highly recommended to create a separate database for Moodle. This can either be done via a web interface, as provided by hosted servers, or via the Unix command line.
Most hosting providers provide a dedicated web interface to carry out basic database operations. Alternatively, you can use phpMyAdmin, an open source software that allows you to manage MySQL databases over the Web. It is part of most Linux distributions and also part of many control panels, such as cPanel or Plesk. (phpMyAdmin is often configured not to allow new databases to be created. If this is the case, you have to create the database from the database manager in your control panel.)
Once you have started phpMyAdmin, go to the Databases section and create a new database using the UTF collation. You don't need to create any tables; Moodle will be populating the database during the installation process.
While you can use the existing account of a database user, it is good practice to create a dedicated user for the Moodle database. This step is carried out in the Privileges section.
Note
Do not use the MySQL root account for your Moodle database!
phpMyAdmin allows you to perform both steps creating a database and adding a new user in a single action as shown in the following screenshot. We will create a user book and also check the Create database with same name and grant all privileges option.
If you don't have access to a web interface to create MySQL databases and user accounts or if you prefer to use a Linux shell, you can perform the steps via the command line:
1. Start the database command line tool by entering mysql u root p
and enter the password at the prompt.
2. Create a database here (called moodle)
by entering CREATE DATABASE moodle
; (all MySQL commands have to be completed with a semicolon).
3. Set the default character set and collation order to UTF8 by entering ALTER DATABASE moodle DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
;.
4. Create a user and password (here user
and password
, respectively) and grant database access permissions by entering GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER ON moodle.* TO user@localhost IDENTIFIED BY 'password'
;
5. Exit the MySQL command tool by entering QUIT
.
It is necessary to reload the grant tables using the following command line:
You have now completed the database setup. All we have to do now is to create Moodle's data directory before we are ready to start the installation of Moodle per se.
Creating the Moodle data directory
Moodle stores most of its information in the database you have just created. However, any uploaded files such as assignments or pictures are stored in a separate directory. This data directory in Moodle is usually referred to as moodledata
.
Note
The location which holds your Moodle data files is referred to as dataroot
.
Later on, the Moodle installer will attempt to create this directory but, in some setups, this is not possible due to security restrictions. To be on the safe side, it is better to create moodledata
manually or via a web-based file manager, as provided by some systems.
1. Create the directory by entering mkdir moodledata
.
2. Change permissions recursively by entering chmod R 0770 moodledata
(if you use 0777 then everybody on the server will have access to the files).
3. Change the user of the directory to that of your web server (usually apache
or www-data)
by entering chown R apache moodledata
.
4. Change the group of the directory to that of your web server (usually nobody
or www-data)
by entering chgrp R nobody moodledata
.
Note
It is crucial to create moodledata
on your server where it cannot be accessed publicly, that is, outside your web directory.
If you don't have permission to create the data directory in a secure location, create the .htaccess
file in your home directory containing the following two lines:
This will prevent files from being accessed without the user having permissions to do so.
Running the installer script
The installer script performs two main actions populating the database and creating the configuration file config.php
. The Moodle installer is initiated by entering the URL of wwwroot
(the location where you copied Moodle) into your web browser; Moodle will recognize that it hasn't been installed yet and start the process automatically.
The Moodle installer has to set a session cookie. If your browser has been configured to trigger a warning, make sure you accept that cookie.
The first screen lets you choose the language to be used during installation. This is not the locale used for Moodle, only the language for the installation.
The following screen displays the expected values for the Web address of the site (wwwroot), the Moodle directory (dirroot)and the Data directory (dataroot). You might have to modify the data directory entry if the location of your moodledata
differs.
If dataroot
cannot be located or does not have the correct permissions, an error message with details will be displayed. The same applies if dataroot
is accessible directly via the Web and hence is not secure.
In the following screenshot, you have to select which database you wish to use. On my system, only the standard MySQL driver is installed. To use other database systems such as PostgreSQL, Oracle, or MS SQL Server, a driver has to be installed first.
This interface is using the configuration details that have been previously established. This would look slightly different if you have chosen a different database driver to the native MySQL.
Once you see the following screen, you will know the Moodle configuration file config.php
has been successfully created. If the creation of the configuration file fails (usually because of incorrect permissions) the installer will display the content of the configuration file. You will have to copy, the text from the screen and paste it to config.php
in your dirroot
.
Before Moodle can proceed with the installation, you have to agree to the GPL license agreement. You can find the full license text at docs.moodle.org/en/License
.
Once you have accepted the license agreement, the Moodle installer checks to see if certain components are installed. Not all modules are compulsory see the Moodle prerequisites section in this chapter and notices on screen. The installer also verifies the key PHP settings. If any of the tests are not passed, it is important that you go back to the Software requirements section to resolve any problems and restart the installation process after the issues have been fixed. Otherwise, some features may not work or the installer will not continue, depending on the importance of the module.
Once this screen has been confirmed, the Moodle installer will create all tables in the database. This process might take a few minutes.
Once the table creation and population have been concluded, you will see the screen to set up the administrator account. The default username is admin, which should be changed for security reasons. The self-explanatory fields you have to fill in are New password, First name, Surname, Email address, City/town and Select a country. All other fields are explained in great detail in Chapter 5, User Management.
The last screen of the installation script asks you to enter some front page settings, namely, the Full site name, Short name for site and Front page description. These front page settings can be modified later (see Chapter 7, Moodle Look and Feel). Additionally, the installer allows you to turn on Self registration. Leave this disabled for now, until you have covered Chapter 5,
Once this information has been entered and the screen has been confirmed, you are ready to start using Moodle. However, it is recommended to finalize the installation and setting up the execution of the Moodle maintenance script.
Finalizing the installation
To make sure that Moodle is running without problems, go to Notifications in the Site administration menu in the Settings block.
In my installation, there are two issues a PHP setting has a value that is not recommended (I have to change this in the php.ini
file) and the so-called cron maintenance script has not run for 24 hours. We will solve that mystery after we have registered our site. Other messages might appear in the Notifications area and you should resolve them in due course.
You might also want to check out http://<yoursite>/admin/health.php, which provides a mini health center that points out any additional issues. For each identified problem, a description, its severity level, and a solution are displayed.
Moodle provides some statistics about its usage on www.moodle.org/stats. To be included in these figures, you have to register your Moodle site. Registration (below the Notification link) with moodle.org
(MOOCH) is optional and free, and you decide what information will be made public. Even if you opt out of providing any usage patterns for your site, it is still highly recommended to register, as you will get occasional notices from moodle.org
. For example advanced security alerts.
After entering the details, you will have to confirm the submission and enter a reCAPTCHA (a slightly distorted image showing text). You also have the ability to unregister your site at any time.
The settings for the registration screen are as follows:
Setting up the cron process
Moodle has to perform a number of background tasks on a regular basis. The script that performs these tasks is known as a cron script and is executed by the so-called cron process. An entire page has been dedicated to this in the Moodle documentation; you can find it at docs.moodle.org/en/Cron
. It is important that you set up the cron process. Otherwise, any timed Moodle features, such as scheduled backups, sending forum notifications, statistics processing, and so on, will not work.
The script cron.php
is located in the admin
directory and can be triggered manually through a web browser (unless your security settings have been changed). Once executed, the output from the script (http://yoursite/admin/cron.php) is shown on screen and you have to navigate back to your Moodle system manually.
Most control panels allow you to set up scheduled tasks via a cron job management tool. Bear in mind that this is not part of Moodle but a part of your hosting package. The following screenshot is from the widely-used Plesk system, which executes the script every 5 minutes:
There are a number of ways to call the cron script. wget q O /dev/null http://<yoursite>/admin/cron.php
is the most popular option in a Linux environment (see Command in the preceding screenshot). However, if this does not suit your setup, check out docs.moodle.org/en/Cron
for alternatives.
The interface shown earlier creates an entry in the crontab
, a file located in the /etc
directory that contains all system-wide cron entries. This file can also be edited manually using crontab -e
, but be careful to get the syntax right!
This concludes the installation process for Moodle in a LAMP environment. If you have come across any problems that have not been covered in these instructions, or if your setup differs from the one described, go to docs.moodle.org/en/Installing_Moodle
, where more installation details are provided and exceptions are covered in greater detail.