Moodle on linux

Firstly, don’t panic!

This guide explains how to install Moodle for the first time. There are links to other pages that go into more detail and try to cover the majority of possible web server setups.

Secondly, you may want to consider reviewing Finding and Selecting A Web Host to consider whether you really want to install Moodle yourself. If you decide to move forward with an installation, please read all the installation documentation carefully. Thirdly, if you still have a problem for which you can’t find the answer, please see the Using Moodle Installation problems forum where there are many people who can help you.

Requirements

Moodle is primarily developed in Linux using Apache, MySQL and PHP (also sometimes known as the LAMP platform).

The requirements for Moodle are as follows:

Hardware

  • Disk space: 160MB free (min). You will require more free space to store your teaching materials.
  • Memory: 256MB (min), 1GB (recommended). The general rule of thumb is that Moodle can support 50 concurrent users for every 1GB of RAM, but this will vary depending on your specific hardware and software combination.
    • This includes hosting limits of PHP or MySQL on a hosting service.
    • The capacity can limit the number of users your Moodle site can handle. See User site capacities

Software

  • Web server software. Most sites use Apache as the web server software. Moodle should work fine under any web server that supports PHP.
  • PHP scripting language. (Please note that there have been issues installing Moodle with PHP-Accelerator). There are currently two versions (or branches) of PHP available: PHP4 and PHP5. See the PHP Moodle version requirements here PHP settings by Moodle version.

If you want to run Moodle on your own computer, please see Installing Apache, MySQL and PHP for step-by-step instructions for installation on most popular platforms.

Installing moodle from .tgz(.tar.gz) or .zip file

More detailed instructions coming soon

You will probably want this if you don’t like the settings of Debian moodle package.

Step 1: Install required packages

Install these packages (if you’ve not already done so). See Installing Apache, MySQL and PHP or refer to the respective user manuals. Using apt-get, aptitude or synaptic you can install these very easily.

  • Web Server (Apache highly recommended)
  • Database Server (MySQL or PostgreSQL recommended)
  • PHP, PHP-MySQL mod (or mod for your database)

These packages are optional:

  • GD library

LAMP in Debian Etch

Setting up a LAMP in Debian is very easy. Once you get used to Debian administration including installation and configuration are much simpler compared to other linux distros. The following describes how to install apache, php and mysql on the Debian testing distribution called etch. Etch is expected to be released in December 2006.

For installation of the necessary packages the easiest option to use apt-get.

Use the following command to install apache2, php5 and mysql

apt-get install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 php5-gd

php5-gd is optional

The mentioned packages are installed along with the dependencies depending on what was already installed on your Debian system.

Now you may fire up a browser and type localhost to check whether the apache2 default page is shown,

You can edit the apache configuration files using the text editor gedit by

gedit /etc/apache2/apache2.conf

Now we must make a slight change in the php5 configuration file. Open it using

gedit /etc/php5/apache2/php.ini

add the entries

extension=mysql.so
extension=gd.so

Sometimes these entries are provided as example lines being commented out . You can remove the commenting to activate the entries.
To test the php installation, you can create a text file named phpinfo.php with the contents <?phpinfo()?> and save it at /var/www. Restart apache with the command below. Now access this file through the browser localhost/phpinfo to check the installation of php. Mysql installation is already there. Give it a root password using

mysqladmin -u root password "yourpassword"

You can restart apache 2 by

/etc/init.d/apache2 restart

You can restart mysql by

/etc/init.d/mysql restart

Step 2: Download moodle

Download moodle from http://download.moodle.org/?lang=en.

Step 3: Unpack file

  • For zip file, use unzip <your_file>. For tgz(tar.gz), use tar -zxvf <your-file>. You can also use any of the GUI front-ends such as file-roller or ark. You will get a folder moodle (or moodle-1.5.2 or something similar).
  • Now, suppose you want to install moodle at /var/www/moodle (This means moodle will be accessible at http://localhost/moodle). mv moodle /var/www/ (Most probably you will need to be root to do this)

Step 4: Start web and database servers

  • Login as root (if you have not already done so): su.
  • Start your web server. For Apache2, /etc/init.d/apache2 start.
  • Start your database server. For MySQL, /etc/init.d/mysql start

Step 5: Finally install

Installing Moodle from CVS

To get the most stable current version of Moodle, you will want to install it’s scripts directly from the CVS, the versioning system used in the development of Moodle. Using the CVS also allows you to regularly update Moodle with the most recent bug fixes and features.

For these instructions, you can install Moodle with only the minimum of Debian features installed, keeping all the resources available for the server if you wish.

Install php, MySQL and other needed components

Logged in as the root user (or use the Linux “su” command to get root privileges) download and install other required software for Moodle (about 41 MB)

apt-get install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 php5-gd php5-curl php5-xmlrpc cvs

If you use additional authentication methods, you may need to install other php libraries, such as php5-imap if you use IMAP to authenticate your users.

Setup MySQL Database

Set a secure root password for the database

mysqladmin -u root password "mySecurePassword"

Note that on a secure production server, you will want to create a different user than root to access the database.

Now log in

mysql -u root -p

Enter your password

Create the Moodle database

mysql> CREATE DATABASE moodle;
# mysql -u root -p
  > CREATE DATABASE moodle DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
  > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.*
          TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
  > quit
  # mysqladmin -p reload

Get Moodle from CVS

Go to the directory where Moodle will be installed.

cd /var/www

Get the latest version of Moodle 1.9 (check for the most recent released version or the version you are most comfortable with. It may be earlier or later than 1.9 stable. Use the European Union CVS server (you can replace eu with uk, es, or us in this step if you wish)

cvs -z3 -d:pserver:anonymous@eu.cvs.moodle.org:/cvsroot/moodle co -r MOODLE_19_STABLE moodle

Create a data directory and set Moodle directory permissions

Create a directory for user and course files (you should still be in the /var/www directory)

mkdir moodledata

Set permissions so that Apache can access the files

chown -R www-data:www-data moodle
chown -R www-data:www-data moodledata

On a production server, you may want to tighten up privileges further.

Change Apache to use Moodle as the web site

Note that the server comes with Apache running and looking at the /var/www directory. But there is nothing in that folder, so one just gets a redirect. Edit as follows to have it point at Moodle instead:

nano /etc/apache2/sites-available/default

On about line 4, change DocumentRoot “/var/www/” to

DocumentRoot "/var/www/moodle/"

On about line 10, change <Directory “/var/www”> to

<Directory "/var/www/moodle">

Around line 17, comment out the line for the default page:

# RedirectMatch ^/$ /apache2-default/

You can change other values like ServerAdmin if appropriate. For all changes, you should restart Apache for the new settings to take effect.

/etc/init.d/apache2 restart

Setup Moodle

If you are only going to test Moodle on your internal network, just enter the local IP address as the web address. You can find the local IP address under DHCP by typing

ifconfig eth0

If you have a web address that points to your server, use that instead.

From a browser on another machine, enter

http:// ----- your web address -----
  • For the database user, enter root
  • For Password, enter the password for the database that you created earlier

Continue through the dialogs and select Unattended operation and set up the Moodle server.

Install cron

Moodle needs a periodic call to do maintenance work like sending out emails, cleaning up the database, updating feeds, etc. To run the cron every 10 minutes, do the following

Rather than learning vi, use the nano editor

export EDITOR=nano

Edit the cron file

crontab -e

Add this line and save.

*/10 * * * * wget -q -O /dev/null http://localhost/admin/cron.php

Use CNTL-X to save

Other recommended settings

Next, make three changes to php.ini

nano /etc/php5/apache2/php.ini

This will allocated more memory and allow files to be uploaded up to 80MB. This should be enough for most multi-media files. Hard drive space is cheap and the default is only 2MB. It is recommended that you change the settings to the following values:

memory_limit = 40M
post_max_size = 80M
upload_max_filesize = 80M

Updating from CVS

To update with the most recent fixes to Moodle, issue the following commands

cd /var/www/moodle
cvs -q update

Tags: ,

5 Responses to "Moodle on linux"

  • Leo Ramirez says:
  • VirusRUS says:
  • marryjesse says:
Leave a Comment

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word