Open Source Subnet An independent Open Source community View more

Install Moodle to manage courses and classes

Moodle, the Modular Object-Oriented Dynamic Learning Environment, is the premier open source e-learning application. A learning management system with strong philosophical underpinnings, Moodle allows teachers to create assignments, distribute materials, hold online classes, create tests, and grade students' work. Its modular infrastructure fosters communication and collaboration between teachers and students.

Moodle is used in community colleges, public schools, home schools, and distance learning situations where a teacher's physical presence might not be possible. Businesses also use Moodle to offer training and certification programs.

Moodle runs as a web application. I'll assume the CentOS server on which you're installing it is already running Apache, MySQL, and PHP. To try Moodle, download the installation archive from, extract it, and set the appropriate permissions for its program and data directories:

cd ~/Downloads
tar xzpf Moodle-latest-24.tgz -C /var/www/htm
mkdir /var/www/Moodledata
chown -R root:apache /var/www/html/Moodle/
chmod -R u=rwX,g=rX,o= /var/www/html/Moodle/
chown -R root:apache /var/www/Moodledata/
chmod -R ug=rwX,o= /var/www/Moodledata/

Create a MySQL database, database user, and password for Moodle, and set the proper privileges:

mysql -uroot -p
GRANT ALL PRIVILEGES ON Moodle.* TO <em>wazi_user</em>@localhost IDENTIFIED BY '<em>wazi_password</em>';

Now you can visit http://localhost/Moodle in your web browser to begin the actual Moodle installation. The installation process walks you through a series of steps in which you choose a language and set other configuration information. You will be presented with a "Configuration completed" screen, but you'll see that your config.php file didn't save due to secure permissions on your Moodle directory. To correct this, open a text editor as root, paste in the configuration code you see on your "Configuration completed" page, save the file as /var/www/html/Moodle/config.php, then refresh the "Configuration completed" web page.

The installation process performs a list of server checks and highlights problems with red and yellow labels, indicating the severity of the issues. A help link appears with each check to show you how to fix the issue. When you have everything working properly you can set up the Moodle administrator username, password, address data, time zone, and other details. Moodle lets you specify that an administrator must create a new password, which is useful if you're setting up a Moodle installation for someone else to administer; they can log in once with the password you specify, then change the password to something they'll remember.

The front page settings displays text boxes where you can provide a site name and description. Here you can also enable or disable self-registration for new users. If it's enabled, as it is by default, new users can create their own accounts and validate themselves via email confirmation.

At this point Moodle is fully installed, but you should read the documenation on managing a Moodle site, as it addresses critical areas such as security, backup, payment processing, and other challenges.

Site structure, user roles

The front page of a Moodle installation is where students and teachers log in, read school news, access user settings, and see who else is currently accessing the Moodle site resources. Once you have a site installed you can set up courses and add students and teachers.

Moodle front page

The core Moodle layout is based around courses. Each course is made up of teacher-created pages and content blocks located on the sides of the pages. You can move content blocks around easily by putting Moodle into what is called editing mode. Moodle's page editing mode allows the Moodle site administrator to visually edit the placement of any content block with a title, such as those for navigation, settings, upcoming events, and news, on each individual Moodle page.

Moodle course

Each course can be assigned to one or more course categories. Course categories allow teachers and admins to create a curriculum made up of multiple courses. Courses may have prerequisite courses.

Course categories provide a hierarchy in which to add teacher-created content. For example, for a math class, a teacher could use Moodle categories to provide subsections for algebra, fractions, and geometry.

The home page for a course acts as an overview page, describing teacher-created expectations along with content such as teacher-provided updates and alerts. The documentation on managing a Moodle course covers creating activities for students, tracking student progress through the curriculum, and adding Moodle-specific content resources.

Adding and inviting users

Moodle offers a selection of standard roles for individual users, including course creator, teacher, non-editing teacher (who can grade assignments), student, and guest. Authorized users such as teachers and administrators can add new users by clicking on the Setting widget on the left side of the Moodle home page, then Users -> Users -> Accounts -> Add a new user. This brings up a new user creation page where you can fill in all the details described in the add user documentation.

visitors to the Moodle homepage can register themselves by clicking on Login at the upper right of the home page, then on the Create new account button on the next page. They then enter a username and password, email address, name, and other data as required by the administrator. The administrator is free to change the text boxes, as explained in the email registration documentation. When the visitor submits the registration form, Moodle sends an email message to the provided address. The recipient must click on the registration link in the message to complete registration.

Creating a new course in Moodle

Being a user doesn't mean much unless you're attached to a course. To add a new course, log in as the administrator or as a teacher. On the left side of the Moodle homepage, browse to Settings -> Site Administration -> Courses -> Add/edit courses. Click on Add new category and create a course category that makes sense for your curriculum. For example, if you want to add a calculus course and you don't already see an appropriate category, you might create one called Math.

Once you've decided on a category name, check the pull-down menu at the center of the page and make sure it's set to Top to ensure that your new category doesn't fall into subcategory status by accident. Enter your category name and a brief description, then press the Create category button.

To add courses within the category, first click on the Add new course button. Enter a full course name, which will be used for the top page display for the course on all course pages. Also enter a short course name, which is used for email subject headings and for the left-side block navigation description. Fill in an appropriate summary of the course and any additional options, such as format and course start date, as detailed in the course management documentation. Finish by clicking on Save changes.

Once you have a course created you can enroll students. While logged in as a teacher or administrator, browse to the Moodle homepage to see a list of available courses. Click on the course you wish to add students to. Look to the center-right of the page for the Settings box. Within that box, click on Users, then Enrolled users. On the Enrolled users page, click on the Enroll users button, then use the Assign roles pull-down menu to select the users you wish to add to the course. New users that are not assigned to anything yet are listed under the “None” role.

Click on the Enroll button on the left side of each user name to be added. When you're done, click on the Finish enrolling users button at the bottom of the dialog box to return to the Enrollment users page. The page will have a list of enrolled users, but these users still don't have an assigned user role. To add each user as a student, click on the plus sign next to their enrollment method, then click on the student option. The word “student” will then appear under the section of the user line under roles.

Because course management is such an extensive task, I recommend reading the course management documentation, which explains best practices for handling student enrollment for multiple classes, among other topics.

Extending Moodle's functionality with plugins

Moodle builds a ton of functionality into a basic installation, but you can extend its abilities with plugins. Some plugins come preinstalled with Moodle. To see them, browse to the Moodle site home page, look for the Settings block, then click Site administration -> Plugins -> Plugins overview to see the plugins that are currently installed and which subsections (such as plagiarism or text editors) they belong to.

Some plugins are installed but not active. To activate an installed plugin, determine which subsection it's listed in on the Plugins overview page. Browse to the left side of the Plugins overview page and go to Settings -> Plugins, look for the name of the appropriate subsection, and under the correct subsection click on Manage pluginname. The Manage page for a plugin displays several column options: hide/show, active, enable, and visible, all of which you can toggle on or off.

Installing a new plugin requires a bit more work. Plugins must be installed into the directory assigned by the plugin itself, according to the directions provided on the download page for that plugin. Similarly, to update plugins, you have to read the documentation specific to each. You should therefore avoid unneeded plugins to save work for your system administrator.


Moodle provides educators with all the tools necessary to manage a full suite of courses for almost any curriculum. It's is a powerful alternative to proprietary options such as Blackboard, especially given the tremendous cost savings it provides with its lack of licensing fees. For educators however, the biggest impact Moodle can make comes from its dependability and overall functionality.

Join the Network World communities on Facebook and LinkedIn to comment on topics that are top of mind.
Must read: Hidden Cause of Slow Internet and how to fix it
Notice to our Readers
We're now using social media to take your comments and feedback. Learn more about this here.