presenting “blog on a narwhal”
Since we’re just about to 11.04 beta2, I figured its high time I start using Ubuntu Server for my personal blog.
What? Almost a year at Canonical and my blog wasn’t on Ubuntu server? Well, for over 5 years now, a personal friend has provided me with a free Xen virtual machine to run my blog on. I migrated it off of Debian then, which was sad for me, but back then I was so focused on working I didn’t have time or resources to be picky, so I said OK.
Fast forward to now, I’ve been working on Ubuntu Server and getting ribbed by my co-workers about that “crappy CentOS xen box” they’d see me logged into.
Well thats all over now. I decided to marry all the new tech I’ve been playing with lately into one glorious blog migration.
The old blog was:
- Xen domU
- 500MB RAM allocated
- 9GB storage
- CentOS 5.5
- Apache + mod_php (5.3.5 from IUS project)
- MySQL 5.0.77
- WordPress 3.0.5 manually installed single-site
The new hotness is:
- EC2 t1.micro (its upgradable!
- 692MB RAM
- 8GB EBS
- nginx + php5-fpm (5.3.5 from natty)
- Drizzle 2011.03.13 (wordpress-plugin 0.0.2)
- WordPress 3.0.5 from natty in multisite mode
The steps to migrate weren’t altogether complicated. A bit of configuration for nginx to have it serve my PHP using php5-fpm, and copying most of wp-content over. Drizzle couldn’t have been more straight forward:
- Install drizzle7-client from EPEL on CentOS vm
- drizzledump blog database (drizzledump automatically converts mysql schemas to drizzle compatible ones)
- load it into drizzle on Ubuntu server
WordPress still needs *some* help to use Drizzle. Much of this will be handled by the wordpress-drizzle package from my ppa (add-apt-repository ppa:clint-fewbar/drizzle) which filters DDL to change things like LONGTEXT to TEXT. Because Drizzle has done away with the eeeeevil of datetimes with 0000-00-00 as their date (a non-existent date), we need to change all instances of that to ’0001-01-01′. In the future I’d like to see this abstracted out of wordpress even more so that it is more aware of the datetime fields and can use actual NULL values. I believe this can be done in the plugin by overloading the insert/update methods. I’ve begun working on that, but for now I’ll just have to keep patching wp-includes/post.php , which seems to be the main user of 0000-00-00 to denote a “draft” post.
We also have to alter the wp_posts table slightly. Thats because wordpress relies on mysql’s broken “NOT NULL” producing an “empty string” in varchars. This ALTER does that:
ALTER TABLE wp_posts MODIFY COLUMN post_mime_type VARCHAR(100) COLLATE utf8_general_ci DEFAULT '';
Anyway, goodbye CentOS, hello Ubuntu!