Hello and welcome to Moodle Administration! Today we are going to cover a range of topics from installation and configuration to customization, scalability, and optimization. My name is Joshua Worden, and I am a Desktop Technician and Web Application Developer for Brownsburg Community Schools. I’d like to touch lightly on each topic and I have brought two virtual setups with me to demonstrate several of the topics I will be discussing today. There should be some time for questions at the end, but feel free to stop me at any time if you need clarification! I am assuming that many of you have worked with Moodle before and are looking for some additional help using and customizing the software to meet your needs. Unfortunately, the guys from PRISM couldn’t be here today, but I’m happy to provide you with any insight I can. I’ve been working with Moodle for a little over two years now in our environment.With that, lets jump in!
Some of the topics we will cover today include a basic orientation to the Moodle software platform for those of you who haven’t used it yet. We will cover the requirements, and go over the installation and upgrade process.We will also look at initial and advanced configuration, including access control, rights assignment, and user account administration; as well as customization regarding themes, modules, and source files.Finally, we will look at Moodle’s integrated backup system, optimization, and scalability of the platform.Again, we should have some time for questions at the end, and I’ll be available afterwards as well.
Why would you want to use Moodle? In these days, budgets are more and more of a concern for IT departments across the board, and finding a reliable solution to meet the demand for online learning in today’s technological environment is hard to do. Moodle is a specialized web application, but can be used robustly for many different functions, from online collaboration and communication to a simple message board.Primarily though, Moodle is an online learning solution. It provides an all-in-one approach for students and teachers, similar to other products such as Angel or BlackBoard. The best part of Moodle though, is the price tag. Moodle is free. It is also open-source, licensed under the GNU General Public License. Because of this, you can modify, customize, even redistribute the Moodle software to fit your needs – provided you follow the licensing agreement.Online Learning Solutions such as Moodle are primarily aimed at higher education and distance learning environments. More and more, they are being adopted by K-12 environments and corporate businesses to embrace the prevalence of technology in our society. They can be used to facilitate training, augment, and in some cases even replace traditional classes.One of the largest benefits of Moodle is that it is platform-independent. It can run on any system that meets it’s requirements, and does not require a proprietary server or operating system as many other similar solutions do.Because of Moodle’s flexibility, it can be adapted to fit your environment. If you prefer locally-hosted solutions, Moodle can probably be run from one of your existing servers within your infrastructure. For those without the bandwidth or hardware to support it, a variety of Moodle Partners are willing to suport and host your Moodle solution for a fee.
Moodle is built around the PHP scripting language, and uses SQL as a backend to store data. As of Moodle 1.9, most popular SQL databases are supported, including MySQL 4.1.16, PostgreSQL 8, MSSQL 9, and Oracle 9. The minimum required version of PHP is 4.3.0, which has been ported to almost any operating system.Because it relies on PHP as opposed to a platform-dependant scripting language, Moodle can be implemented anywhere PHP is supported. Moodle Partners tend to prefer using a Unix or Linux platform, usually Debian or Ubuntu. Because of it’s independence, Moodle can run in just about any environment, from a Windows AD, Unix, or Novell/eDirectory server environment. The platforms being used today are Windows Server 2008 R2 ServerCore, and Ubuntu Server 9.Moodle does not use any methods that are proprietary to specific webservers either, and is most commonly installed on an Apache platform. Many other webservers are usable as well, so long as they support PHP. Other common webservers are Microsoft’s IIS and Lighttpd.
Before installing Moodle, you must have a functioning web server with PHP installed, and a SQL database available for Moodle to use. After you have this, all you need to do to begin the installation is to download a copy of the Moodle software from Moodle.org, and extract it.You can copy this over your network, or use an FTP client to upload it to your webserver. After doing so, you can start the installation by accessing the moodle/ folder you just uploaded.At this point, I am going to walk you through the installation, and explain each of the major steps along the way. We will be using a machine with Ubuntu Server 9. I have loaded the default LAMP (Linux/Apache/MySQL/PHP) packages, and downloaded the moodle.tgz file.First we have to extract the files, and copy them to our webserver’s root directory. On this server, that is /var/www. Then we open the website in our browser, and begin the installation.…
The first thing I have to say about upgrading is make a backup! As with any software, a fresh install should be the first choice, but sometimes it is impossible. I always make a backup of both the moodle folders for my current version, as well as a SQL export of my moodle database.Upgrades are done in nearly the same way as a fresh install. After extracting the new version of moodle, simply copy it over the old version. The config.php file should not be replaced, and when attempting to access the moodle site, you will be prompted to access the /admin directory and continue the upgrade process. There are modifications to the database required, and it will go through this in the same way as the initial install.If all goes well, when it is finished you will end back up at the administration screen, and your version of moodle should reflect the newly installed version. If you do any caching, make sure you turn it off and clear your cache before upgrading, and beware that any source file modifications will be lost after the upgrade.If you have several major versions to upgrade, for example Moodle 1.4 to Moodle 1.9, I highly recommend doing a fresh install of 1.9. If you would like to try upgrading, I have had the best luck with going from each major version to the next sequentially. This still required me to make manual modifications to the database in order for the upgrade process to complete, but I have heard other people have had better results.Incremental upgrades within the same major version should be a breeze, and usually consist of bug fixes rather than major changes, so you shouldn’t run into this problem.
After installing Moodle, the first thing to do is to customize it to fit your needs! Visiting the administration console, you can drill down through each of the sections to tweak your install the way you want it.There are two types of role assignments, Global and Local. Local assignments are course-based, and give certain rights to users within a course. Globals provide the user with the assigned role across all courses in your Moodle site. It is also possible to fine-tune each of the roles by accessing the overrides section.Another important section of the administration console is the User Management section. Here you can create/delete/modify users, perform bulk operations, and modify authentication methods. Most setups will use an LDAP Authentication method with an existing LDAP infrastructure. Several LDAP methods are supported, the most common being Microsoft Active Directory, and Novell eDirectory. You can also allow users to self-register using email-based authentication.One of the things that makes Moodle so versitile is it’s support for user-created themes and modules. You can find a huge selection of these at the moodle.org website, and many other theme sites around the web. Pretty much anything you can think of, someone has made a module for. The themes are also user-customizable, allowing you to change the colors, add images, even change the way things look. This is a little more complicated though, as you need to have a good understanding of HTML and CSS, and experience modifying themes for other applications is helpful.You can also change the PHP files in your Moodle installation to accomplish other tasks. Some of the common reasons have been to remove the logging feature to cut down on some of the overhead, or to disable authentication all together. This is beyond the scope of the talk here, but you can always find additional resources on this topic on the Moodle.org forums.
While Moodle does have it’s own backup feature built into the software, it is a good idea to perform external backups on your SQL server and moodledata/ folder. Any backup software will do, whatever implementation you have in place should be able to perform this task as well.The moodledata folder contains all of the content for your courses and user-submitted content. This includes assignments, pictures, anything else included in a course or it’s assignments.You can configure the backup behavior under the administration panel. Generally speaking, a full backup of all Moodle courses is run at night; or whenever you tell it to. You can also tell moodle to generate statistical data during the backup period.You (or your teachers!) can also perform course-level backups from their Course Administration page. This backup is stored with their course files under the moodledata/ folder. They can download this file if needed, for example, to transfer a course between two non-networked moodle sites.In order for these tasks to take place, you need to set up a cron job or scheduled task to access the cron.php page on your moodle site. Generally, you will want to set your job to run every 15 minutes or so, to ensure that regular tasks such as subscribed posts or automated emails go out when they are intended to. On linux, this is accomplished by using the cron tool, on Windows, there are several tools available. I personally use wget for windows to access the page from a scheduled task.
Moodle is designed to be scalable software, able to meet the needs of just a few users, to many thousands. This is largely dependent on software and hardware configuration supporting it. Generally speaking, two of the largest bottlenecks are going to be PHP processing time, and data retrieval from your SQL server.Finding a good mix between high-performance hardware and low-overhead software is key to optimizing and scaling a Moodle installation. There are many things you can do to improve performance. For all setups, keep in mind how many cores are available when configuring child processes for your webserver, sql, and php processes.The best way to improve MySQL performance is with high speed disc access. 10K RPM disc drives with low seek times are the best hardware for SQL servers to run on. For a software solution, remember to optimize SQL tables, and your SQL installation itself. There are many performance tweaks for almost all SQL servers that can be modified to match your solution. Moodle utilizes SQL very heavily, so this is the most common bottleneck.The best hardware improvement to PHP is with access to multiple cores to concurrently process multiple requests. PHP generally is hung waiting for data from SQL rather than processing it, especially if you implement a caching solution. Several caching solutions are available, from moodle’s internal cache, to eAccelerator or Turckmmcache. Generally speaking, caching in PHP is only necessary to reduce load on your SQL server. It will typically make your site slower if your performance issue is somewhere else.There are a couple of performance options you can look at under the Moodle Administration console. One of them will display performance information on every page, useful when trying to track down a performance issue. It will also display cache information if applicable. You can also turn on debugging to see if any errors are coming up that could be causing a performance issue (over your MySQL connection limit, for example). Many servers have resource monitoring tools as well; Windows Server’s Resource Monitor is exceptionally useful for looking at network/disk/memory/cpu usage.
Q&A if we have time.
Moodle Administration HECC 2009 Presented by Joshua Worden