After a month (count them, 30 days!) of working on the new site I've rolled it out. The amount of work involved in completely recreating a working production website that's been online for years is quite a lot. Below I've created a table to give you an idea of what was done. 

 

  Old Site  New Site 
Host Operating System     CentOS 5.3      Xen Cloud Platform 1.1    
Hypervisor  Xen 3.4.0  Xen 3.4.2
Virtualization Stack  OSS Xen  XAPI  
Guest Operating System  CentOS 5.6  CentOS 6.1
Memory   2 GB  7 GB
Guest Operating System        CentOS 5.6  CentOS 6.1
Storage Subsystem   File based local disk       iSCSI SAN
Content Management System    Joomla! 1.5 Legacy mode   Joomla! 1.7 Native mode
Blogging component  Superblogger  K2
Directory component  Sobi2  Sobi Pro
Photo Gallery  Gallery 2.1  Gallery 2.3
Gallery Bridge  g2bridge  Jfusion
Gallery Theme  PGtheme  ?
Joomla Theme  Modified JA-Purity  Modified JA-Purity ii

 

If you look at this chart it may not seem like it was that big of a deal however, it was.

Hardware:

I built new hardware based around AMD's Phenom II hexacore CPU. The old server has been awesome but just buying ram to upgrade it was getting difficult and expensive. Also since that server is a real server with real jet airplane speed fans it has to be in remote parts of the building otherwise you'd need new eardrums. Because of this the network connection was tunneled across a wifi link. Not ideal but it's always worked. In order to gain reliability the new server is wired directly into the ISPs connection. I'm looking into a dedicated connection and another speed increase.

Virtualization Stack:

Open source Xen has served me well for many years but as I move everything over to clouds I've been rolling out more Xen Cloud Platform installations. I could have cheated and just migrated the old disk image but I really wanted to take the time to create a new fresh disk image and also roll out CentOS 6.x. .While going through this process I created new XCP howtos on how to install CentOS 6.x on Xen Cloud Platform.

Content Management System:

Once I had that done and the bugs worked out I created I migrated Joomla! 1.5 to Joomla 1.7. This is NOT an upgrade, it's an entire migration. There are some scripts that help you bit in reality what they do is move your articles over and not much more. Because ALL of my components, modules and plugins stopped working on Joomla 1.7 I had to find replacements. The big one was Superblogger which doesn't have a Joomla 1.7 version.

After a great deal of research I went with K2 made by the same folks as Superblogger. K2 isn't an exact replacement since Superblogger is made for blogging and includes trackbacks, Disqus comments and some theming. K2 is really a component that replaces a lot of Joomla! Ironically a lot of it doesn't need to be replaced and I hope in the future we'll see a newer leaner K2. For instance K2 provides nested categories and access control lists, two features not included in Joomla 1.5. However, Joomla! 1.7 has both so K2 doesn't really need them anymore. Using K2 is really an all or nothing proposal since it takes over all of Joomla! categories/articles, access control and some theming. It does NOT include Disqus commenting but there is an extra plugin for that... which unfortunately doesn't work on Joomla! 1.7 (common theme here) so I went with SP Comments.

I used Sobi2 for my restaurant reviews and recipes which as you may have guess also didn't work. The folks that make Sobi have come out with Sobi Pro which won't import Sobi2 data. Sobi Pro looks pretty good and will allow me to get around the hack I had to use to run two copies of Sobi2 in one instance of Joomla!. Most of Sobi Pro's additional functionality though is commercial so it looks like I'll be paying out some money. One example is a tie in with Google maps. It would be nice to do a restaurant review with address and have a Google map appear automatically. 

My old photo gallery was Gallery2 embedded in Joomla! 1.5 using the g2bridge component which as you may have guessed isn't available for Joomla 1.7. I found a replacement in Jfusion which not only will bridge Gallery2 but PHPbb and a bunch of other software. However, I can't figure out how to provide a menu item that links to a specific gallery. I could do this with g2bridge. I also used g2image so I could insert Gallery2 images in articles. I don't have an equivalent with JFusion. I used the PGtheme theme for my embedded Gallery2 which (wait for it....) doesn't work with the downloadable version of Gallery2!  Gallery3 is out but JFusion doesn't support it so the latest version of Gallery2 is what I will use. I haven't even begun writing a new theme for it so it's currently pretty ugly. 

My old Joomla 1.5 theme was JA-Purity which I've always liked. I hacked it up pretty good and it eventually started having problems. JA-Purity doesn't work on Joomla 1.7 (why would it???) but the folks that developed it came up with JA-Purity ii for Joomla! 1.7 which I've also spent quite a lot of time hacking on to get it near where I want it.

In addition, my contact module had to be replaced, my visitor counter had to be replaced, all articles tagged for the new Tag Cloud (which is nice) and more. I've spent so much time on this migration that I don't even remember what I've done anymore. I wished now that I'd documented it all. 

What's left?

  1. Keep working on the Joomla 1.7 theme. There's a ton of cleaning up and redesigning I want to do.
  2. Get serious about SEO. I have SEF working as well as I can so my URLs are better. 
  3. Crate a Gallery2 theme
  4. Create the entire directory structure in Sobi Pro so I can get back to writing reviews and putting recipes up
  5. Find a way to link to specific Gallery2 gallery.
  6. Create metadata for everything
  7. Finish tagging the last 100 articles for the tag cloud
  8. Find a downloads component that works with Joomla 1.7
  9. Find a way to handle weblinks in K2 instead of Joomla! articles
  10. Get an autotweet/facebook plugin
  11. Install tracking/analytics component of some sort
  12. Experiment with putting Varnish between the webserver and the ISP (which is why there's no login form on the front page)
  13. Create a URL map of my old comments mapped to the new URLs for Disqus. Until then old comments won't link properly
  14. Experiment with a server side PHP accelerator
  15. Perhaps look into Adwords/Referrals
  16. Create content!

 

That's it! It's been a lot of work to get a new site that does exactly what the old one accomplished and it's still not quite there.