mirror of
https://github.com/moodle/moodle.git
synced 2025-01-20 15:08:32 +01:00
3cae82fe52
some old links alive.
383 lines
20 KiB
HTML
Executable File
383 lines
20 KiB
HTML
Executable File
<HEAD>
|
|
<TITLE>Moodle Docs: Installation</TITLE>
|
|
<LINK REL="stylesheet" HREF="../theme/standard/styles.php" TYPE="TEXT/CSS">
|
|
</HEAD>
|
|
|
|
<BODY BGCOLOR="#FFFFFF">
|
|
<H2>Installing Moodle</H2>
|
|
<P>This guide explains how to install Moodle for the first time. It goes into some detail
|
|
about some of the steps, in order to cover the wide variety of small differences between
|
|
web server setups, so this document may look long and complicated. Don't be put off by this
|
|
- I usually set Moodle up in a few minutes!</P>
|
|
<P>Take your time and work through this document carefully - it will save you time later on.</P>
|
|
<P>Sections in this document:</P>
|
|
<OL>
|
|
<LI><A HREF="#requirements">Requirements</A></LI>
|
|
<LI><A HREF="#downloading">Download</A></LI>
|
|
<LI><A HREF="#site">Site structure</A></LI>
|
|
<LI><A HREF="#data">Create a data directory</A></LI>
|
|
<LI><A HREF="#database">Create a database</A></LI>
|
|
<LI><A HREF="#webserver">Check web server settings</A></LI>
|
|
<LI><A HREF="#config">Edit config.php</A></LI>
|
|
<LI><A HREF="#admin">Go to the admin page</A></LI>
|
|
<LI><A HREF="#cron">Set up cron</A></LI>
|
|
<LI><A HREF="#course">Create a new course</A></LI>
|
|
</OL>
|
|
<H3><A NAME="requirements"></A>1. Requirements</H3>
|
|
<blockquote>
|
|
<p>Moodle is primarily developed in Linux using PHP, Apache and MySQL, and regularly
|
|
tested with PostgreSQL and in Windows XP and Mac OS X environments.</p>
|
|
<p>All you should need are:</p>
|
|
<ol>
|
|
<li>a working installation of <A HREF="http://www.php.net/">PHP</A> (version
|
|
4.1.0 or later), with the following features enabled (most PHP installations
|
|
these days will have all of these):
|
|
<ul>
|
|
<LI>JPEG and/or PNG image editing support via the <A HREF="http://www.boutell.com/gd/">GD library</A></li>
|
|
<LI>Sessions support</LI>
|
|
<LI>File uploading allowed</LI>
|
|
</UL>
|
|
</LI>
|
|
<li>a working database server: <A HREF="http://www.mysql.com/">MySQL</A> or <A HREF="http://www.postgresql.org/">PostgreSQL</A> are recommended. (MSSQL, Oracle, Interbase, Foxpro, Access, ADO, Sybase, DB2 or ODBC are also theoretically supported but will require you to manually set up the database tables).</li>
|
|
</ol>
|
|
<p>On a Windows platform, the quickest way to satisfy these requirements is
|
|
to download <A HREF="http://www.foxserv.net/">FoxServ</A>,
|
|
or <A HREF="http://www.easyphp.org/">EasyPHP</A> which will install Apache,
|
|
PHP, and MySQL for you. Make sure you enable the GD module so Moodle can process
|
|
images - you may have to edit php.ini and remove the comment (;) from this
|
|
line: 'extension=php_gd.dll'.</p>
|
|
|
|
<p>On Mac OS X I highly recommend the <a href="http://fink.sourceforge.net/">fink</a>
|
|
project as a way to download easily-maintainable packages for all of this.</p>
|
|
|
|
<p>If you're on Linux or another Unix then I'll assume you can figure all this out for yourself! ;-) </p>
|
|
|
|
</blockquote>
|
|
<P> </P>
|
|
<H3><A NAME="downloading"></A>2. Download</H3>
|
|
<blockquote>
|
|
<p>There are two ways to get Moodle, as a compressed package and via CVS. These
|
|
are explained in detail on the download page on <A HREF="http://moodle.com/">http://moodle.com/</A></p>
|
|
<p>After downloading and unpacking the archive, or checking out the files via
|
|
CVS, you will be left with a directory called "moodle", containing
|
|
a number of files and folders. </p>
|
|
<p>You can either place the whole folder in your web server documents directory,
|
|
in which case the site will be located at <B>http://yourwebserver.com/moodle</B>,
|
|
or you can copy all the contents straight into the main web server documents
|
|
directory, in which case the site will be simply <B>http://yourwebserver.com</B>.</p>
|
|
</blockquote>
|
|
<P> </P>
|
|
<H3><A NAME="site"></A>3. Site structure</H3>
|
|
<BLOCKQUOTE>
|
|
<p>Here is a quick summary of the contents of the Moodle folder, to help get
|
|
you oriented:</p>
|
|
<blockquote>
|
|
<p>config.php - the only file you need to edit to get started<br>
|
|
version.php - defines the current version of Moodle code<BR>
|
|
index.php - the front page of the site</p>
|
|
<ul>
|
|
<li>admin/ - code to administrate the whole server </li>
|
|
<li>auth/ - plugin modules to authenticate users </li>
|
|
<li>course/ - code to display and manage courses </li>
|
|
<li>doc/ - help documentation for Moodle (eg this page)</li>
|
|
<li>files/ - code to display and manage uploaded files</li>
|
|
<li>lang/ - texts in different languages, one directory per language </li>
|
|
<li>lib/ - libraries of core Moodle code </li>
|
|
<li>login/ - code to handle login and account creation </li>
|
|
<li>mod/ - all Moodle course modules</li>
|
|
<li>pix/ - generic site graphics</li>
|
|
<li>theme/ - theme packs/skins to change the look of the site.</li>
|
|
<li>user/ - code to display and manage users</li>
|
|
</ul>
|
|
<p> </p>
|
|
</blockquote>
|
|
</BLOCKQUOTE>
|
|
<H3><A NAME="data"></A>4. Create a data directory</H3>
|
|
<blockquote>
|
|
<p>Moodle will also need some space on your hard disk to store uploaded files,
|
|
such as course documents and user pictures.</p>
|
|
|
|
<p>Create a directory for this purpose somewhere. For security, it's best that
|
|
this directory is NOT accessible directly via the web. The easiest way to do this
|
|
is to simply locate it OUTSIDE the web directory, otherwise protect it
|
|
by creating a file in the data directory called .htaccess, containing this line:
|
|
<blockquote>
|
|
<PRE>deny from all</PRE>
|
|
</blockquote>
|
|
|
|
<p>To make sure that Moodle can save uploaded files in this directory, check that
|
|
the web server software (eg Apache) has permission to write
|
|
to this directory. On Unix machines, this means setting the owner of the directory
|
|
to be something like "nobody" or "apache".</p>
|
|
|
|
<p>On many shared hosting servers, you will probably need to restrict all file access
|
|
to your "group" (to prevent other webhost customers from looking at or changing your files),
|
|
but provide full read/write access to everyone else (which will allow the web server
|
|
to access your files). Speak to your server administrator if you are having
|
|
trouble setting this up securely.</p>
|
|
|
|
</blockquote>
|
|
<P> </P>
|
|
<H3><A NAME="database"></A>5. Create a database</H3>
|
|
<blockquote>
|
|
<p>You need to create an empty database (eg "moodle") in your database system
|
|
along with a special user (eg "moodleuser") that has access to that database
|
|
(and that database only). You could use the "root" user if you wanted to, but
|
|
this is not recommended for a production system: if hackers manage to discover
|
|
the password then your whole database system would be at risk, rather than
|
|
just one database.
|
|
</p>
|
|
<p>Example command lines for MySQL: </p>
|
|
<PRE>
|
|
# mysql -u root -p
|
|
> CREATE DATABASE moodle;
|
|
> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.*
|
|
TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
|
|
> quit
|
|
# mysqladmin -p reload
|
|
</PRE>
|
|
<p>Example command lines for PostgreSQL: </p>
|
|
<PRE>
|
|
# su - postgres
|
|
> psql -c "create user moodleuser createdb;" template1
|
|
> psql -c "create database moodle;" -U moodleuser template1
|
|
> psql -c "alter user moodleuser nocreatedb;" template1
|
|
</PRE>
|
|
<p>(For MySQL I highly recommend the use of <a href="http://phpmyadmin.sourceforge.net/">phpMyAdmin</a>
|
|
to manage your databases).</p>
|
|
<p>As of version 1.0.8, Moodle now supports table prefixes, and so can safely share
|
|
a database with tables from other applications.</p>
|
|
</blockquote>
|
|
<P> </P>
|
|
<H3><A NAME="webserver" id="webserver"></A>6. Check your web server settings</H3>
|
|
<blockquote>
|
|
<p>Firstly, make sure that your web server is set up to use index.php as a default
|
|
page (perhaps in addition to index.html, default.htm and so on).</p>
|
|
<p>In Apache, this is done using a DirectoryIndex parameter in your httpd.conf
|
|
file. Mine usually looks like this:</p>
|
|
<blockquote>
|
|
<pre><strong>DirectoryIndex</strong> index.php index.html index.htm </pre>
|
|
</blockquote>
|
|
<p>Just make sure index.php is in the list (and preferably towards the start
|
|
of the list, for efficiency).</p>
|
|
<p>Secondly, Moodle requires a number of PHP settings to be active for it to
|
|
work. <B>On most servers these will already be the default settings.</B>
|
|
However, some PHP servers (and some of the more recent PHP versions) may
|
|
have things set differently. These are defined in PHP's configuration
|
|
file (usually called php.ini):</p>
|
|
<blockquote>
|
|
<pre>file_uploads = 1
|
|
magic_quotes_gpc = 1
|
|
short_open_tag = 1
|
|
session.auto_start = 0
|
|
</pre>
|
|
</blockquote>
|
|
<p>If you don't have access to httpd.conf or php.ini on your server, or you
|
|
have Moodle on a server with other applications that require different
|
|
settings, then you can OVERRIDE all of the default settings.
|
|
|
|
<p>To do this, you need to create a file called <B>.htaccess</B> in Moodle's
|
|
main directory that contains definitions for these settings.
|
|
This only works on Apache servers and only when Overrides have been allowed.
|
|
<BLOCKQUOTE><PRE>
|
|
DirectoryIndex index.php index.html index.htm
|
|
php_value magic_quotes_gpc 1
|
|
php_value file_uploads 1
|
|
php_value short_open_tag 1
|
|
php_value session.auto_start 0</BLOCKQUOTE></PRE>
|
|
<P>You can also do things like define the maximum size for uploaded files:
|
|
<BLOCKQUOTE><PRE>
|
|
php_value upload_max_filesize 2M
|
|
php_value post_max_size 2M
|
|
</BLOCKQUOTE></PRE>
|
|
|
|
<p>The easiest thing to do is just copy the sample file from lib/htaccess
|
|
and edit it to suit your needs. It contains further instructions. For
|
|
example, in a Unix shell:
|
|
<blockquote>
|
|
<pre>cp lib/htaccess .htaccess</pre>
|
|
</blockquote>
|
|
|
|
</blockquote>
|
|
<p> </p>
|
|
<H3><A NAME="config"></A>7. Edit config.php</H3>
|
|
<blockquote>
|
|
<p>Now you can edit the configuration file, <strong>config.php</strong>, using a
|
|
text editor. This file is used by all other files in Moodle.</p>
|
|
<p>To start with, make a copy of config-dist.php and call it config.php. We
|
|
do this so that your config.php won't be overwritten in case you upgrade Moodle
|
|
later on. </p>
|
|
<p>Edit config.php to specify the database details that you just defined (including
|
|
a table prefix - notice this is REQUIRED for PostgreSQL), as
|
|
well as the site address, file system directory and data directory.
|
|
The config file has detailed directions.</p>
|
|
<p>For the rest of this installation document we will assume your site is at:
|
|
<u>http://example.com/moodle</u></p>
|
|
</blockquote>
|
|
<P> </P>
|
|
<H3><A NAME="admin"></A>8. Go to the admin page</H3>
|
|
<blockquote>
|
|
<p>The admin page should now be working at: <u>http://example.com/moodle/admin</u>.
|
|
If you try and access the front page of your site you'll be taken there automatically
|
|
anyway. The first time you access this admin page, you will be presented with
|
|
a GPL agreement with which you need to agree before you can continue with the setup.</p>
|
|
<P>(Moodle will also try to set some cookies in your browser. If you have
|
|
your browser set up to let you choose to accept cookies, then you <B>must</B>
|
|
accept the Moodle cookies, or Moodle won't work properly.)
|
|
<p>Now Moodle will start setting up your database and creating tables to store data.
|
|
Firstly, the main database tables are created. You should see a number of SQL statements followed by
|
|
status messages (in green or red) that look like this:</p>
|
|
<blockquote>
|
|
<p>CREATE TABLE course ( id int(10) unsigned NOT NULL auto_increment, category
|
|
int(10) unsigned NOT NULL default '0', password varchar(50) NOT NULL default
|
|
'', fullname varchar(254) NOT NULL default '', shortname varchar(15) NOT
|
|
NULL default '', summary text NOT NULL, format tinyint(4) NOT NULL default
|
|
'1', teacher varchar(100) NOT NULL default 'Teacher', startdate int(10)
|
|
unsigned NOT NULL default '0', enddate int(10) unsigned NOT NULL default
|
|
'0', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id))
|
|
TYPE=MyISAM</p>
|
|
<p><FONT COLOR="#006600">SUCCESS</FONT></p>
|
|
<p>...and so on, followed by: <FONT COLOR="#FF0000">Main databases set up
|
|
successfully</FONT>. </p>
|
|
</blockquote>
|
|
<p>If you don't see these, then there must have been some problem with the database
|
|
or the configuration settings you defined in config.php. Check that PHP isn't
|
|
in a restricted "safe mode" (commercial web hosts often have safe mode turned
|
|
on). You can check PHP variables by creating a little file containing <?
|
|
phpinfo() ?> and looking at it through a browser. Check all these and try
|
|
this page again.</p>
|
|
<p>Scroll down the very bottom of the page and press the "Continue"
|
|
link.</p>
|
|
<p>Next you will see a similar page that sets up all the tables required by
|
|
each Moodle module. As before, they should all be green.</p>
|
|
|
|
<p>Scroll down the very bottom of the page and press the "Continue"
|
|
link.</p>
|
|
|
|
<p>You should now see a form where you can define more configuration variables
|
|
for your installation, such as the default language, SMTP hosts and so on.
|
|
Don't worry too much about getting everything right just now - you can always
|
|
come back and edit these later on using the admin interface. Scroll down
|
|
to the bottom and click "Save changes".</p>
|
|
|
|
<p>If (and only if) you find yourself getting stuck on this page or the next
|
|
page, unable to continue, then your server probably has what I call the
|
|
"buggy referrer" problem. This is easy to fix: just edit
|
|
your config.php and set the variable buggy_referrer to <i>true</i>, then
|
|
try the page again.</p>
|
|
|
|
<p>The next page is a form where you can define parameters for your Moodle site and the
|
|
front page, such as the name, format, description and so on.
|
|
|
|
Fill this out (you can always go back and change these later) and then press
|
|
"Save changes".</p>
|
|
|
|
<p>Finally, you will then be asked to create a top-level administration user
|
|
for future access to the admin pages. Fill out the details with your own name,
|
|
email etc and then click "Save changes". Not all the fields are
|
|
required, but if you miss any important fields you'll be re-prompted for them.
|
|
</p>
|
|
<blockquote>
|
|
<blockquote>
|
|
<blockquote>
|
|
<blockquote>
|
|
<blockquote>
|
|
<p><strong>Make sure you remember the username and password you chose
|
|
for the administration user account, as they will be necessary to
|
|
access the administration page in future.</strong></p>
|
|
</blockquote>
|
|
</blockquote>
|
|
</blockquote>
|
|
</blockquote>
|
|
</blockquote>
|
|
<p>Once successful, you will be returned to the main admin page, which contain
|
|
a number of links arranged in a menu (these items also appear on the home
|
|
page when you are logged in as the admin user). All your further administration
|
|
of Moodle can now be done using this menu, such as:</p>
|
|
<ul>
|
|
<li>creating and deleting courses</li>
|
|
<li>creating and editing user accounts</li>
|
|
<li>administering teacher accounts</li>
|
|
<li>changing site-wide settings like themes etc</li>
|
|
</ul>
|
|
</blockquote>
|
|
<P> </P>
|
|
<H3><A NAME="cron"></A>9. Set up cron</H3>
|
|
<blockquote>
|
|
<p>Some of Moodle's modules require continual checks to perform tasks. For example,
|
|
Moodle needs to check the discussion forums so it can mail out copies of posts
|
|
to people who have subscribed.</p>
|
|
<p>The script that does all this is located in the admin directory, and is called
|
|
cron.php. However, it can not run itself, so you need to set up a mechanism
|
|
where this script is run regularly (eg every five minutes). This provides
|
|
a "heartbeat" so that the script can perform functions at periods
|
|
defined by each module.</p>
|
|
<P>Note that the machine performing the cron <B>does not need to be the same
|
|
machine that is running Moodle</B>. For example, if you have a limited web hosting
|
|
service that does not have cron, then you can might choose to run cron on another
|
|
server or on your home computer. All that matters is that the cron.php file is
|
|
called every five minutes or so.</p>
|
|
<p>First, test that the script works by running it directly from your browser:</p>
|
|
<blockquote>
|
|
<PRE>http://example.com/moodle/admin/cron.php</PRE>
|
|
</blockquote>
|
|
<p>Now, you need to set up some of way of running the script automatically and
|
|
regularly. </p>
|
|
<H4> Running the script from a command line</H4>
|
|
<p>You can call the page from the command line just as you did in the example
|
|
above. For example, you can use a Unix utility like 'wget':</p>
|
|
<blockquote>
|
|
<PRE>wget -q -O /dev/null http://example.com/moodle/admin/cron.php</PRE>
|
|
</blockquote>
|
|
<p>Note in this example that the output is thrown away (to /dev/null).</p>
|
|
<p>The same thing using lynx:</p>
|
|
<blockquote>
|
|
<pre>lynx -dump http://example.com/moodle/admin/cron.php > /dev/null</pre>
|
|
</blockquote>
|
|
<p>Alternatively you could use a standalone version of PHP, compiled to be run
|
|
on the command line. The advantage with doing this is that your web server
|
|
logs aren't filled with constant requests to cron.php. The disadvantage is
|
|
that you need to have access to a command-line version of php.</p>
|
|
<blockquote>
|
|
<PRE>/opt/bin/php /web/moodle/admin/cron.php
|
|
|
|
|
|
(Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php
|
|
|
|
</PRE>
|
|
</blockquote>
|
|
<h4>Automatically running the script every 5 minutes</h4>
|
|
<p>On Unix systems: Use <B>cron</B>. Edit your cron settings from the commandline
|
|
using "crontab -e" and add a line like:</p>
|
|
<blockquote>
|
|
<PRE>*/5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php</PRE>
|
|
</blockquote>
|
|
<p>On Windows systems: The simplest way is to use my package <A TITLE="Click to download this package (150k)" HREF="http://moodle.com/download/moodle-cron-for-windows.zip">moodle-cron-for-windows.zip</A>
|
|
which makes this whole thing very easy. You can also explore using the built-in
|
|
Windows feature for "Scheduled Tasks".</p>
|
|
</p>
|
|
</blockquote>
|
|
<H3><A NAME="course"></A>10. Create a new course</H3>
|
|
<blockquote>
|
|
<p>Now that Moodle is running properly, you can create a course. </p>
|
|
<p>Select "Create a new course" from the Admin page (or the admin
|
|
links on the home page).</p>
|
|
<p>Fill out the form, paying special attention to the course format. You don't
|
|
have to worry about the details too much at this stage, as everything can
|
|
be changed later by the teacher.</p>
|
|
<p>Press "Save changes", and you will be taken to a new form where
|
|
you can assign teachers to the course. You can only add existing user accounts
|
|
from this form - if you want to create a new teacher account then either ask
|
|
the teacher to create one for themselves (see the login page), or create one
|
|
for them using the "Add a new user" on the Admin page.</p>
|
|
<p>Once done, the course is ready to customise, and is accessible via the "Courses"
|
|
link on the home page.</p>
|
|
<p>See the "<A HREF="teacher.html">Teacher Manual</A>" for more details
|
|
on course-building.</p>
|
|
</blockquote>
|
|
<P> </P>
|
|
<P ALIGN="CENTER"><FONT SIZE="1"><A HREF="." TARGET="_top">Moodle Documentation</A></FONT></P>
|
|
<P ALIGN="CENTER"><FONT SIZE="1">Version: $Id$</FONT></P>
|
|
|
|
</BODY>
|