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