<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Racker Hacker &#187; wordpress</title>
	<atom:link href="http://rackerhacker.com/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://rackerhacker.com</link>
	<description>Words of wisdom from a server administrator</description>
	<lastBuildDate>Tue, 07 Feb 2012 14:07:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>One month with GlusterFS in production</title>
		<link>http://rackerhacker.com/2010/08/11/one-month-with-glusterfs-in-production/</link>
		<comments>http://rackerhacker.com/2010/08/11/one-month-with-glusterfs-in-production/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 13:29:02 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[glusterfs]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1680</guid>
		<description><![CDATA[As many of you might have noticed from my previous GlusterFS blog post and my various tweets, I've been working with GlusterFS in production for my personal hosting needs for just over a month. I've also been learning quite a bit from some of the folks in the #gluster channel on Freenode. On a few [...]<p><a href="http://rackerhacker.com/2010/08/11/one-month-with-glusterfs-in-production/">One month with GlusterFS in production</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>As many of you might have noticed from my <a href="/2010/05/27/glusterfs-on-the-cheap-with-rackspaces-cloud-servers-or-slicehost/">previous GlusterFS blog post</a> and my <a href="http://twitter.com/rackerhacker">various tweets</a>, I've been working with GlusterFS in production for my personal hosting needs for just over a month.  I've also been learning quite a bit from some of the folks in the <a href="http://java.freenode.net/index.php?channel=gluster">#gluster</a> channel on <a href="http://freenode.net/">Freenode</a>.  On a few occasions I've even been able to help out with some configuration problems from other users.</p>
<p>There has been quite a bit of interest in GlusterFS as of late and I've been inundated with questions from coworkers, other system administrators and developers.  Most folks want to know about its reliability and performance in demanding production environments.  I'll try to do my best to cover the big points in this post.</p>
<p><strong>First off, here's now I'm using it in production:</strong> I have two web nodes that keep content in sync for various web sites.  They each run a GlusterFS server instance and they also mount their GlusterFS share.  I'm using the <a href="http://www.gluster.com/community/documentation/index.php/Translators/cluster/replicate">replicate translator</a> to keep both web nodes in sync with client side replication.</p>
<p>Here are my impressions after a month:</p>
<p><b>I/O speed is often tied heavily to network throughput</b><br />
This one may seem obvious, but it's not always true in all environments.  If you deal with a lot of small files like I do, a 40mbit/sec link between the Xen guests is plenty.  Adding extra throughput didn't add any performance to my servers.  However, if you wrangle large files on your servers regularly, you may want to consider higher throughput links between your servers.  I was able to push just under 900mbit/sec by using dd to create a large file within a GlusterFS mount.</p>
<p><b>Network and I/O latency are big factors for small file performance</b><br />
If you have a busy network and the latency creeps up from time to time, you'll find that your small file performance will drop significantly (especially with the replicate translator).  Without getting too nerdy (you're welcome to read the <a href="http://ftp.zresearch.com/pub/gluster/glusterfs/doc/afr.pdf">technical document on replication</a>), replication is an intensive process.  When a file is accessed, the client goes around to each server node to ensure that it not only has a copy of the file being read, but that it has the <em>correct</em> copy.  If a server didn't save a copy of a file (due to disk failure or the server being offline when the file was written), it has to be synced across the network from one of the good nodes.</p>
<p>When you write files on replicated servers, the client has to roll through the same process first.  Once that's done, it has to lock the file, write to the change log, then do the write operation, drop the change log entries, and then unlock the file.  All of those operations must be done on <em>all of the servers</em>.  High latency networks will wreak havoc on this process and cause it to take longer than it should.</p>
<p>It's quite obvious that if you have a fast, low-latency network between your servers, slow disks can still be a problem.  If the client is waiting on the server nodes' disks to write data, the read and write performance will suffer.  I've tested this in environments with fast networks and very busy RAID arrays.  Even if the network was very underutilized, slow disks could cut performance drastically.</p>
<p><b>Monitoring GlusterFS isn't easy</b><br />
When the client has communication problems with the server nodes, some weird things can happen.  I've seen situations where the client loses connections to the servers (see the next section on reliability) and the client mount simply hangs.  In other situations, the client has been knocked offline entirely and the process is missing from the process tree by the time I logged in.  Your monitoring will need to ensure that the mount is active and is responding in a timely fashion.</p>
<p>There's a <a href="http://www.sirgroane.net/2010/04/monitoring-gluster-with-nagios/">handy script</a> which allows you to monitor GlusterFS mounts via nagios that Ian Rogers put together.  Also, you can get some historical data with <a href="http://github.com/acrollet/munin-glusterfs">acrollet's munin-glusterfs plugin</a>.</p>
<p><b>GlusterFS 3.x is pretty reliable</b><br />
When I first started working with GlusterFS, I was using a version from the 2.x tree.  The Fedora package maintainer hadn't updated the package in quite some time, but I figured it should work well enough for my needs.  I found that the small file performance was lacking and the nodes often had communication issues when many files were being accessed or written simultaneously.  This improved when I built my own RPMs of 3.0.4 (and later 3.0.5) and began using those instead.</p>
<p>I did some failure testing by hard cycling the server and client nodes and found some interesting results.  First off, abruptly pulling clients had no effects on the other clients or the server nodes.  The connection eventually timed out and the servers logged the timeout as expected. </p>
<p>Abruptly pulling servers led to some mixed results.  In the 2.x branch, I saw client hangs and timeouts when I abruptly removed a server.  This appears to be mostly corrected in the 3.x branch.  If you're using replicate, it's important to keep in mind that the first server volume listed in your client's volume file is the one that will be coordinating the file and directory locking.  Should that one fall offline quickly, you'll see a hiccup in performance for a brief moment and the next server will be used for coordinating the locking.  When your original server comes back up, the locking coordination will shift back.</p>
<p><b>Conclusion</b><br />
I'm really impressed with how much GlusterFS can do with the simplicity of how it operates.  Sure, you can get better performance and more features (sometimes) from something like Lustre or GFS2, but the amount of work required to stand up that kind of cluster isn't trivial.  GlusterFS really only requires that your kernel have FUSE support (it's been in mainline kernels since 2.6.14).</p>
<p>There are some things that GlusterFS really needs in order to succeed:</p>
<ul>
<li><b>Documentation</b> - The current documentation is often out of date and confusing.  I've even found instances where the documentation contradicts itself.  While there are some good technical documents about the design of some translators, they really ought to do some more work there.</li>
<li><b>Statistics gathering</b> - It's very difficult to find out what GlusterFS is doing and where it can be optimized.  Profiling your environment to find your bottlenecks is nearly impossible with the 2.x and 3.x branches.  It doesn't make it easier when some of the performance translators actually decrease performance.</li>
<li><b>Community involvement</b> - This ties back into the documentation part a little, but it would be nice to see more participation from Gluster employees on IRC and via the mailing lists.  They're a little better with mailing list responses than other companies I've seen, but there is still room for improvement.</li>
</ul>
<p>If you're considering GlusterFS for your servers but you still have more questions, feel free to leave a comment or find me on Freenode (I'm 'rackerhacker').</p>
<p><a href="http://rackerhacker.com/2010/08/11/one-month-with-glusterfs-in-production/">One month with GlusterFS in production</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/08/11/one-month-with-glusterfs-in-production/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>WordPress + W3 Total Cache + MaxCDN How-To</title>
		<link>http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/</link>
		<comments>http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 03:56:30 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1175</guid>
		<description><![CDATA[It's no secret that I'm a big fan of WordPress as a blog and CMS platform. While it does have its problems, it's relatively simple to set up, it's extensible, and -- when properly configured -- it has great performance. The WP Super Cache plugin has been a staple on my WordPress blogs for quite [...]<p><a href="http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/">WordPress + W3 Total Cache + MaxCDN How-To</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>It's no secret that I'm a big fan of <a href="http://wordpress.org/">WordPress</a> as a blog and CMS platform.  While it does have its problems, it's relatively simple to set up, it's extensible, and -- when properly configured -- it has great performance.  The <a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP Super Cache</a> plugin has been a staple on my WordPress blogs for quite some time and it has solved almost all of my performance problems.</p>
<p>However, when you load up quite a few plugins or a heavy theme, the performance will dip due to the increased number of stylesheets, javascript files, and images.  You can compress and combine the stylesheets and javascript to decrease load times, but this may not get the performance to a level you like.</p>
<p>I was in this situation and I found a great solution: the <a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a> plugin and the <a href="http://www.maxcdn.com/">MaxCDN</a> service.</p>
<p>To get started, <a href="http://www.maxcdn.com/">visit MaxCDN's site</a> and set up an account.  Their current promotion gives you 1TB of CDN bandwidth for one year for $10 (regularly $99).  Once you sign up, do the following:</p>
<ul>
<li>Click <strong>Manage Zones</strong></li>
<li>Click <strong>Create pull zone</strong></li>
</ul>
<p>At this point, you'll see a list of form fields to complete:</p>
<ul>
<li>Enter an alias for the pull zone name</li>
<li>The origin server URL is the URL that's normally used to access your site (i.e. rackerhacker.com)</li>
<li>The custom CDN domain is the URL you want to use for your CDN (i.e. cdn.rackerhacker.com)</li>
<li>The label can be anything you'd like to use to remember which zone is which</li>
<li>Enabling compression is generally a good idea</li>
</ul>
<p>Once you save the zone, MaxCDN will give you a new domain name.  You'll want to create a CNAME record that points from your CDN URL (for me, that's cdn.rackerhacker.com) to the really long URL that MaxCDN provides.</p>
<p><strong style="color: #D42020;">STOP HERE:</strong> Ensure that all of your DNS servers are replying with the CNAME record before you continue with the W3 Total Cache installation and CDN setup.  If you proceed without waiting for that, some of your blog's visitors will get errors when they try to load content via your CDN domain.</p>
<p>You're ready for W3 Total Cache now.  Install the plugin within your WordPress installation and activate it.  Hop into the settings for the plugin and make these adjustments:</p>
<ul>
<li>Enable <strong>Page Caching</strong> and set it to <strong>Disk (enhanced)</strong></li>
<li>Enable <strong>Minify</strong> and set it to <strong>Disk</strong></li>
<li>Enable <strong>Database Caching</strong> and set it to <strong>Disk</strong></li>
<li>Leave the CDN disabled for now, but flip the <strong>CDN Type</strong> to <strong>Origin Pull (Mirror)</strong></li>
<li>Press <strong>Save changes</strong></li>
</ul>
<p>Click <strong>CDN Settings</strong> at the top of the page and configure the CDN:</p>
<ul>
<li>Enter your CDN domain (for me, it's cdn.rackerhacker.com) in the top form field</li>
<li>Leave the other options as they are by default and click <strong>Save changes</strong></li>
</ul>
<p>W3 Total Cache should prompt you to clear out your page cache, and that would be recommended at this step.  If you fully reload your blog's main page in your browser (may require you to hold SHIFT while you click reload/refresh) and check the page source, you should see your CDN URL appear for some of the javascript or CSS files.</p>
<p>You may discover that some CSS files, stylesheets, or images aren't being loaded via the CDN automatically.  Luckily, that's an easy fix.  Under the <strong>Minify Settings</strong> section of the W3 Total Cache plugin settings, scroll to the very bottom.  Add in your javascript or CSS files via the form fields at the bottom and the plugin should handle the minifying (is that even a word?) and the CDN URL rewriting for you.</p>
<p>Further reading:</p>
<ul>
<li><a href="http://www.maxcdn.com/wordpress-cdn-module.php">MaxCDN WordPress Integration Overview</a></li>
<li><a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache plugin page at wordpress.org</a></li>
<li><a href="http://www.w3-edge.com/wordpress-plugins/w3-total-cache/">W3 Total Cache main site</a></li>
</ul>
<p><a href="http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/">WordPress + W3 Total Cache + MaxCDN How-To</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2010/02/13/wordpress-w3-total-cache-maxcdn/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>WordPress and PHP 5.3.x: update_comment_type_cache() expected to be a reference</title>
		<link>http://rackerhacker.com/2009/12/21/wordpress-and-php-5-3-x-update_comment_type_cache-expected-to-be-a-reference/</link>
		<comments>http://rackerhacker.com/2009/12/21/wordpress-and-php-5-3-x-update_comment_type_cache-expected-to-be-a-reference/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 14:02:02 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1078</guid>
		<description><![CDATA[I upgraded a Fedora 11 instance to Fedora 12 and found the following error at the top of one of my WordPress blogs: Parameter 1 to update_comment_type_cache() expected to be a reference, value given in wp-includes/plugin.php on line 166 The problem wasn't in a plugin, actually. It was within my theme's (R755-light) functions.php: function update_comment_type_cache&#40;&#38;$queried_posts&#41; [...]<p><a href="http://rackerhacker.com/2009/12/21/wordpress-and-php-5-3-x-update_comment_type_cache-expected-to-be-a-reference/">WordPress and PHP 5.3.x: update_comment_type_cache() expected to be a reference</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I upgraded a Fedora 11 instance to Fedora 12 and found the following error at the top of one of my WordPress blogs:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">Parameter 1 to update_comment_type_cache() expected to be a reference, 
value given in wp-includes/plugin.php on line 166</pre></div></div>

<p>The problem wasn't in a plugin, actually.  It was within my theme's (<a href="http://wordpress.org/extend/themes/r755-light">R755-light</a>) functions.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> update_comment_type_cache<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$queried_posts</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>The temporary fix is to remove the <code>&#038;</code> from that line so it looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> update_comment_type_cache<span style="color: #009900;">&#40;</span><span style="color: #000088;">$queried_posts</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></pre></div></div>

<p>After clearing out the WP Super Cache, the page was loading properly again.  It turns out that the function actually calculates how many comments are available for a given post, so that functionality is working properly right now.  A few theme authors are already releasing new versions to fix this bug, but my theme's author has not.</p>
<blockquote><p>The credit for the fix goes to someone in the <a href="http://wordpress.org/support/topic/297878?replies=8">WordPress forums</a>.</p></blockquote>
<p><a href="http://rackerhacker.com/2009/12/21/wordpress-and-php-5-3-x-update_comment_type_cache-expected-to-be-a-reference/">WordPress and PHP 5.3.x: update_comment_type_cache() expected to be a reference</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2009/12/21/wordpress-and-php-5-3-x-update_comment_type_cache-expected-to-be-a-reference/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Upgraded to WordPress 2.9</title>
		<link>http://rackerhacker.com/2009/12/21/upgraded-to-wordpress-2-9/</link>
		<comments>http://rackerhacker.com/2009/12/21/upgraded-to-wordpress-2-9/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 13:47:04 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1074</guid>
		<description><![CDATA[If you haven't upgraded your WordPress installation to version 2.9 yet, you might want to consider doing that soon. There are quite a few improvements, bug fixes and security features available in the new version. The automatic upgrade via the admin interface actually worked just fine for me. Of course, I backed up my database [...]<p><a href="http://rackerhacker.com/2009/12/21/upgraded-to-wordpress-2-9/">Upgraded to WordPress 2.9</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>If you haven't <a href="http://codex.wordpress.org/Upgrading_WordPress">upgraded</a> your <a href="http://wordpress.org/">WordPress</a> installation to version 2.9 yet, you might want to consider doing that soon.  There are quite a few <a href="http://core.trac.wordpress.org/query?status=closed&#038;milestone=2.9">improvements, bug fixes and security features</a> available in the new version.</p>
<p>The automatic upgrade via the admin interface actually worked just fine for me.  Of course, I backed up my database and files first, just to be sure.</p>
<p><a href="http://rackerhacker.com/2009/12/21/upgraded-to-wordpress-2-9/">Upgraded to WordPress 2.9</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2009/12/21/upgraded-to-wordpress-2-9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Upgraded to WordPress 2.8.6 with some theme changes</title>
		<link>http://rackerhacker.com/2009/11/16/upgraded-to-wordpress-2-8-6-with-some-theme-changes/</link>
		<comments>http://rackerhacker.com/2009/11/16/upgraded-to-wordpress-2-8-6-with-some-theme-changes/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 04:32:22 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=1035</guid>
		<description><![CDATA[I've upgraded the blog to WordPress 2.8.6 after I read about the registered user exploits. Also, I've dropped the Adsimple theme I was using, and I'm now using a slightly modified Dojo theme. It's a little easier on the eyes, but it's still lightweight enough to be fast on mobile broadband connections. Let me know [...]<p><a href="http://rackerhacker.com/2009/11/16/upgraded-to-wordpress-2-8-6-with-some-theme-changes/">Upgraded to WordPress 2.8.6 with some theme changes</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've upgraded the blog to WordPress 2.8.6 after I read about the <a href="http://wordpress.org/development/2009/11/wordpress-2-8-6-security-release/">registered user exploits</a>.</p>
<p>Also, I've dropped the <a href="http://wordpress.org/extend/themes/adsimple">Adsimple</a> theme I was using, and I'm now using a slightly modified <a href="http://spaceninja.com/dojo/">Dojo</a> theme.  It's a little easier on the eyes, but it's still lightweight enough to be fast on mobile broadband connections.</p>
<p>Let me know what you think!</p>
<p><a href="http://rackerhacker.com/2009/11/16/upgraded-to-wordpress-2-8-6-with-some-theme-changes/">Upgraded to WordPress 2.8.6 with some theme changes</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2009/11/16/upgraded-to-wordpress-2-8-6-with-some-theme-changes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Requiring SSL encryption for WordPress administration</title>
		<link>http://rackerhacker.com/2009/07/31/requiring-ssl-encryption-for-wordpress-administration/</link>
		<comments>http://rackerhacker.com/2009/07/31/requiring-ssl-encryption-for-wordpress-administration/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 13:13:26 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=955</guid>
		<description><![CDATA[I was digging around for WordPress plugins last night that would allow me to secure the administrative login page for my WordPress installations. Most of the plugins are only compatible with WordPress 2.7.x or earlier, so I was a little concerned about them working with WordPress 2.8.2. Then I stumbled upon the WordPress documentation that [...]<p><a href="http://rackerhacker.com/2009/07/31/requiring-ssl-encryption-for-wordpress-administration/">Requiring SSL encryption for WordPress administration</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I was digging around for <a href="http://wordpress.org/">WordPress</a> plugins last night that would allow me to secure the administrative login page for my WordPress installations.  Most of the plugins are only compatible with WordPress 2.7.x or earlier, so I was a little concerned about them working with WordPress 2.8.2.</p>
<p>Then I stumbled upon the <a href="http://codex.wordpress.org/Administration_Over_SSL">WordPress documentation</a> that shows you how to require SSL with no plugins at all.  If you're using WordPress 2.6+, you can use these super-simple instructions:</p>
<p>Require encryption just for the /wp-admin/ login, but leave the rest of the administrative area on HTTP:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Add this line to wp-config.php
</span><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'FORCE_SSL_LOGIN'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>To encrypt the login and the entire administrative area:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Add this line to wp-config.php
</span><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'FORCE_SSL_ADMIN'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Of course, for this to work, you'll need virtual hosts on ports 80 and 443 for your blog.  Also, you'll need an SSL certificate for your blog.  You can snag one from a <a href="https://ssl.trustwave.com/solutions-overview.php">reputable provider</a> or <a href="http://rackerhacker.com/2007/08/02/generate-self-signed-certificate-and-key-in-one-line/">make your own</a>.</p>
<p><a href="http://rackerhacker.com/2009/07/31/requiring-ssl-encryption-for-wordpress-administration/">Requiring SSL encryption for WordPress administration</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2009/07/31/requiring-ssl-encryption-for-wordpress-administration/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Upgraded WordPress to 2.8.2</title>
		<link>http://rackerhacker.com/2009/07/29/upgraded-wordpress-to-2-8-2/</link>
		<comments>http://rackerhacker.com/2009/07/29/upgraded-wordpress-to-2-8-2/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 22:22:13 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=951</guid>
		<description><![CDATA[I finally made it around to upgrading WordPress to 2.8.2 and it seems to be working like a charm. It looks like there were some bug fixes and a XSS vulnerability was patched. Upgraded WordPress to 2.8.2 is a post from: Major Hayden's Racker Hacker blog. Thanks for following the blog via the RSS feed. [...]<p><a href="http://rackerhacker.com/2009/07/29/upgraded-wordpress-to-2-8-2/">Upgraded WordPress to 2.8.2</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I finally made it around to upgrading WordPress to 2.8.2 and it seems to be working like a charm.  It looks like there were some bug fixes and a <a href="http://wordpress.org/development/2009/07/wordpress-2-8-2/">XSS vulnerability was patched</a>.</p>
<p><a href="http://rackerhacker.com/2009/07/29/upgraded-wordpress-to-2-8-2/">Upgraded WordPress to 2.8.2</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2009/07/29/upgraded-wordpress-to-2-8-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ugly upgrade path from WordPress 2.7.1 to 2.8</title>
		<link>http://rackerhacker.com/2009/06/13/ugly-upgrade-path-from-wordpress-2-7-1-to-2-8/</link>
		<comments>http://rackerhacker.com/2009/06/13/ugly-upgrade-path-from-wordpress-2-7-1-to-2-8/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 17:48:15 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=909</guid>
		<description><![CDATA[When I tried to do an automatic upgrade from WordPress 2.7.1 to 2.8 yesterday, it failed miserably. The files were all put in place, but when I tried to load /wp-admin/upgrade.php, this error popped up: Fatal error: Call to undefined method wpdb::has_cap() in /path/to/wordpress/wp-admin/includes/schema.php on line 22 I was perplexed at the error, so I [...]<p><a href="http://rackerhacker.com/2009/06/13/ugly-upgrade-path-from-wordpress-2-7-1-to-2-8/">Ugly upgrade path from WordPress 2.7.1 to 2.8</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>When I tried to do an automatic upgrade from WordPress 2.7.1 to 2.8 yesterday, it failed miserably.  The files were all put in place, but when I tried to load <code>/wp-admin/upgrade.php</code>, this error popped up:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">Fatal error: Call to undefined method wpdb::has_cap() in 
/path/to/wordpress/wp-admin/includes/schema.php on line 22</pre></div></div>

<p>I was perplexed at the error, so I restored from a backup and began <a href="http://codex.wordpress.org/Upgrading_WordPress">upgrading manually</a>.  The manual upgrades have always worked well for me in the past, so I figured this would probably fix the problem.  After the upgrade, I went to <code>/wp-admin/upgrade.php</code> and saw:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">Fatal error: Call to undefined method wpdb::has_cap() in 
/path/to/wordpress/wp-admin/includes/schema.php on line 22</pre></div></div>

<p><strong>What the heck is going on?</strong>  I restored from a backup, tried the manual upgrade again, and it still failed.  I took a look at the lines causing the problem in <code>schema.php</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">has_cap</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'collation'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">charset</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
		<span style="color: #000088;">$charset_collate</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;DEFAULT CHARACTER SET <span style="color: #006699; font-weight: bold;">$wpdb-&gt;charset</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">collate</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
		<span style="color: #000088;">$charset_collate</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot; COLLATE <span style="color: #006699; font-weight: bold;">$wpdb-&gt;collate</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>I figured I could comment out the if statement and probably still be safe:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// if ( $wpdb-&gt;has_cap( 'collation' ) ) {</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">charset</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
		<span style="color: #000088;">$charset_collate</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;DEFAULT CHARACTER SET <span style="color: #006699; font-weight: bold;">$wpdb-&gt;charset</span>&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">collate</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
		<span style="color: #000088;">$charset_collate</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot; COLLATE <span style="color: #006699; font-weight: bold;">$wpdb-&gt;collate</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// }</span></pre></div></div>

<p><strong>Success?</strong>  I could make it through the <code>upgrade.php</code> part fine at this point, but whenever I tried to add a tag to a post, it wasn't saving to the database.  I caught this error in my apache logs:</p>
<p><code>[Fri Jun 12 23:45:03 2009] [error] [client 72.183.200.144] WordPress database error Duplicate entry 'debian' for key 'slug' for query INSERT INTO wp_terms (`name`,`slug`,`term_group`) VALUES ('debian','debian','0') made by wp_insert_term, referer: http://rackerhacker.com/wp-admin/post.php?action=edit&#038;post=877</code></p>
<p><strong>Frustration quickly ensued.</strong>  I moved my <code>/wp-content/</code> folder out of the way and replaced it with the standard WordPress stuff, but that didn't help.  I moved plugins out of the way, one by one, but that didn't fix it either.  Then I spotted a strange file sitting in <code>/wp-content/</code> called <code>db.php</code>.  When I opened it, I found a <a href="http://pastie.org/private/rmbmk3ohgmdbujotnrg">lot of database setup classes for mysqli</a>.</p>
<p>I renamed it to <code>db.pleasedonteverrunthisphp</code> and I was able to save tags properly.  So far, I haven't found any issues after I made chat change.</p>
<p>Does anyone know where that file might have come from?  I don't remember adding it myself, so I'm wondering if it was ever packaged with a WordPress plugin or a WordPress installation.  I hope this helps someone else!</p>
<p><a href="http://rackerhacker.com/2009/06/13/ugly-upgrade-path-from-wordpress-2-7-1-to-2-8/">Ugly upgrade path from WordPress 2.7.1 to 2.8</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2009/06/13/ugly-upgrade-path-from-wordpress-2-7-1-to-2-8/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Moved static content to Cloud Files</title>
		<link>http://rackerhacker.com/2008/12/30/moved-static-content-to-cloud-files/</link>
		<comments>http://rackerhacker.com/2008/12/30/moved-static-content-to-cloud-files/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 05:53:08 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[cloud files]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=655</guid>
		<description><![CDATA[I've moved all of this blog's CSS, javascript, and most of the images to Rackspace's Cloud Files so they can be served via the Limelight CDN. So far, this has cut the load times in half. Most of the edits aren't supported by WordPress, so I ventured into the source code for my plugins as [...]<p><a href="http://rackerhacker.com/2008/12/30/moved-static-content-to-cloud-files/">Moved static content to Cloud Files</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've moved all of this blog's CSS, javascript, and most of the images to Rackspace's <a href="http://www.mosso.com/cloudfiles.jsp">Cloud Files</a> so they can be served via the <a href="http://www.limelightnetworks.com/">Limelight CDN</a>.  So far, this has <a href="http://cdn.cloudfiles.mosso.com/c8031/rackerhacker_static_content_cdn_psinet_london.png">cut the load times in half</a>.</p>
<p>Most of the edits aren't supported by WordPress, so I ventured into the source code for my plugins as well as my theme and adjusted the links to point to the mirrored files on the Cloud Files service.</p>
<p><a href="http://rackerhacker.com/2008/12/30/moved-static-content-to-cloud-files/">Moved static content to Cloud Files</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/12/30/moved-static-content-to-cloud-files/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Upgraded to WordPress 2.7</title>
		<link>http://rackerhacker.com/2008/12/25/upgraded-to-wordpress-27/</link>
		<comments>http://rackerhacker.com/2008/12/25/upgraded-to-wordpress-27/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 03:45:39 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=647</guid>
		<description><![CDATA[I've upgraded the blog successfully to WordPress 2.7 (with a bit of frustration). When I attempted the upgrade, I received this error: Call to undefined method wpdb::has_cap() in schema.php on line 22 Even though I followed the instructions on the WordPress site, and I disabled all of my plugins, the error kept appearing. The only [...]<p><a href="http://rackerhacker.com/2008/12/25/upgraded-to-wordpress-27/">Upgraded to WordPress 2.7</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've upgraded the blog successfully to <a href="http://wordpress.org/">WordPress 2.7</a> (with a bit of frustration).  When I attempted the upgrade, I received this error:</p>
<p><code>Call to undefined method wpdb::has_cap() in schema.php on line 22</code></p>
<p>Even though I followed the instructions on the WordPress site, and I disabled all of my plugins, the error kept appearing.  The only parts of the site that remained unchanged after the upgrade were the <code>wp-config.php</code> page and the <code>wp-content</code> directory.  I merged the changes in wp-config.php, but the error was still present.</p>
<p>In frustration, I renamed the wp-content directory to a temporary name and uploaded the <code>wp-content</code> provided from the WordPress tarball.  The upgrade completed without a problem!  I deleted the new <code>wp-content</code> directory, put the old <code>wp-content</code> directory back in place, and WordPress sprang to life!</p>
<p>It's certainly possible that a WordPress plugin blocked the upgrade process even though it was disabled in the database.</p>
<p><a href="http://rackerhacker.com/2008/12/25/upgraded-to-wordpress-27/">Upgraded to WordPress 2.7</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/12/25/upgraded-to-wordpress-27/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Upgraded to WordPress 2.6.5</title>
		<link>http://rackerhacker.com/2008/12/01/upgraded-to-wordpress-265/</link>
		<comments>http://rackerhacker.com/2008/12/01/upgraded-to-wordpress-265/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 00:18:51 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=620</guid>
		<description><![CDATA[If you run a WordPress blog, and you haven't upgraded to WordPress 2.6.5, you might want to make the move soon. There were a few bugs and security issues fixed, along with other changes. Upgraded to WordPress 2.6.5 is a post from: Major Hayden's Racker Hacker blog. Thanks for following the blog via the RSS [...]<p><a href="http://rackerhacker.com/2008/12/01/upgraded-to-wordpress-265/">Upgraded to WordPress 2.6.5</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>If you run a WordPress blog, and you haven't <a href="http://codex.wordpress.org/Upgrading_WordPress">upgraded</a> to <a href="http://wordpress.org/download/">WordPress 2.6.5</a>, you might want to make the move soon.  There were a few bugs and security issues fixed, along with <a href="http://codex.wordpress.org/Version_2.6.5">other changes</a>.</p>
<p><a href="http://rackerhacker.com/2008/12/01/upgraded-to-wordpress-265/">Upgraded to WordPress 2.6.5</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/12/01/upgraded-to-wordpress-265/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working hard on PleskHacker</title>
		<link>http://rackerhacker.com/2008/09/25/working-hard-on-pleskhacker/</link>
		<comments>http://rackerhacker.com/2008/09/25/working-hard-on-pleskhacker/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 17:00:19 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[plesk]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=501</guid>
		<description><![CDATA[Some of you may have already noticed from my Twitter feed, but I've started a complete re-write of pleskhacker.com in an easier-to-use format. The old site was done in Dokuwiki, and I found that it didn't scale too well. The new site uses WordPress, and the performance is already improving. Another improvement to the site [...]<p><a href="http://rackerhacker.com/2008/09/25/working-hard-on-pleskhacker/">Working hard on PleskHacker</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>Some of you may have already noticed from my <a href="http://twitter.com/rackerhacker/">Twitter feed</a>, but I've started a complete re-write of <a href="http://pleskhacker.com/">pleskhacker.com</a> in an easier-to-use format.  The old site was done in Dokuwiki, and I found that it didn't scale too well.  The new site uses WordPress, and the performance is already improving.</p>
<p>Another improvement to the site is that it is now hosted on <a href="http://mosso.com/">Mosso</a>.  This should allow the site to handle a lot more traffic and be more redundant than the original configuration.  Eventually, I'll move this blog to Mosso&#0174; as well.</p>
<p><strong>What is PleskHacker?</strong>  It's part of an effort to provide more detailed documentation of Plesk for system administrators.  PleskHacker has documentation covering one third of the Plesk database so far.  It includes definitions for each column and table, but it also shows relationships between tables so you can create your own JOIN queries with ease.</p>
<p><a href="http://rackerhacker.com/2008/09/25/working-hard-on-pleskhacker/">Working hard on PleskHacker</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/09/25/working-hard-on-pleskhacker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New look</title>
		<link>http://rackerhacker.com/2008/09/20/new-look/</link>
		<comments>http://rackerhacker.com/2008/09/20/new-look/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 20:19:05 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=486</guid>
		<description><![CDATA[I've decided to adjust the look of this blog to make it easier to read and faster to download. My old Mandigo theme was great, but it required each user to download about 200kb worth of content to see the blog. The new theme is about 30-40kb per download and it renders faster in all [...]<p><a href="http://rackerhacker.com/2008/09/20/new-look/">New look</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've decided to adjust the look of this blog to make it easier to read and faster to download.  My old Mandigo theme was great, but it required each user to download about 200kb worth of content to see the blog.  The new theme is about 30-40kb per download and it renders faster in all the browsers I've tested.</p>
<p>Leave a comment and let me know what you think of the changes.  Have a great weekend!</p>
<p><a href="http://rackerhacker.com/2008/09/20/new-look/">New look</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/09/20/new-look/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Upgraded to WordPress 2.6.2</title>
		<link>http://rackerhacker.com/2008/09/09/upgraded-to-wordpres-262/</link>
		<comments>http://rackerhacker.com/2008/09/09/upgraded-to-wordpres-262/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 03:16:53 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=460</guid>
		<description><![CDATA[I've updated the blog to WordPress 2.6.2 tonight. There are some relatively serious security concerns with some of the code in WordPress 2.6.1, so I'd recommend upgrading at your earliest convenience. Slide on over to the WordPress site and download it now. Upgraded to WordPress 2.6.2 is a post from: Major Hayden's Racker Hacker blog. [...]<p><a href="http://rackerhacker.com/2008/09/09/upgraded-to-wordpres-262/">Upgraded to WordPress 2.6.2</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've updated the blog to WordPress 2.6.2 tonight.  There are some <a href="http://codex.wordpress.org/Changelog/2.6.2">relatively serious security concerns</a> with some of the code in WordPress 2.6.1, so I'd recommend upgrading at your earliest convenience.</p>
<p>Slide on over to the <a href="http://wordpress.org/">WordPress</a> site and <a href="http://wordpress.org/download/">download it now</a>.</p>
<p><a href="http://rackerhacker.com/2008/09/09/upgraded-to-wordpres-262/">Upgraded to WordPress 2.6.2</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/09/09/upgraded-to-wordpres-262/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgraded to WordPress 2.6.1</title>
		<link>http://rackerhacker.com/2008/08/30/upgraded-to-wordpress-261/</link>
		<comments>http://rackerhacker.com/2008/08/30/upgraded-to-wordpress-261/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 02:17:15 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=398</guid>
		<description><![CDATA[I've just upgraded this blog to WordPress 2.6.1.  If you haven't upgraded yours, you may want to get started. You can review the changelog as well. Upgraded to WordPress 2.6.1 is a post from: Major Hayden's Racker Hacker blog. Thanks for following the blog via the RSS feed. Please don't copy my posts or quote [...]<p><a href="http://rackerhacker.com/2008/08/30/upgraded-to-wordpress-261/">Upgraded to WordPress 2.6.1</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I've just upgraded this blog to WordPress 2.6.1.  If you haven't upgraded yours, you may want to <a href="http://wordpress.org/download/">get started</a>.  You can review the <a href="http://codex.wordpress.org/Changelog/2.6.1">changelog</a> as well.</p>
<p><a href="http://rackerhacker.com/2008/08/30/upgraded-to-wordpress-261/">Upgraded to WordPress 2.6.1</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/08/30/upgraded-to-wordpress-261/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First post using the WordPress iPhone application</title>
		<link>http://rackerhacker.com/2008/07/22/first-post-using-the-wordpress-iphone-application/</link>
		<comments>http://rackerhacker.com/2008/07/22/first-post-using-the-wordpress-iphone-application/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 14:50:55 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2008/07/22/first-post-using-the-wordpress-iphone-application/</guid>
		<description><![CDATA[If you haven't downloaded the new WordPress application for the iPhone yet, you might want to check it out. So far, it seems to work really well! First post using the WordPress iPhone application is a post from: Major Hayden's Racker Hacker blog. Thanks for following the blog via the RSS feed. Please don't copy [...]<p><a href="http://rackerhacker.com/2008/07/22/first-post-using-the-wordpress-iphone-application/">First post using the WordPress iPhone application</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>If you haven't downloaded the new WordPress application for the iPhone yet, you might want to check it out. So far, it seems to work really well!</p>
<p><a href="http://rackerhacker.com/2008/07/22/first-post-using-the-wordpress-iphone-application/">First post using the WordPress iPhone application</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/07/22/first-post-using-the-wordpress-iphone-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.6</title>
		<link>http://rackerhacker.com/2008/07/15/wordpress-26/</link>
		<comments>http://rackerhacker.com/2008/07/15/wordpress-26/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 20:30:43 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[Blog Posts]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/?p=323</guid>
		<description><![CDATA[WordPress 2.6 is now available, and I've just upgraded today. If you haven't upgraded yet, download it and follow the instructions. WordPress 2.6 is a post from: Major Hayden's Racker Hacker blog. Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.<p><a href="http://rackerhacker.com/2008/07/15/wordpress-26/">WordPress 2.6</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://wordpress.org/development/2008/07/wordpress-26-tyner/">WordPress 2.6</a> is now available, and I've just upgraded today.  If you haven't upgraded yet, <a href="http://wordpress.org/download/">download it</a> and <a href="http://codex.wordpress.org/Upgrading_WordPress">follow the instructions</a>.</p>
<p><a href="http://rackerhacker.com/2008/07/15/wordpress-26/">WordPress 2.6</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/07/15/wordpress-26/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress upgraded to 2.3.3</title>
		<link>http://rackerhacker.com/2008/02/05/wordpress-upgraded-to-233/</link>
		<comments>http://rackerhacker.com/2008/02/05/wordpress-upgraded-to-233/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 00:48:17 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2008/02/05/wordpress-upgraded-to-233/</guid>
		<description><![CDATA[I botched my upgrade to 2.3.3 for a short while (sorry for the errors!), but everything is back to normal now. There's a critical XMLRPC vulnerability in 2.3.2, so you might want to upgrade soon! WordPress upgraded to 2.3.3 is a post from: Major Hayden's Racker Hacker blog. Thanks for following the blog via the [...]<p><a href="http://rackerhacker.com/2008/02/05/wordpress-upgraded-to-233/">WordPress upgraded to 2.3.3</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I botched my upgrade to 2.3.3 for a short while (sorry for the errors!), but everything is back to normal now.  There's a critical XMLRPC vulnerability in 2.3.2, so you might want to <a href="http://wordpress.org/download/">upgrade soon</a>!</p>
<p><a href="http://rackerhacker.com/2008/02/05/wordpress-upgraded-to-233/">WordPress upgraded to 2.3.3</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2008/02/05/wordpress-upgraded-to-233/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why you should use caching for WordPress blogs</title>
		<link>http://rackerhacker.com/2007/12/06/why-you-should-use-caching-for-wordpress-blogs/</link>
		<comments>http://rackerhacker.com/2007/12/06/why-you-should-use-caching-for-wordpress-blogs/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 18:09:42 +0000</pubDate>
		<dc:creator>Major Hayden</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://rackerhacker.com/2007/12/06/why-you-should-use-caching-for-wordpress-blogs/</guid>
		<description><![CDATA[I had some time to do some testing of my blog's performance today, and I discovered how much of a difference the WP-Cache plugin makes. This blog runs on a server with dual Xeon Woodcrest CPU's, 64-bit CentOS 4.5 and a 100mbit network connection. Here's the first test with WP-Cache turned off: $ http_load -parallel [...]<p><a href="http://rackerhacker.com/2007/12/06/why-you-should-use-caching-for-wordpress-blogs/">Why you should use caching for WordPress blogs</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></description>
			<content:encoded><![CDATA[<p>I had some time to do some testing of my blog's performance today, and I discovered how much of a difference the <a href="http://mnm.uib.es/gallir/wp-cache-2/">WP-Cache</a> plugin makes.</p>
<p>This blog runs on a server with dual Xeon Woodcrest CPU's, 64-bit CentOS 4.5 and a 100mbit network connection.  Here's the first test with WP-Cache turned off:</p>
<p><code>$ http_load -parallel 10 -seconds 30 urltocheck.txt<br />
<strong>346</strong> fetches, 10 max parallel, 1.78616e+07 bytes, in 30 seconds<br />
51623.2 mean bytes/connection<br />
11.5333 fetches/sec, 595387 bytes/sec<br />
msecs/connect: 15.1661 mean, 16.97 max, 14.922 min<br />
msecs/first-response: 445.984 mean, 2328.82 max, 189.62 min<br />
HTTP response codes:<br />
  code 200 -- 346</code></p>
<p>346 fetches in 30 seconds is not a very exciting performance number for me.  That's just over 10 fetches per second, and on a busy day, I sometimes reach that number.  Also, while this test ran, the server's CPU usage was extremely high and over 80% of all four cores were in use.  The iowait was about 20% across the board.</p>
<p>I decided to turn on WP-Cache and give it another go with the same test:</p>
<p><code>$ http_load -parallel 10 -seconds 30 urltocheck.txt<br />
<strong>3482</strong> fetches, 10 max parallel, 1.79671e+08 bytes, in 30 seconds<br />
51600 mean bytes/connection<br />
116.067 fetches/sec, 5.98904e+06 bytes/sec<br />
msecs/connect: 15.2259 mean, 18.257 max, 14.891 min<br />
msecs/first-response: 20.7297 mean, 69.39 max, 18.861 min<br />
HTTP response codes:<br />
  code 200 -- 3482</code></p>
<p>Wow, that's a 10-fold improvement, and I can handle over 100 requests per second with 10 parallel requests.  Also, the iowait dropped to 5%, and overall CPU usage remained under 8%.</p>
<p>I kicked it up to 20 parallel connections and tried again:</p>
<p><code>$ http_load -parallel 20 -seconds 30 urltocheck.txt<br />
<strong>5817</strong> fetches, 20 max parallel, 3.02176e+08 bytes, in 30 seconds<br />
51947 mean bytes/connection<br />
193.9 fetches/sec, 1.00725e+07 bytes/sec<br />
msecs/connect: 17.9175 mean, 30.831 max, 14.911 min<br />
msecs/first-response: 24.5352 mean, 97.475 max, 18.978 min<br />
HTTP response codes:<br />
  code 200 -- 5817</code></p>
<p>Almost 194 connections served per second!  Also, the CPU usage was only at about 14% during the duration of the test.</p>
<p>I decided to tempt fate and see if I could blow the roof off the test with 50 parallel connections:</p>
<p><code>$ http_load -parallel 50 -seconds 30 urltocheck.txt<br />
<strong>5794</strong> fetches, 50 max parallel, 2.99718e+08 bytes, in 30 seconds<br />
51729 mean bytes/connection<br />
193.133 fetches/sec, 9.99059e+06 bytes/sec<br />
msecs/connect: 43.286 mean, 63.878 max, 14.942 min<br />
msecs/first-response: 68.967 mean, 202.854 max, 20.014 min<br />
HTTP response codes:<br />
  code 200 -- 5794</code></p>
<p>The performance suffered a bit, but the server was still pumping out almost 200 connections per second, and I'm okay with that. Well, unless anyone has a spare Cisco 11501 laying around that I could have. <img src='http://rackerhacker.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   And, of course, one additional server.</p>
<p>Just as a sidenote, I installed <a href="http://www.zend.com/en/products/guard/optimizer/">Zend Optimizer v3.3</a> on the server and performance actually dropped by 1%-3% for each test.  I found that a bit surprising.</p>
<p><em>I used <a href="http://www.acme.com/software/http_load/">http_load</a> to perform the benchmarks after I found it on <a href="http://calebgroom.com/archives/185">Caleb's blog</a>.</em></p>
<p><a href="http://rackerhacker.com/2007/12/06/why-you-should-use-caching-for-wordpress-blogs/">Why you should use caching for WordPress blogs</a> is a post from: Major Hayden's <a href="http://rackerhacker.com">Racker Hacker</a> blog. 
<p>Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.</p></p>
]]></content:encoded>
			<wfw:commentRss>http://rackerhacker.com/2007/12/06/why-you-should-use-caching-for-wordpress-blogs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

