<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:posterous="http://posterous.com/help/rss/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>ianmcnaught's posterous</title>
    <link>http://ianmcnaught.co.uk</link>
    <description>Most recent posts at ianmcnaught's posterous</description>
    <generator>posterous.com</generator>
    <link xmlns="http://www.w3.org/2005/Atom" href="http://posterous.com/api/sup_update#3e3019bda" type="application/json" rel="http://api.friendfeed.com/2008/03#sup" />
    
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Ianmcnaught" /><feedburner:info uri="ianmcnaught" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://posterous.superfeedr.com/" /><item>
      <pubDate>Wed, 22 Jun 2011 00:08:00 -0700</pubDate>
      <title>Testing Moodle 2.0 on Amazon Web Services </title>
      <link>http://feedproxy.google.com/~r/Ianmcnaught/~3/AyP60DZvOR8/58115983</link>
      <guid isPermaLink="false">http://ianmcnaught.co.uk/58115983</guid>
      <description>&lt;p&gt;
	&lt;p&gt;As part of our investigation into more flexible hosting for Moodle  next adademic year, we have been doing some quite extensive testing on  Amazon Web Services (AWS).  The first step was to ascertain what EC2 instance type we would need for  acceptable Moodle performance. From this we would be able to project  the total costings for a years worth of hosting. To conduct this test,  we setup a basic webserver (Ubuntu server and Lighttpd) and a small RDS  instance for the database. We installed Moodle on the webserver, setup a  few courses, users and activities, created an AMI (Image) of it so we  could launch identical instances later, then started some load testing.&lt;/p&gt;
&lt;h2&gt;The load testing&lt;/h2&gt;
&lt;p&gt;We used &lt;a href="http://jakarta.apache.org/jmeter/" target="_blank"&gt;Apache Jmeter&lt;/a&gt; to conduct the load testing. We setup a simple  script simulating user activity (logging in, loading a few courses and  clicking around on some activities), then set it to run the test with 10  simultaneous users repeating it 10 times. We tried this on four  different instance types: Micro, Small, Medium (High CPU) and Large. The  spec of these instances is below:&lt;/p&gt;
&lt;table class="stats"&gt;

&lt;tr&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td class="hed"&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/td&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
&lt;td class="hed"&gt;&lt;strong&gt;I/O&lt;/strong&gt;&lt;/td&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Price/hour&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Micro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Up to 2 EC2 Compute Units*&lt;/td&gt;
&lt;td&gt;613 MB&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;$0.025 or &lt;a href="http://aws.amazon.com/free/"&gt;Free&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="padding: 3px;"&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Small&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1 EC2 Compute Units&lt;/td&gt;
&lt;td&gt;1.7 GB&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;$0.095&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Medium, High CPU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5 EC2 Compute Units&lt;/td&gt;
&lt;td&gt;1.7 GB&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;$0.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="padding: 3px;"&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Large&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4 EC2 Compute Units&lt;/td&gt;
&lt;td&gt;7.5 GB&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;$0.38&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;p&gt;* Instances of this family provide a small amount of consistent CPU  resources and allow you to burst CPU capacity when additional cycles are  available.&lt;/p&gt;
&lt;p&gt;The question is, which is the cheapest instance that could give us  acceptable load times, and which would perform best between large (high  memory, less CPU) or medium, high CPU (less memory, more CPU)?  Each system was identical, except for the hardware spec. The tests  performed on them was also identical. The aim of this was not to get an  idea of actual Moodle performance on AWS, the webservers were not in  anyway optimised - the aim was twofold 1) to get an idea as to which  instance type would give us best performance for the money, and 2) to compare performance with an identically setup server hosted in  house.&lt;/p&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;p&gt;The results are displayed in the graphs below &lt;div class='p_embed p_image_embed'&gt;
&lt;a href="http://posterous.com/getfile/files.posterous.com/temp-2011-06-22/qzwdmtuocvjqsruxlzvGmhAJqEwwgzqkcxmjxboutgoltJFfwApmhqlxBkof/chart21.png.scaled1000.png"&gt;&lt;img alt="Chart21" height="334" src="http://posterous.com/getfile/files.posterous.com/temp-2011-06-22/qzwdmtuocvjqsruxlzvGmhAJqEwwgzqkcxmjxboutgoltJFfwApmhqlxBkof/chart21.png.scaled500.png" width="500" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;&lt;div class='p_embed p_image_embed'&gt;
&lt;a href="http://posterous.com/getfile/files.posterous.com/temp-2011-06-22/prlGlFapdJmrlxJbDbnjewpABAsInzJowkgiflvHjnxvufuDbsjCbFxCtIhn/chart32.png.scaled1000.png"&gt;&lt;img alt="Chart32" height="309" src="http://posterous.com/getfile/files.posterous.com/temp-2011-06-22/prlGlFapdJmrlxJbDbnjewpABAsInzJowkgiflvHjnxvufuDbsjCbFxCtIhn/chart32.png.scaled500.png" width="500" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;As you can see from the graphs above, the Micro instance performed very   badly (and erratically - not suprising seeing as it has low I/O performance, and no guaranteed level of CPU), the   Small and Large instances performed more consistantly and gave an   improvement in line with their specification, but the best performer by a   small margin was the Medium, High CPU instance. This is especially   useful to know considering the cost saving between that and a large   instance (see below). I haven't included the Micro instance in the price comparison due to the fairly unusable performance, but it could be useful as a staging server.&lt;/p&gt;
&lt;table class="stats"&gt;

&lt;tr&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Instance Type&lt;/strong&gt;&lt;/td&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Annual RDS Cost*&lt;/strong&gt;&lt;/td&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Annual Instance Cost*&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="padding: 3px;"&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Small&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$578.13&lt;/td&gt;
&lt;td&gt;$744.68&lt;/td&gt;
&lt;td&gt;$1,322.82&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="padding: 3px;"&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Medium, High CPU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$578.13&lt;/td&gt;
&lt;td&gt;$1,156.27&lt;/td&gt;
&lt;td&gt;$1,900.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="padding: 3px;"&gt;
&lt;td class="hed"&gt;&lt;strong&gt;Large&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$578.13&lt;/td&gt;
&lt;td&gt;$2,312.53&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;$3,057.21&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;p&gt;* These prices are taking into account the &lt;a href="https://aws.amazon.com/ec2/pricing/#reservedInstancePricing" target="_blank"&gt;discount you get when you pay for a reserved instance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course the prices above are for running a constant server throughout the year, which would kind of defeat the object of hosting in the cloud. In reality, some periods of time you might switch to a larger instance for a couple of weeks, then maybe during the summer just to keep it ticking over, you'd switch to a small, or even micro instance. The prices displayed give an indication of price, but should not be relied on too heavily.&lt;/p&gt;
&lt;h2&gt;Further optimisation&lt;/h2&gt;
&lt;p&gt;These tests have been conducted on a very basic, non-optimised webserver. With a little work, better performance could be coaxed out of any of them. As well as the standard tweaks you might do (Opcode caching, file compression and in memory cache), AWS also offers some great tools for improving your sites reliability and performance. Briefly, these are a few things you could do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;a href="https://aws.amazon.com/cloudfront/" target="_blank"&gt;Amazon Cloud Front&lt;/a&gt; as a Content Delivery Network for serving static files&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://aws.amazon.com/elasticloadbalancing/" target="_self"&gt;Elastic Load Balancing&lt;/a&gt; to share the load between multiple web servers (although you'd need some form of network attached storage, or S3 for your moodle data so all the web servers could access it).&lt;/li&gt;
&lt;li&gt;Setup some &lt;a href="https://aws.amazon.com/autoscaling/" target="_blank"&gt;auto scaling rules&lt;/a&gt; to automatically scale your resources up or down, depending on demand.&lt;/li&gt;
&lt;li&gt;Take advantage of RDS' ability to easily setup a read replica for your database&lt;/li&gt;
&lt;li&gt;Configure your RDS database to have a multi A-Z deployment (keeps a hot standby in another availability zone for instant failover if the main one goes down).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hopefully this data is useful to people. If you have any experience setting up a production Moodle deployment on AWS, I'd love to hear from you!&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ianmcnaught.co.uk/58115983"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://ianmcnaught.co.uk/58115983#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Ianmcnaught/~4/AyP60DZvOR8" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/642884/ian.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5erBBLd9jAB3</posterous:profileUrl>
        <posterous:firstName>Ian</posterous:firstName>
        <posterous:lastName>McNaught</posterous:lastName>
        <posterous:nickName>ianmcnaught</posterous:nickName>
        <posterous:displayName>Ian McNaught</posterous:displayName>
      </posterous:author>
      <media:content type="image/png" height="371" width="600" url="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2011-06-22/prlGlFapdJmrlxJbDbnjewpABAsInzJowkgiflvHjnxvufuDbsjCbFxCtIhn/chart32.png">
        <media:thumbnail height="309" width="500" url="http://getfile3.posterous.com/getfile/files.posterous.com/temp-2011-06-22/prlGlFapdJmrlxJbDbnjewpABAsInzJowkgiflvHjnxvufuDbsjCbFxCtIhn/chart32.png.scaled500.png" />
      </media:content>
      <media:content type="image/png" height="524" width="784" url="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2011-06-22/qzwdmtuocvjqsruxlzvGmhAJqEwwgzqkcxmjxboutgoltJFfwApmhqlxBkof/chart21.png">
        <media:thumbnail height="334" width="500" url="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2011-06-22/qzwdmtuocvjqsruxlzvGmhAJqEwwgzqkcxmjxboutgoltJFfwApmhqlxBkof/chart21.png.scaled500.png" />
      </media:content>
    <feedburner:origLink>http://ianmcnaught.co.uk/58115983</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 30 May 2011 03:44:00 -0700</pubDate>
      <title>Moodle and Turnitin - a direct integration?</title>
      <link>http://feedproxy.google.com/~r/Ianmcnaught/~3/N47QGeRYym8/54932388</link>
      <guid isPermaLink="false">http://ianmcnaught.co.uk/54932388</guid>
      <description>&lt;p&gt;
	&lt;blockquote class="posterous_medium_quote"&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: This post is about integrating Turnitin with Moodle 1.9, if you have made the leap to 2.0 it may not be relevant to you. If you are assessing a turnitin integration for any other VLE, it's worth reading this post to see what things to watch out for.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you read the &lt;a href="http://turnitin.com/static/support/moodleDir.php"&gt;turnitin blurb on their direct Moodle integration&lt;/a&gt;, it sounds fantastic. It offers a proper "moodle like" experience  (rather than turnitin in a frame), and it gives the impression that you  get the full feature set of turnitin, minus peer mark. Even better, you  can run both integrations side by side, so you could keep the basic  integration there for Peer mark, and use the direct one for everything  else. We switched to this at the beginning of last semester (February.  Funny time to switch, but we had our reasons), and have since found that  everything is not quite as we expected. For the benefit of anyone else  considering the direct integration, this is my review of the its good and bad parts.&lt;/p&gt;
&lt;p&gt;First  of all, I will list what I have found to be the good points. I have  marked them as to whether they most benefit students, academics or  admin.&lt;/p&gt;
&lt;h2&gt;The good&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;STUDENTS&lt;/strong&gt;:  On the whole, it is a better user experience for the student, as  they never leave Moodle, all communication with turnitin is done in  the background via their API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ADMIN&lt;/strong&gt;:  Papers are stored locally in the Moodle file system as well as with  Turnitin. Considering how hard turnitin makes it to download assignments  from old modules, this is a great advantage when it comes to archiving,  or just retrieving old assignments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ADMIN&lt;/strong&gt;:  There are options added in the Course Reset page which can create  duplicate turnitin assignments in preparation for your new term. This is a god send for end of term  rollover where the basic integration is a nightmare (if you create a  copy of the course, the course ID changes so the turnitin links break,  if you just reset the course, the class lists and submissions from the  previous term remain (and students remain active against your quota), if  you delete the assignment you loose access to all submissions and only  Turnitin support can restore it).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ADMIN&lt;/strong&gt;:  Because the assignment creation page is hosted on your Moodle install as a PHP file,  you can easily change the default assignment settings to match your  institutions needs. For example, if you want to allow late submissions  by default, you can change the file and make this the default option for everyone (&lt;a href="http://ianmcnaught.co.uk/changing-default-assignment-settings-for-mood"&gt;See here for instructions&lt;/a&gt;).  Technically, you could even hide or disable certain controls if you wanted to  actively prevent certain settings from being changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ACADEMICS&lt;/strong&gt;:  All the students will display in the assignment inbox without the need  for Roster Sync. I have lost count of how many times in the past I&amp;rsquo;ve  had staff worry about why they don&amp;rsquo;t have a full list of students in  their inbox. The reality is this is never a problem, students will be  added to the assignment when they submit, or to force it you can roster  sync, but it does make staff uneasy, so it&amp;rsquo;s an advantage to not have to  deal with this in the Direct integration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As  you can see, there are some considerable advantages to the integration,  but most of them are of benefit to the Moodle administrator, not  to student or academics, the more important stakeholders.&lt;p /&gt;These are the issues I have found difficulties with, again categorised as a student, academic or admin issue.&lt;/p&gt;
&lt;h2&gt;The bad&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ACADEMICS &amp;amp; ADMIN&lt;/strong&gt;: Can&amp;rsquo;t download assignments as a batch. Actually you can, but only through &lt;a href="http://turnitin.com/"&gt;turnitin.com&lt;/a&gt; if you are the assignment owner. This is relatively easy to setup once  you know how, but a totally obtuse process that no one is going to work  out on their own.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ACADEMICS  &amp;amp; ADMIN&lt;/strong&gt;: No way of downloading the grademarked paper from the  assignment inbox, you can only download it from document viewer, so also  again one at a time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ACADEMICS&lt;/strong&gt;:  Only basic settings are available for creating an assignment. Key ones  that are missing are the option to exclude small or cited matches. This  can be set in the document view by applying a filter, but it would have  to be done individually on every single paper submitted. It can&amp;rsquo;t be set  as a global setting for the assignment. You can't even make these  changes in &lt;a href="http://turnitin.com/"&gt;turnitin.com&lt;/a&gt; because assignment settings for assignments created in Moodle are locked.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The most serious one: STUDENTS&lt;/strong&gt;: Turnitin claiming that &lt;a href="http://turnitin.com/static/support/moodleDir.php#q1"&gt;you can use both integrations at once&lt;/a&gt;, so we took their word for it and did. It turns out to not be  quite so simple. Student accounts cannot be shared between the two  integrations, so if they have submitted to both integrations, they will  automatically have two accounts with turnitin, counting as two students  on your quota of student accounts. We pay for 50 more accounts than we  have students, but ran out of accounts with hundreds of students still  trying to submit. This meant students couldn&amp;rsquo;t submit for quite a few  days until turnitin acknowledged the problem and boosted our quota  enough for us to get by. Lesson is, ignore what turnitin say and don&amp;rsquo;t  use both at the same. It would be impossible to ensure that students  were only submitting to one or the other.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What you no doubt notice here is that the benefits are heavily weighted towards Moodle administrators, and the disadvantages towards academics and students! Naturally if academics and students are having difficulties, it ends up on the desk of the administrator, so any benefits gained are soon wiped out!&lt;/p&gt;
&lt;p&gt;Has anyone else used the direct integration? Would you agree with my assessment? Any issues I&amp;rsquo;ve missed out or misunderstood?&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ianmcnaught.co.uk/54932388"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://ianmcnaught.co.uk/54932388#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Ianmcnaught/~4/N47QGeRYym8" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/642884/ian.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5erBBLd9jAB3</posterous:profileUrl>
        <posterous:firstName>Ian</posterous:firstName>
        <posterous:lastName>McNaught</posterous:lastName>
        <posterous:nickName>ianmcnaught</posterous:nickName>
        <posterous:displayName>Ian McNaught</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://ianmcnaught.co.uk/54932388</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 02 Feb 2011 00:10:00 -0800</pubDate>
      <title>Changing default assignment settings for Moodle Turnitin integration</title>
      <link>http://feedproxy.google.com/~r/Ianmcnaught/~3/EjZD6jqSkx8/changing-default-assignment-settings-for-mood</link>
      <guid isPermaLink="false">http://ianmcnaught.co.uk/changing-default-assignment-settings-for-mood</guid>
      <description>&lt;p&gt;
	&lt;p&gt;The direct turnitin integration for Moodle is great, but there are a few tweaks necessary to set it up correctly. The default settings for a new assignment created through Moodle do not match the defaults in &lt;a href="http://turnitin.com"&gt;turnitin.com&lt;/a&gt;, and unlike &lt;a href="http://turnitin.com"&gt;turnitin.com&lt;/a&gt; there is not an option to save a selection of default settings (as far as I can tell through reading turnitin's limited documentation). However, even on &lt;a href="http://turnitin.com"&gt;turnitin.com&lt;/a&gt;, the defaults you save are course-wide not institution-wide, so not so helpful if your institutions policies are different to the turnitin defaults.&lt;/p&gt;
&lt;p&gt;This is where using the integration gives you advantage over using &lt;a href="http://turnitin.com"&gt;turnitin.com&lt;/a&gt;, because you have access to the code! Open MOODLEDIR\mod\turnitintool\mod_form.php in a text editor, and you should find several lines of code like this:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;$mform-&amp;gt;setDefault('allowlate', 0);&lt;/p&gt;
&lt;p&gt;You should be able to work out what most of them relate to by the first word after the open brackets - this word is the "name" attribute of the form element, the value following is the value to be used as default. So using the example above, if you wanted to change it so by default it allowed late submissions (I don't understand why this &lt;strong&gt;wouldn't&lt;/strong&gt; be the default!), change the value at the end of this line to a 1.&lt;/p&gt;
&lt;p&gt;I hope this helps some people, as I couldn't find any existing instructions on how to do this. I'd rather not hack the code of the plugin, as it is bound to come back and bite me after a future upgrade, but as far as I can tell - it's the only way to do it. If I've missed something really obvious here, please let me know in the comments.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ianmcnaught.co.uk/changing-default-assignment-settings-for-mood"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://ianmcnaught.co.uk/changing-default-assignment-settings-for-mood#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Ianmcnaught/~4/EjZD6jqSkx8" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/642884/ian.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5erBBLd9jAB3</posterous:profileUrl>
        <posterous:firstName>Ian</posterous:firstName>
        <posterous:lastName>McNaught</posterous:lastName>
        <posterous:nickName>ianmcnaught</posterous:nickName>
        <posterous:displayName>Ian McNaught</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://ianmcnaught.co.uk/changing-default-assignment-settings-for-mood</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 14 May 2010 07:36:00 -0700</pubDate>
      <title>Installing Apache, MySQL and PHP on Windows</title>
      <link>http://feedproxy.google.com/~r/Ianmcnaught/~3/BUdNU25IRIg/18643210</link>
      <guid isPermaLink="false">http://ianmcnaught.co.uk/18643210</guid>
      <description>&lt;p&gt;
	&lt;p&gt;This post is primarily for my benefit, to document a process I have gone through many times before, but hopefully it might be useful to some other people who want to use AMP (Apache, MySQL, PHP), but are forced for whatever reason to use it with Windows rather than the Linux. If you spot any mistakes or omissions, please let me know in the comments.&lt;/p&gt;

&lt;p&gt;Before we start this process, if you are just after a simple install of the &amp;ldquo;AMP Stack&amp;rdquo; on Windows, you might want to check out one of the excellent bundles such as &lt;a href="http://www.wampserver.com/en/"&gt;WAMP Server&lt;/a&gt; and &lt;a href="http://www.apachefriends.org/en/xampp-windows.html"&gt;XAMPP&lt;/a&gt;. These make it very easy to do everything I describe in this post through a simple install Wizard. So why install them separately? Mainly because it keeps you in control and helps you to understand how the 3 components interact. The packages are great to get you going, but if you haven&amp;rsquo;t installed and configured these applications yourself, it is difficult to diagnose and fix problems when they inevitably occur.&lt;/p&gt;

&lt;h2&gt;Apache&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download the &lt;a href="http://httpd.apache.org/download.cgi"&gt;Apache .msi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install for All users on Port 80 as a Service (this means it starts automatically when any user is logged in)&lt;/li&gt;
&lt;li&gt;Give a suitable Admin email address, Network Domain and Server Name can remain as default unless you have reason to change. (If this is just a development machine, you can leave this as default).&lt;/li&gt;
&lt;li&gt;Choose Typical installation&lt;/li&gt;
&lt;li&gt;If installation appears to have been successful, type either localhost or 127.0.0.1 into your web browser and it should say &amp;ldquo;It worked!&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;Document Root&lt;/h3&gt;

&lt;p&gt;The Document Root is the directory where all the files you want to be accessible to your web visitors go. Nothing outside of this directory is accessible to users through a web browser. By default on Windows this directory is in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs but you may want to move it somewhere else either for simplicity or to make backups easier. If you wish to do this, open httpd.conf, search for the DocumentRoot line and change to wherever you want it to be. Important Note: Any changes to httpd.conf require a restart of Apache before they take affect. To do this, double click on the Apache icon in the task bar and click Restart.
MySQL&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install &lt;a href="http://dev.mysql.com/downloads/mysql/"&gt;MySQL .msi&lt;/a&gt; (32 bit Essentials version, unless you have good reason to choose otherwise!)&lt;/li&gt;
&lt;li&gt;Choose Typical Installation&lt;/li&gt;
&lt;li&gt;Choose &amp;ldquo;Configure MySQL Server now&amp;rdquo; on the last part of wizard
&lt;strong&gt; Most of the settings can remain as default unless you have reason to change, however make sure that sufficient concurrent users are allowed, and that it is set to run as a service.
&lt;/strong&gt; If this is a public web server, ensure a secure root password is created when asked. If this is a private development machine, you can untick the modify security settings box and the root account will have no password.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;strong&gt;Optional Step:&lt;/strong&gt; Install &lt;a href="http://code.google.com/p/sqlyog/"&gt;SQLyog community edition&lt;/a&gt;. This is a great database management tool, it allows you to create databases, browse them and query them. It is invaluable for administrating databases, but it is not required on the Server, it can be installed on your local machine and connect to the database installed on the server.
PHP&lt;/p&gt;

&lt;p&gt;Download the VC6 Threadsafe version from the &lt;a href="http://windows.php.net/download/"&gt;PHP Windows download page&lt;/a&gt;. Although there are MSI versions of PHP that in theory install everything for you, I have always found it easier and more reliable to use the manual installation method described here.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unzip to C:/PHP (could be anywhere, but update path references below if you choose a different location)&lt;/li&gt;
&lt;li&gt;Change either php.ini-development or php.ini-production (depending on the purpose) to just php.ini.&lt;/li&gt;
&lt;li&gt;make the following alterations to c:/php/php.ini. Search for these lines, alter as shown or if not present, add them. (Some or all of them may be present, but &amp;ldquo;commented out&amp;rdquo;, with a ; character at the beginning of the line.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Configuring PHP&lt;/h3&gt;

&lt;p&gt;PHP comes with a number of extensions. You won&amp;rsquo;t need them all, and shouldn&amp;rsquo;t activate them unless you need them, but you will certainly want the MySQL drivers. Below are my suggested minimum changes to your php.ini file:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;short_open_tag = On
max_execution_time = 60
upload_max_filesize = 10M
auto_detect_line_endings = On ;(makes it compatible with text files created on mac/unix)
extension_dir = &amp;quot;C:\php\ext&amp;quot;
extension=php_mysql.dll
extension=php_mysqli.dll&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Most of these configurations will already exist in your php.ini, so do a search for them before adding them. Some may be &amp;ldquo;commented out&amp;rdquo; which means the line is not active, you can tell if this is the case if the line starts with a semi colon. Removing this semi colon will activate this line. Normally after changing php.ini you will need to restart Apache before you benefit from the changes, but at this point we haven&amp;rsquo;t configured Apache to use PHP, so it makes no difference. We&amp;rsquo;ll get onto that now.
Configuring Apache&lt;/p&gt;

&lt;p&gt;The final stage of this process is to configure Apache to use PHP. There are two changes you need to make, both in the httpd.conf file which should be in the following directory: C:\Program Files\Apache Software Foundation\Apache2.2\conf\&lt;/p&gt;

&lt;p&gt;First add these lines to the file:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;LoadModule php5_module &amp;quot;C:/php/php5apache2_2.dll&amp;quot;
AddType application/x-httpd-php .php
PHPIniDir &amp;quot;C:/php&amp;quot;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The first of those lines loads the php module, the next one registers php files as a valid type for Apache to load, the final line sets the directory where the php.ini file can be found. For the next step, search for the directive DirectoryIndex and add index.php to the list. It should end up looking something like this&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;DirectoryIndex index.html index.htm index.php&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;It may have more file types to it, you can leave them or keep them. These are the file names and extensions that you want Apache to load up by default when someone navigates to a directory on your site not an explicit page. They are prioritised from left to right, so if more than one index page is found it will load the left most listed one. With this in mind, you may wish to put index.php first, but there is probably no need to.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ianmcnaught.co.uk/18643210"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://ianmcnaught.co.uk/18643210#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Ianmcnaught/~4/BUdNU25IRIg" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/642884/ian.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5erBBLd9jAB3</posterous:profileUrl>
        <posterous:firstName>Ian</posterous:firstName>
        <posterous:lastName>McNaught</posterous:lastName>
        <posterous:nickName>ianmcnaught</posterous:nickName>
        <posterous:displayName>Ian McNaught</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://ianmcnaught.co.uk/18643210</feedburner:origLink></item>
  </channel>
</rss>

