David Stilson


  Linux System Administration




Installing Moodle


 Follow these steps to install Moodle on a Debian-based Linux server:

 NOTE: Many Moodle installations guides suggest that you install a LAMP stack with one command. I don't like this method as there  are many items that are not installed, esp. PHP add-ons.

 NOTE:The following commands are done at the command line. You will need the root password.

- Update the Ubuntu repositories:

     sudo apt-get update


- Update the Ubuntu packages:

      sudo apt-get upgrade


- Install secure shell:

     sudo apt-get install openssh -server


- Install Apache2:

     sudo apt-get install apache2 apache2-utils apache2-mpm-prefork


- Test Apache:

     sudo /etc/init.d/apache2 status

     * apache2 is running


- Install MySQL; NOTE: during the installation you will be promted to create a root user name and password:

     sudo apt-get install mysql-server mysql-client

     sudo /etc/init.d/mysql start


- Install phpmyadmin:

     sudo apt-get install phpmyadmin


- Install PHP. Be aware that Moodle needs more PHP add-ons than are installed with standard installation:

     sudo apt-get install PHP5 libapache2-mod-php5 php5-curl php5-gd php5-common php5-cli php5-mysql php5-mcrypt        php5-xmlrpc php5-intl


      sudo php5enmod mcrypt


- To test what has been installed so far:

     dpkg --list | grep -e apache -e mysql -e php


- Restart Apache

     sudo service apache2 restart


- Use git to install/update the Moodle Core application

     sudo apt-get install git-core


- Setup your local repository and download Moodle, use /opt for this installation

     sudo git clone git://git.moodle.org/moodle.git

     cd moodle

     sudo git branch -a

     sudo git branch --track MOODLE_27_STABLE origin/MOODLE_27_STABLE

     sudo git checkout MOODLE_27_STABLE


- Copy local repository to /var/www/html/

     sudo cp -R /opt/moodle /var/www/html

     sudo mkdir /var/moodledata

     sudo chown -R www-data /var/moodledata

     sudo chmod -R 777 /var/moodledata

     sudo chmod -R 0755 /var/www/html/moodle


- create the Moodle MySQL User with the correct permissions. Use password created during MySQL install.

     mysql -u root -p

     mysql>CREATE DATABASE moodle DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;


- Use your username and password of your choosing:

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

    mysql>quit;


- If you are not comfortable using terminal to create the config.php file that needs to be created when going through the installer, you should temporarily make the webroot writable by doing the following:

     sudo chmod -R 777 /var/www/moodle


- After you have run the installer and you have moodle setup, you NEED to revert permissions so that it is no longer writable using the below command..

     sudo chmod -R 755 /var/www/moodle


- Open your browser and go to http://IP.ADDRESS.OF.SERVER/moodle
     Follow the prompts selecting:
     Database Type: Choose: mysqli
     Database: moodle
     Password: the DB password for the user you created>
     Tables Prefix: mdl_

- If you made the webroot writable, revert permissions

     sudo chmod -R 0755 /var/www/moodle


- After installing Moodle you should set the system paths.
     Navigate to Site Administration > Server > System Paths
     Path to Du: /usr/bin/du
     Path to Apsell: /usr/bin/aspell
     Path to dot: /usr/bin/dot
     Save Changes

- Setup the cron job
     sudo crontab -u www-data -e
     Add the following line to run the cron job every 15 minutes.
     */15 * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null

- The default Maximum upload file size is 2MB. This will need to be increased.
     Check current Maximum uploaded file size setting: site administration>security>site policies
     sudo gedit /etc/init.d/apache2/php.ini
     post_max_size 100M
     upload_max_filesize 100M
     max_execution_time 600
     sudo /etc/init.d/apache2 force-reload
     Check/change Maximum uploaded file size setting: site administration>security>site policies. It should now be set for 100MB