I am trying to create multiple Moodle colleges using the same code base. This needs to be scalable because I do not know the number of colleges that I will have in total (4<X>12). The database information needs to be kept separate either by using separate databases or by using separate table prefixes. Ideally I would like to use whichever has a smaller load on the server. The administrative controls need to be separate - or appear to be separate (meaning each college will have their own admin personnel who should only be able to access their own college).
The reason for this is to be able to update one code base and have all colleges updated simultaneously. This will be implemented on an IIS server but currently I am working locally using WAMP.
I have been using this tutorial:
I have saved over my standard Moodle config with the code below (as the tutorial states). I am able to install Moodle databases with this config in place and everything seems to work fine.
My problem is - How do I get another Moodle going? Where does the next Moodle directory go? How do I install it? I'm just not getting the next step. If someone could just send me a little extra information on this I would really apreciate it.
My directory structure:
ServerRootFolder > MoodleFolder > config.php + other standard moodle folders
<?PHP // $Id: config-dist.php,v 1.54 2004/05/03 14:57:11 moodler Exp $
/// EDUFORGE MOODLE LMS SETUP --- YOUR ATTENTION PLEASE!!!!
///
/// This config file supports many moodle instances from one directory
/// and one config file.
///
/// We'll get the virtualhost prefix (foo in foo.lms.eduforge.org) and use that
/// to define:
/// - DB table prefix
/// - VAR directory: /home/lms/var/$prefix/
/// - Optional config override file: you can override any config value by creating
/// a config_$prefix.php file. Be cautious, however!
// Obtain and sanitize prefix
$eduforge_prefix = $_SERVER['HTTP_HOST'];
if (isset($_ENV['HTTP_HOST'])){ // this is to support cronjobs on a per-host basis
$eduforge_prefix = $_ENV['HTTP_HOST'];
}
$eduforge_prefix = explode('.', $eduforge_prefix);
$eduforge_prefix = $eduforge_prefix[0];
$eduforge_prefix = preg_replace("/\W/", "", $eduforge_prefix);
// if there wasn't a prefix redirect to eduforge
if($eduforge_prefix == 'lms' || $eduforge_prefix=='') { //
header("Location: http://eduforge.org/");
exit;
}
///////////////////////////////////////////////////////////////////////////
// //
// Moodle configuration file //
// //
// This file should be renamed "config.php" in the top-level directory //
// //
///////////////////////////////////////////////////////////////////////////
// //
// NOTICE OF COPYRIGHT //
// //
// Moodle - Modular Object-Oriented Dynamic Learning Environment //
// http://moodle.org //
// //
// Copyright (C) 1999-2004 Martin Dougiamas http://dougiamas.com //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details: //
// //
// http://www.gnu.org/copyleft/gpl.html //
// //
///////////////////////////////////////////////////////////////////////////
unset($CFG); // Ignore this line
//=========================================================================
// 1. DATABASE SETUP
//=========================================================================
// First, you need to configure the database where all Moodle data //
// will be stored. This database must already have been created //
// and a username/password created to access it. //
// //
// mysql - the prefix is optional, but useful when installing //
// into databases that already contain tables. //
//
// postgres7 - the prefix is REQUIRED, regardless of whether the //
// database already contains tables. //
// //
// A special case exists when using PostgreSQL databases via sockets. //
// Define dbhost as follows, leaving dbname, dbuser, dbpass BLANK!: //
// $CFG->dbhost = " user='muser' password='mpass' dbname='mdata'"; //
//
$CFG->dbtype = 'mysql'; // mysql or postgres7 (for now)
$CFG->dbhost = 'localhost'; // eg localhost or db.isp.com
$CFG->dbname = 'moodletest'; // database name, eg moodle
$CFG->dbuser = 'XXXX'; // your database username
$CFG->dbpass = 'XXXX'; // your database password
$CFG->prefix = $eduforge_prefix . '_'; // Prefix to use for all table names
$CFG->dbpersist = true; // Should database connections be reused?
// "false" is the most stable setting
// "true" can improve performance sometimes
//=========================================================================
// 2. WEB SITE LOCATION
//=========================================================================
// Now you need to tell Moodle where it is located. Specify the full
// web address to where moodle has been installed. If your web site
// is accessible via multiple URLs then choose the most natural one
// that your students would use. Do not include a trailing slash
// Origiona line -> $CFG->wwwroot = 'http://'.$eduforge_prefix.'.lms.eduforge.org';
$CFG->wwwroot = 'http://'.$eduforge_prefix.'/ITU/moodleone';
//=========================================================================
// 3. SERVER FILES LOCATION
//=========================================================================
// Next, specify the full OS directory path to this same location
// Make sure the upper/lower case is correct. Some examples:
//
// $CFG->dirroot = 'c:\FoxServ\www\moodle'; // Windows
// $CFG->dirroot = '/var/www/html/moodle'; // Redhat Linux
// $CFG->dirroot = '/home/example/www/moodle'; // Cpanel host
$CFG->dirroot = 'C:\wamp\www\ITU\moodleone';
//=========================================================================
// 4. DATA FILES LOCATION
//=========================================================================
// Now you need a place where Moodle can save uploaded files. This
// directory should be readable AND WRITEABLE by the web server user
// (usually 'nobody' or 'apache'), but it should not be accessible
// directly via the web.
//
// - On hosting systems you might need to make sure that your "group" has
// no permissions at all, but that "others" have full permissions.
//
// - On Windows systems you might specify something like 'c:\moodledata'
$CFG->dataroot = 'C:\wamp\www\ITU\moodledata'.$eduforge_prefix;
//=========================================================================
// 5. DATA FILES PERMISSIONS
//=========================================================================
// The following parameter sets the permissions of new directories
// created by Moodle within the data directory. The format is in
// octal format (as used by the Unix utility chmod, for example).
// The default is usually OK, but you may want to change it to 0750
// if you are concerned about world-access to the files (you will need
// to make sure the web server process (eg Apache) can access the files.
// NOTE: the prefixed 0 is important, and don't use quotes.
$CFG->directorypermissions = 0777;
//=========================================================================
// 6. DIRECTORY LOCATION (most people can just ignore this setting)
//=========================================================================
// A very few webhosts use /admin as a special URL for you to access a
// control panel or something. Unfortunately this conflicts with the
// standard location for the Moodle admin pages. You can fix this by
// renaming the admin directory in your installation, and putting that
// new name here. eg "moodleadmin". This will fix admin links in Moodle.
$CFG->admin = 'admin';
//=========================================================================
// 7. OTHER MISCELLANEOUS SETTINGS (ignore these for new installations)
//=========================================================================
//
// Prevent users from updating their profile images
// $CFG->disableuserimages = true;
//
// Prevent scheduled backups from operating (and hide the GUI for them)
// Useful for webhost operators who have alternate methods of backups
// $CFG->disablescheduledbackups = true;
//
// Restrict certain usernames from doing things that may mess up a site
// This is especially useful for demonstration teacher accounts
// $CFG->restrictusers = 'teacher,fred,jim';
//
// Turning this on will make Moodle filter more than usual, including
// forum subjects, activity names and so on (in ADDITION to the normal
// texts like forum postings, journals etc). This is mostly only useful
// when using the multilang filter. This feature may not be complete.
// $CFG->filterall = true;
//
// Setting this to true will enable admins to edit any post at any time
// $CFG->admineditalways = true;
//
// Setting this to true will force a non-guest login to see the user pages
// eg the teachers linked from course descriptions or site news
// $CFG->forceloginforprofiles
//
// This setting will put Moodle in Unicode mode. It's very new and
// most likely doesn't work yet. THIS IS FOR DEVELOPERS ONLY, IT IS
// NOT RECOMMENDED FOR PRODUCTION SITES
// $CFG->unicode = true;
//=========================================================================
// ALL DONE! To continue installation, visit your main page with a browser
//=========================================================================
// Allow file overrides for eduforge
if (file_exists("$CFG->dirroot/config_" . $eduforge_prefix . ".php")) { // Do not edit
include_once("$CFG->dirroot/config_" . $eduforge_prefix . ".php");
}
if (file_exists("$CFG->dirroot/lib/setup.php")) { // Do not edit
include_once("$CFG->dirroot/lib/setup.php");
} else {
if ($CFG->dirroot == dirname(__FILE__)) {
echo "<p>Could not find this file: $CFG->dirroot/lib/setup.php</p>";
echo "<p>Are you sure all your files have been uploaded?</p>";
} else {
echo "<p>Error detected in config.php</p>";
echo "<p>Error in: \$CFG->dirroot = '$CFG->dirroot';</p>";
echo "<p>Try this: \$CFG->dirroot = '".dirname(__FILE__)."';</p>";
}
die;
}
// MAKE SURE WHEN YOU EDIT THIS FILE THAT THERE ARE NO SPACES, BLANK LINES,
// RETURNS, OR ANYTHING ELSE AFTER THE TWO CHARACTERS ON THE NEXT LINE.
?>
/// EDUFORGE MOODLE LMS SETUP --- YOUR ATTENTION PLEASE!!!!
///
/// This config file supports many moodle instances from one directory
/// and one config file.
///
/// We'll get the virtualhost prefix (foo in foo.lms.eduforge.org) and use that
/// to define:
/// - DB table prefix
/// - VAR directory: /home/lms/var/$prefix/
/// - Optional config override file: you can override any config value by creating
/// a config_$prefix.php file. Be cautious, however!
// Obtain and sanitize prefix
$eduforge_prefix = $_SERVER['HTTP_HOST'];
if (isset($_ENV['HTTP_HOST'])){ // this is to support cronjobs on a per-host basis
$eduforge_prefix = $_ENV['HTTP_HOST'];
}
$eduforge_prefix = explode('.', $eduforge_prefix);
$eduforge_prefix = $eduforge_prefix[0];
$eduforge_prefix = preg_replace("/\W/", "", $eduforge_prefix);
// if there wasn't a prefix redirect to eduforge
if($eduforge_prefix == 'lms' || $eduforge_prefix=='') { //
header("Location: http://eduforge.org/");
exit;
}
///////////////////////////////////////////////////////////////////////////
// //
// Moodle configuration file //
// //
// This file should be renamed "config.php" in the top-level directory //
// //
///////////////////////////////////////////////////////////////////////////
// //
// NOTICE OF COPYRIGHT //
// //
// Moodle - Modular Object-Oriented Dynamic Learning Environment //
// http://moodle.org //
// //
// Copyright (C) 1999-2004 Martin Dougiamas http://dougiamas.com //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details: //
// //
// http://www.gnu.org/copyleft/gpl.html //
// //
///////////////////////////////////////////////////////////////////////////
unset($CFG); // Ignore this line
//=========================================================================
// 1. DATABASE SETUP
//=========================================================================
// First, you need to configure the database where all Moodle data //
// will be stored. This database must already have been created //
// and a username/password created to access it. //
// //
// mysql - the prefix is optional, but useful when installing //
// into databases that already contain tables. //
//
// postgres7 - the prefix is REQUIRED, regardless of whether the //
// database already contains tables. //
// //
// A special case exists when using PostgreSQL databases via sockets. //
// Define dbhost as follows, leaving dbname, dbuser, dbpass BLANK!: //
// $CFG->dbhost = " user='muser' password='mpass' dbname='mdata'"; //
//
$CFG->dbtype = 'mysql'; // mysql or postgres7 (for now)
$CFG->dbhost = 'localhost'; // eg localhost or db.isp.com
$CFG->dbname = 'moodletest'; // database name, eg moodle
$CFG->dbuser = 'XXXX'; // your database username
$CFG->dbpass = 'XXXX'; // your database password
$CFG->prefix = $eduforge_prefix . '_'; // Prefix to use for all table names
$CFG->dbpersist = true; // Should database connections be reused?
// "false" is the most stable setting
// "true" can improve performance sometimes
//=========================================================================
// 2. WEB SITE LOCATION
//=========================================================================
// Now you need to tell Moodle where it is located. Specify the full
// web address to where moodle has been installed. If your web site
// is accessible via multiple URLs then choose the most natural one
// that your students would use. Do not include a trailing slash
// Origiona line -> $CFG->wwwroot = 'http://'.$eduforge_prefix.'.lms.eduforge.org';
$CFG->wwwroot = 'http://'.$eduforge_prefix.'/ITU/moodleone';
//=========================================================================
// 3. SERVER FILES LOCATION
//=========================================================================
// Next, specify the full OS directory path to this same location
// Make sure the upper/lower case is correct. Some examples:
//
// $CFG->dirroot = 'c:\FoxServ\www\moodle'; // Windows
// $CFG->dirroot = '/var/www/html/moodle'; // Redhat Linux
// $CFG->dirroot = '/home/example/www/moodle'; // Cpanel host
$CFG->dirroot = 'C:\wamp\www\ITU\moodleone';
//=========================================================================
// 4. DATA FILES LOCATION
//=========================================================================
// Now you need a place where Moodle can save uploaded files. This
// directory should be readable AND WRITEABLE by the web server user
// (usually 'nobody' or 'apache'), but it should not be accessible
// directly via the web.
//
// - On hosting systems you might need to make sure that your "group" has
// no permissions at all, but that "others" have full permissions.
//
// - On Windows systems you might specify something like 'c:\moodledata'
$CFG->dataroot = 'C:\wamp\www\ITU\moodledata'.$eduforge_prefix;
//=========================================================================
// 5. DATA FILES PERMISSIONS
//=========================================================================
// The following parameter sets the permissions of new directories
// created by Moodle within the data directory. The format is in
// octal format (as used by the Unix utility chmod, for example).
// The default is usually OK, but you may want to change it to 0750
// if you are concerned about world-access to the files (you will need
// to make sure the web server process (eg Apache) can access the files.
// NOTE: the prefixed 0 is important, and don't use quotes.
$CFG->directorypermissions = 0777;
//=========================================================================
// 6. DIRECTORY LOCATION (most people can just ignore this setting)
//=========================================================================
// A very few webhosts use /admin as a special URL for you to access a
// control panel or something. Unfortunately this conflicts with the
// standard location for the Moodle admin pages. You can fix this by
// renaming the admin directory in your installation, and putting that
// new name here. eg "moodleadmin". This will fix admin links in Moodle.
$CFG->admin = 'admin';
//=========================================================================
// 7. OTHER MISCELLANEOUS SETTINGS (ignore these for new installations)
//=========================================================================
//
// Prevent users from updating their profile images
// $CFG->disableuserimages = true;
//
// Prevent scheduled backups from operating (and hide the GUI for them)
// Useful for webhost operators who have alternate methods of backups
// $CFG->disablescheduledbackups = true;
//
// Restrict certain usernames from doing things that may mess up a site
// This is especially useful for demonstration teacher accounts
// $CFG->restrictusers = 'teacher,fred,jim';
//
// Turning this on will make Moodle filter more than usual, including
// forum subjects, activity names and so on (in ADDITION to the normal
// texts like forum postings, journals etc). This is mostly only useful
// when using the multilang filter. This feature may not be complete.
// $CFG->filterall = true;
//
// Setting this to true will enable admins to edit any post at any time
// $CFG->admineditalways = true;
//
// Setting this to true will force a non-guest login to see the user pages
// eg the teachers linked from course descriptions or site news
// $CFG->forceloginforprofiles
//
// This setting will put Moodle in Unicode mode. It's very new and
// most likely doesn't work yet. THIS IS FOR DEVELOPERS ONLY, IT IS
// NOT RECOMMENDED FOR PRODUCTION SITES
// $CFG->unicode = true;
//=========================================================================
// ALL DONE! To continue installation, visit your main page with a browser
//=========================================================================
// Allow file overrides for eduforge
if (file_exists("$CFG->dirroot/config_" . $eduforge_prefix . ".php")) { // Do not edit
include_once("$CFG->dirroot/config_" . $eduforge_prefix . ".php");
}
if (file_exists("$CFG->dirroot/lib/setup.php")) { // Do not edit
include_once("$CFG->dirroot/lib/setup.php");
} else {
if ($CFG->dirroot == dirname(__FILE__)) {
echo "<p>Could not find this file: $CFG->dirroot/lib/setup.php</p>";
echo "<p>Are you sure all your files have been uploaded?</p>";
} else {
echo "<p>Error detected in config.php</p>";
echo "<p>Error in: \$CFG->dirroot = '$CFG->dirroot';</p>";
echo "<p>Try this: \$CFG->dirroot = '".dirname(__FILE__)."';</p>";
}
die;
}
// MAKE SURE WHEN YOU EDIT THIS FILE THAT THERE ARE NO SPACES, BLANK LINES,
// RETURNS, OR ANYTHING ELSE AFTER THE TWO CHARACTERS ON THE NEXT LINE.
?>