Installing Moodle - MoodleDocs 06.02.
2025, 15:29
Installing Moodle
Main page ▶ Installation ▶ Installing Moodle
This page explains how to install Moodle. If you are an expert and/or in a hurry try Installation
Quickstart.
If you just want to try Moodle on a standalone machine there are 'one-click' installers for
Windows (see Complete install packages for Windows) and for OSX (see Complete Install
Packages for Mac OS X) or install on OS X. These are unsuitable for production servers.
If you want to avoid installing Moodle yourself completely, consider
[Link]
Contents
1 Requirements
1.1 Hardware
1.2 Software
2 Set up your server
3 Download and copy files into place
4 Create an empty database
5 Create the (moodledata) data directory
5.1 Securing moodledata in a web directory
6 Start Moodle install
6.1 Command line installer
6.2 Web based installer
6.3 Plesk and cPanel
7 Final configuration
7.1 Settings within Moodle
7.2 Remaining tasks
7.3 Installation is complete :)
7.4 If something goes wrong...
8 Platform specific instructions
9 See also
Requirements
Moodle is primarily developed in Linux using Apache, PostgreSQL/MySQL/MariaDB and PHP
(sometimes known as the LAMP platform). Typically this is also how Moodle is run, although
there are other options (Nginx/OpenLiteSpeed) as long as the software requirements of the
release are met.
If you are installing Moodle in a Windows server, note that from php5.5 onwards, you will also
need to have the Visual C++ Redistributable for Visual Studio 2012 installed from:
[Link] Visual C++] ( x86 or x64).
The basic requirements for Moodle are as follows:
Hardware
Disk space: 200MB for the Moodle code, plus as much as you need to store content. 5GB is
probably a realistic minimum.
Processor: 1 GHz (min), 2 GHz dual core or more recommended.
Memory: 512MB (min), 1GB or more is recommended. 8GB plus is likely on a large production
server
[Link] Page 1 of 7
Installing Moodle - MoodleDocs 06.02.2025, 15:29
Consider separate servers for the web "front ends" and the database. It is much easier to
"tune"
All the above requirements will vary depending on specific hardware and software combinations
as well as the type of use and load; busy sites may well require additional resources. Further
guidance can be found under performance recommendations. Moodle scales easily by increasing
hardware.
For very large sites, you are much better starting with a small pilot and gaining some experience
and insight. A "what hardware do I need for 50,000 user?" style post in the forums is highly
unlikely to get a useful answer.
Software
See the release notes in the dev docs for software requirements.
Set up your server
Depending on the use case a Moodle server may be anything from a Desktop PC (e.g. for testing
and evaluating) to a rack-mounted or clustered solution to cloud VMs or other hosted solutions.
As mentioned above there are lots of possibilities for installing the basic server software, for
details see:
Installing AMP
IIS
Nginx
Apache
OpenLiteSpeed
It will help hugely, regardless of your deployment choices, if time is taken to understand how to
configure the different parts of your software stack (HTTP daemon, database, PHP etc.). Do not
expect the standard server configuration to be optimal for Moodle. For example, the web server
and database servers will almost certainly require tuning to get the best out of Moodle.
If you're unsure which packages to use (eg. MariaDB vs. MySQL), then have a look at what the
consensus on the internet is, but also have a look at the Performance recommendations page, as
this may also help give you an idea of exactly how much work is involved/what your workflow may
end up looking like and planning that aspect as well.
If a hosting provider is being used ensure that all Moodle requirements (such as PHP version)
are met by the hosting platform before attempting the installation. It will help to become familiar
with changing settings within the hosting provider's platform (e.g. PHP file upload maximums) as
the options and tools provided vary.
Download and copy files into place
IMPORTANT: While there are now a number of places you can get the Moodle code
(including host provided Moodle installers), you are strongly advised to only obtain Moodle
from [Link]. If you run into problems it will be a great deal easier to support you.
You have two options:
Download your required version from [Link] and unzip/unpack...
OR Pull the code from the Git repository (recommended for developers and also makes
upgrading very simple):
$ git clone -b MOODLE_405_STABLE git://[Link]/[Link]
For a fuller discussion see Git for Administrators.
Either of the above should result in a directory called moodle, containing a number of files and
folders.
[Link] Page 2 of 7
Installing Moodle - MoodleDocs 06.02.2025, 15:29
You can typically place the whole folder in your web server documents directory, in which case
the site will be located at [Link] or you can copy all the contents
straight into the main web server documents directory, in which case the site will be simply
[Link] See the documentation for your system and/or web server if you are
unsure.
Tip: If you are downloading Moodle to your local computer and then uploading it to your
hosted web site, it is usually better to upload the compressed Moodle file and then
decompress on your hosted web site. If you decompress Moodle on your local computer,
because Moodle is comprised of over 25,000 files, trying to upload over 25,000 files using an
FTP client or your host's "file manager" can sometimes miss a file and cause errors.
Secure the Moodle files: It is vital that the files are not writeable by the web server user. For
example, on Unix/Linux (as root):
chown -R root /path/to/moodle
chmod -R 0755 /path/to/moodle
(files are owned by the administrator/superuser and are only writeable by them - readable by
everyone else)
On test/dev sites you may want to make the files writeable in order to use the built-in plugin
installer. This is discouraged for live sites (at least, revert to more secure settings if you do).
This link about setting folder permissions on Linux Webservers may assist as well: The right
folder permissions for a website on a Linux server .
Create an empty database
Next create a new, empty database for your installation. You need to find and make a note of
following information for use during the final installation stage:
dbhost - the database server hostname. Probably localhost if the database and web server
are the same machine, otherwise the name of the database server
dbname - the database name. Whatever you called it, e.g. moodle
dbuser - the username for the database. Whatever you assigned, e.g. moodleuser - do not
use the root/superuser account. Create a proper account with the minimum permissions
needed.
dbpass - the password for the above user
If your site is hosted you should find a web-based administration page for databases as part of
the control panel (or ask your administrator). For everyone else or for detailed instructions, see
the page for your chosen database server:
PostgreSQL
MariaDB
MySQL
MSSQL
Oracle (not recommended)
Create the (moodledata) data directory
Moodle requires a directory to store all of its files (all your site's uploaded files, temporary data,
cache, session data etc.). The web server needs to be able to write to this directory. On larger
systems consider how much free space you are going to use when allocating this directory.
Due to the default way Moodle caches data you may have serious performance issues if you use
relatively slow storage (e.g. NFS) for this directory. Read the Performance recommendations
carefully and consider using (e.g.) redis or memcached for Caching.
IMPORTANT: This directory must NOT be accessible directly via the web. This would be a
serious security hole. Do not try to place it inside your web root or inside your Moodle program
files directory. Moodle will not install. It can go anywhere else convenient.
[Link] Page 3 of 7
Installing Moodle - MoodleDocs 06.02.2025, 15:29
Here is an example (Unix/Linux) of creating the directory and setting the permissions for anyone
on the server to write here. This is only appropriate for Moodle servers that are not shared.
Discuss this with your server administrator for better permissions that just allow the web server
user to access these files.
# mkdir /path/to/moodledata
# chmod 0777 /path/to/moodledata
Securing moodledata in a web directory
If you are using a hosted site and you have no option but to place 'moodledata' in a web
accessible directory. You may be able to secure it by creating an .htaccess file in the
'moodledata' directory. This does not work on all systems - see your host/administrator. Create a
file called .htaccess containing only the following lines:
Apache 2.2
order deny,allow
deny from all
Apache 2.4
Require all denied
Start Moodle install
It's now time to run the installer to create the database tables and configure your new site. The
recommended method is to use the command line installer. If you cannot do this for any reason
(e.g. on a Windows server) the web-based installer is still available.
Command line installer
It's best to run the command line as your system's web user. You need to know what that is - see
your system's documentation (e.g. Ubuntu/Debian is 'www-data', Centos is 'apache')
Example of using the command-line (as root - substitute 'www-data' for your web user):
# chown www-data /path/to/moodle
# cd /path/to/moodle/admin/cli
# sudo -u www-data /usr/bin/php [Link]
# chown -R root /path/to/moodle
The chowns allow the script to write a new [Link] file. More information about the options
can be found using
# php [Link] --help
You will be asked for other settings that have not been discussed on this page - if unsure just
accept the defaults. For a full discussion see Administration via command line
Web based installer
For ease of use you can install Moodle via the web. We recommend configuring your web server
so that the page is not publicly accessible until the installation is complete.
To run the web installer script, just go to your Moodle's main URL using a web browser.
The installation process will take you through a number of pages. You should be asked to confirm
the copyright, see the database tables being created, supply administrator account details and
supply the site details. The database creation can take some time - please be patient. You should
eventually end up at the Moodle front page with an invitation to create a new course.
It is very likely that you will be asked to download the new [Link] file and upload it to your
Moodle installation - just follow the on-screen instructions.
[Link] Page 4 of 7
Installing Moodle - MoodleDocs 06.02.2025, 15:29
Plesk and cPanel
To install Plesk on your Ubuntu server for managing multiple websites, including your Moodle-
based training website, you should follow these steps:
1. Connect to the server via SSH.
2. Install the software-properties-common package to manage repositories:
apt-get install software-properties-common
3. Add the PPA repository:
add-apt-repository ppa:ondrej/php
4. Install PHP 7.2:
apt -y install php7.2
5. Install necessary PHP modules (example):
apt install -y php7.2-
{bcmath,bz2,cli,common,curl,dev,fpm,gd,gmp,imagick,imap,intl,json,mbstring,mysq
l,opcache,soap,ssh2,xml,xmlrpc,zip}
6. Register the PHP handler in Plesk:
plesk bin php_handler --add -displayname php72-fpm-custom -path /usr/sbin/php-
fpm7.2 -phpini /etc/php/7.2/fpm/[Link] -type fpm -id php72-fpm-custom -clipath
/usr/bin/php -service php7.2-fpm -poold /etc/php/7.2/fpm/pool.d
Plesk will handle the installation of Apache, MariaDB/MySQL, PHP, and other necessary
components. You can then proceed with the Moodle installation as per the Moodle
documentation.
Final configuration
Settings within Moodle
There are a number of options within the Moodle Site Administration screens (accessible from
the 'Site administration' tab in the 'Administration' block (Classic theme) or the Site
administration button in the navigation bar (Boost). Here are a few of the more important ones
that you will probably want to check:
Administration > Site administration > Server > Email > Outgoing mail configuration: Set your
smtp server and authentication if required (so your Moodle site can send emails). You can
also set a norepy email on this page.
Administration > Site administration > Server > Server > Support contact. Set your support
contact email.
Administration > Site administration > Server > System paths: Set the paths to du, dot and
aspell binaries.
Administration > Site administration > Server > HTTP: If you are behind a firewall you may
need to set your proxy credentials in the 'Web proxy' section.
Administration > Site administration > Location > Update timezones: Run this to make sure
your timezone information is up to date. (more info Location)
Set server's local timezone inside [Link] (should probably be inside
/etc/[Link] or /etc/php.d/[Link], depending on the underlying OS):
[Link] Page 5 of 7
Installing Moodle - MoodleDocs 06.02.2025, 15:29
[Date]
; Defines the default timezone used by the date functions
[Link] = "YOUR LOCAL TIMEZONE"
Remaining tasks
Configure Cron: Moodle's background tasks (e.g. sending out forum emails and performing
course backups) are performed by a script which you can set to execute at specific times of
the day. This is known as a cron script. Please refer to the Cron instructions.
Set up backups: See Site backup and Automated course backup.
Secure your Moodle site: Read the Security recommendations. Also have a look at the
Security Checks Section under Site Administration -> Reports -> Security Checks.
Increasing the maximum upload size See Installation FAQ Maximum upload file size - how
to change it?
Check mail works : From Site administration > Server > Test outgoing mail configuration,
use the link to send yourself a test email. Don't be tempted to skip this step.
Installation is complete :)
Create a new course: You can now access Moodle through your web browser (using the
same URL as you set during the install process), log in as your admin user and create a new
course. See create a new course.
Now that your site is running, when you've got a chance, consider seeing how you can
maximize its performance by having a look at Performance recommendations.
If something goes wrong...
Here are some things you should try...
Check the Installation FAQ
Check your file permissions carefully. Can your web server read (but not write) the Moodle
program files? Can your web server read and write your Moodle data directory? If you don't
fully understand how file ownership and permissions work on your operating system it would
be time very well spent to find out.
Check your database permissions. Have you set up your database user with the correct
rights and permissions for your configuration (especially if the web server and database
server are different machines)?
Create your Configuration file ([Link]) by hand. Copy [Link] (in the root of the
Moodle program directory) to [Link], edit it and set your database/site options there.
Installation will continue from the right place.
Once you have a [Link] (see previous tip) you can edit it to turn on debugging (in
section 8). This may give you extra information to help track down a problem. If you have
access, check your web server error log(s).
Re-check your [Link] / .htaccess settings. Are they appropriate (e.g. memory_limit), did you
edit the correct [Link] / .htaccess file and (if required) did you restart the web server after
making changes?
Did you include any non-core (optional) plugins, themes or other code before starting the
installation script? If so, remove it and try again (it may be broken or incompatible).
Explain your problem in the Installation problems forum . PLEASE list your software
versions; explain what you did, what happened and what error messages you saw (if any);
explain what you tried. There is no such thing as 'nothing', even a blank page is something!
Platform specific instructions
Note: Much of this information is provided by the community. It may not have been checked and
may be out of date. Please read in conjunction with the above installation instructions.
Windows installation
[Link] Page 6 of 7
Installing Moodle - MoodleDocs 06.02.2025, 15:29
Installing Moodle on [Link]
Unix or Linux Installation
Step-by-step Installation Guide for Ubuntu
Mac Installation
Amazon EC2 Cloud Services Installation
See also
Slideshare presentation by Gareth Barnard on installing a local installation of Moodle and
accompanying help guides
New Video Tutorial- How to Install Moodle on Shared Hosting via cPanel (Not Fantastico)
Another one for cPanel using videos
Video Tutorial - Install Moodle on a Virtual Box from scratch
Retrieved from "[Link]
title=Installing_Moodle&oldid=150787"
This page was last edited on 1 January 2025, at 12:10.
Content is available under GNU General Public License unless
otherwise noted.
[Link] Page 7 of 7