November 8th, 2008 | nubae
One of the items Moodle is working on for its 2.0 release is the inclusion of a portfolio which contains all the data for a specific user. A personal area, if you will, including course progress, files, user information, important dates and other similar items. Other software already does this in quite an effective way, and one of these pieces of software, Mahara, developed in New Zealand, the land of Moodle, is the one I chose to look at and install. From the reviews I saw, and reading briefly through its documentation it seems to integrate perfectly into moodle with single sign on galore. These are the steps I took to install it on my Ubuntu Intrepid Box, though the instructions should be similar for other distros.
This assumes you have Moodle already installed, for which I have instructions in an earlier thread.
To begin with, download the latest Mahara release. The Intrepid repositories have version 1.0.4, while at the time of writing the latest sources are 1.06, and are likely to evolve pretty fast so I suggest downloading from the mahara.org website.
First create the Mahara Database from the command line:
mysql -u root -p [enter password] create database mahara; grant all on mahara.* to 'username'@'localhost' identified by 'password';
Obviously change username and password for something else. Untar and unzip the downloaded file, and then move it to the web directory:
tar -xjvf mahara-1.0.6.tar.bz2 sudo mv -f mahara-1.0.6 /var/www/mahara
Then you need to make an extra directory outside the web directory (we will use the same system moodle uses and put that in /var/lib/) for storing files and edit config.php to contain the right connection details (make sure you replace password with your password, and localhost with your domain:
sudo mkdir /var/lib/mahara sudo chmod 777 /var/lib/mahara sudo cp /var/www/mahara/htdocs/config-dist-php /var/www/mahara/htdocs/config.php sudo sed -ie 's/postgres8/mysql5/' /var/www/mahara/htdocs/config.php sudo sed -ie "35 s/''/'mahara'/" /var/www/mahara/htdocs/config.php sudo sed -ie "36 s/''/'mahara'/" /var/www/mahara/htdocs/config.php sudo sed -ie "37 s/''/'password'/" /var/www/mahara/htdocs/config.php sudo sed -ie 's/'http:\/\/myhost.com/mahara/http:\/\/localhost\/mahara/' /var/www/mahara/htdocs/config.php sudo sed -ie 's/\/path\/to\/uploaddir/\/var\/lib\/mahara/' /var/www/mahara/htdocs/config.php
Next add a crontab for mahara:
and add the following line:
* * * * * www-data php /path/to/mahara/htdocs/lib/cron.php
You should now be able to navigate to your mahara installation at http://localhost/mahara and login with admin and password mahara.
Now its time to link the networking between mahara and moodle. First login to both mahara and moodle with the admin user. For both mahara and moodle, choose networking and turn it to On. Then we go to Mahara's Single Sign on Option, located under manage institutions. Edit the default if you will only be serving one moodle install. Switch XMLRPC to on for shared authentication and edit the institution name. When u switch on XMLRPC and press add you'll get a pop up window, where you have to make sure "They SSO in", "Update user info on login", and "we autocreate users" have the tickboxes ticked. Also point wwwroot to your moodle installation (mine is at http://localhost/moodle)
Finally we go back into our Moodle installation and from the Site Administration menu, choose
Networking >> Peers, and add a new host, in my case I chose http://localhost/mahara/htdocs. Pressing add should bring up a page with the sitename and public key. You can edit the site name to reflect whatever feels right and then press save changes to continue. Next click on the services tab on the same page. Under SSO identity provider choose Publish, and under SSO service provider choose subscribe. In the Site Administration panel, click on Users and choose Authentication from the menu. Choose manage authentication and enable the Moodle Network Authentication plugin.
The final step is to give your users the permission to roam to other sites in the Moodle Roles system. Choose Users >> Permissions >> Define Roles from the Site. Edit the "authenticated user" role and allow roaming for remote moodle sites.
To turn on Mahara access in moodle, with Admin editting turned on, choose a Network Servers Block, and the Mahara site should just appear.
That's it, you now have single sign on access between moodle and mahara, so users can just login to Moodle and from there get their mahara portfolio. Far more items are shared between users, it just a matter of experimenting to see what's available and possible.