Installation quick guide: Difference between revisions

From MoodleDocs
No edit summary
No edit summary
Line 4: Line 4:
==Basic Requirements==
==Basic Requirements==
* You will need a working:
* You will need a working:
** web server (such as [[Apache]], [[Nginx]], [[Internet Information Services|IIS]]);
** web server (such as [[Apache]], [[Nginx]], Litespeed. It also runs on [[Internet Information Services|IIS]] but this quick guide handles Unix/Linux installation only);
** database server (for example [[PostgreSQL]], [[MySQL]], or [[MariaDB]]); and
** database server (for example [[PostgreSQL]], [[MySQL]], [[MariaDB]], Aurora MySQL or Microsoft SQL Server)
** to have [[PHP]] installed and configured.
** [[PHP]] installed.


See the [{{Release notes}} release notes] in the dev docs for details of the supported versions.
See the [{{Release notes}} release notes] in the dev docs for details of the supported versions.
Line 16: Line 16:


==Getting Moodle==
==Getting Moodle==
You have two basic options:
You have two options:
* Download your required version from as a zip file from https://download.moodle.org/ ... OR
* Download your required version from as a zip file from https://download.moodle.org/ ... OR
* Pull the code from the Git repository (recommended for developers and also makes upgrading very simple):
* Pull the code from the Git repository (recommended for developers and also makes upgrading very simple):
Line 55: Line 55:


==Configure Moodle==
==Configure Moodle==
* In the Moodle code directory, find the file ''config-dist.php'' and copy it to a new file called ''config.php'' (but read the next step, 'Install Moodle', first).
* Find the file ''config-dist.php'' in the Moodle base directory, in the example /var/www/html/moodle, and copy it to a new file called ''config.php'' (if you don't plan Moodle to create it for you - see the next section Run the install script).
* Edit config.php with your favourite editor and change the appropriate settings to point to your site, directories and database. {{Note| the Moodle install script will create config.php for you if it does not exist, but make sure you (re-)set permissions appropriately afterwards.}}
* Edit config.php with your favourite editor and change the appropriate settings to point to your site, directories and database.  
* From Moodle 5.1 onwards, the ''config.php'' file and other sensitive files are stored outside the ''public'' directory. Ensure your web server is configured to serve only from the ''public'' directory. For configuration details, see the Upgrading [[Upgrading#Code_directories_restructure|Directory restructure]] section.
* From Moodle 5.1 onwards, the ''config.php'' file and other sensitive files are stored in its base directory which is above the public/ directory which is the web root. Ensure your web server is configured to serve only from this public/ directory. {{Note| There is also a config.php in public/. Don't confuse it with the active config.php in the base directory (a level higher). For details, see the [[Upgrading#Code directories restructure]] section.


==Run the install script==
==Run the install script==
* Go to the URL for your moodle site in a browser (installation will complete automatically) or run the command line version at (requires cli version of PHP):
===In the web GUI===
* Go to the URL for your moodle site in a browser (installation will complete automatically).
===In the CLI===
<pre>
<pre>
/usr/bin/php /path/to/moodle/admin/cli/install.php
/usr/bin/php /path/to/moodle/admin/cli/install.php --help
</pre>
</pre>
The CLI creates the config.php for you and will not run if you created one in the previous step.
{{Note|
* After completing the install, make sure your file permissions are ok for the Moodle program files (not writeable by web server) and the Moodle data files (writeable by web server).
* THE Moodle install script, GUI or CLI, will create config.php for you, if it does not exist and the server has write permissions in the Moodle base directory.
==Set up cron==
* After completing the install, make sure your file permissions are ok for the Moodle program files (not writeable by web server) and the Moodle data files (writeable by web server).}}
==Post installation set up==
===Set up cron===
You will need a cron job to run periodically. It is recommended that ''the cron is run every minute'', as required for asynchronous activity deletion when using the [[recycle bin]]. A typical Unix cron entry will be as follows:
You will need a cron job to run periodically. It is recommended that ''the cron is run every minute'', as required for asynchronous activity deletion when using the [[recycle bin]]. A typical Unix cron entry will be as follows:
<pre>
<pre>
Line 74: Line 78:


See [[Cron]] for details.
See [[Cron]] for details.
==Congratulations!==
===Outgoing mail configuration===
You are now ready to use your Moodle site.
For proper use of Moodle it needs to communicate with the users via e-mail. Check with > Admin > Test e-mail.


If you run into problems, check the [[Installation FAQ]] and visit the [http://moodle.org/mod/forum/view.php?id=28 Installation help forum].
You are now ready to use your Moodle site. If you run into problems, check the [[Installation FAQ]] and visit the [http://moodle.org/mod/forum/view.php?id=28 Installation help forum].
==See also==
==See also==



Revision as of 11:01, 15 November 2025

This page is intended for administrators experienced with installing web server applications and in a hurry to get up and running. Otherwise, please see Installing Moodle.

Basic Requirements

  • You will need a working:
    • web server (such as Apache, Nginx, Litespeed. It also runs on IIS but this quick guide handles Unix/Linux installation only);
    • database server (for example PostgreSQL, MySQL, MariaDB, Aurora MySQL or Microsoft SQL Server)
    • PHP installed.

See the release notes in the dev docs for details of the supported versions.

In addition to the above, you will need to:

  • install some PHP#PHP Extensions and libraries -- Moodle checks for these early in the installation process, and you can fix the problem and restart the install script if any are missing.
  • optionally configure the Moodle Router; and
  • ensure that you have a working Mail Transport Agent, such as Exim, or Sendmail; or have access to an SMTP mail server.

Getting Moodle

You have two options:

  • Download your required version from as a zip file from https://download.moodle.org/ ... OR
  • Pull the code from the Git repository (recommended for developers and also makes upgrading very simple):

Download Moodle code as a zip

  • If you downloaded the zip or tgz file earlier, then unzip / untar / move / copy the Moodle code (obtained above) so that it will be served by your web server (e.g. on Debian-based Linux, move to /var/www/html/moodle)
  • Check the permissions and make sure that the web server does not have permissions to write to any of the files in the Moodle code directories (a very common root cause of sites being hacked).
  • Configure your web server to serve the Moodle site from its public/ directory, i.e. if your Moodle source is in /var/www/html/moodle, the web root must be /var/www/html/moodle/public.

Pull the code from the Git repository

git clone -b MOODLE_501_STABLE git://git.moodle.org/moodle.git 

...this fetches a complete copy of the Moodle repository and then switches to the 5.2 Stable branch.

See Git for Administrators for details on using Git to install Moodle code.

Note: Only download Moodle from one of the moodle.org sources. Other versions (e.g. control-panel-based installers, Linux distribution repositories, and other "one-click" installers) cannot be guaranteed to work properly, be upgradable or be supportable.

Create a database

  • Using your chosen database server, create a new empty database. The default encoding must be UTF8. For example, using MySQL:
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • Create a user/password combination with appropriate permissions for the database. For example (MySQL again):
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'yourpassword';
  • For MySQL, the IDENTIFIED BY password with GRANT statement has been deprecated since MySQL version 5.7.6. Hence, the above step to add a user/password with the minimum needed permissions is now three steps:
mysql> CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'yourpassword';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO 'moodleuser'@'localhost';

Notes: It is important to GRANT ON moodle.* as the database name, including the '.*' and not just the bare database name. Save this password you use for the Moodle user, since you will need it later in the installation.

Create data directory

  • Create an empty directory to hold Moodle files. It must not be in the area served by the web server and must have permissions so that the web server user can write to it. Other than that, it can be located anywhere. Typically, either make it owned by the web server user or give the web server write permissions to it. If it is on a shared/NFS drive, then read Caching - Moodle caches to this disk area by default, and a slow share will mean terrible performance.

Configure Moodle

  • Find the file config-dist.php in the Moodle base directory, in the example /var/www/html/moodle, and copy it to a new file called config.php (if you don't plan Moodle to create it for you - see the next section Run the install script).
  • Edit config.php with your favourite editor and change the appropriate settings to point to your site, directories and database.
  • From Moodle 5.1 onwards, the config.php file and other sensitive files are stored in its base directory which is above the public/ directory which is the web root. Ensure your web server is configured to serve only from this public/ directory. {{Note| There is also a config.php in public/. Don't confuse it with the active config.php in the base directory (a level higher). For details, see the Upgrading#Code directories restructure section.

Run the install script

In the web GUI

  • Go to the URL for your moodle site in a browser (installation will complete automatically).

In the CLI

/usr/bin/php /path/to/moodle/admin/cli/install.php --help
Note:
  • THE Moodle install script, GUI or CLI, will create config.php for you, if it does not exist and the server has write permissions in the Moodle base directory.
  • After completing the install, make sure your file permissions are ok for the Moodle program files (not writeable by web server) and the Moodle data files (writeable by web server).

Post installation set up

Set up cron

You will need a cron job to run periodically. It is recommended that the cron is run every minute, as required for asynchronous activity deletion when using the recycle bin. A typical Unix cron entry will be as follows:

* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null

Your site will not work properly unless cron is running regularly. It is very important you do not skip this step.

See Cron for details.

Outgoing mail configuration

For proper use of Moodle it needs to communicate with the users via e-mail. Check with > Admin > Test e-mail.

You are now ready to use your Moodle site. If you run into problems, check the Installation FAQ and visit the Installation help forum.

See also