For the last couple of months I’ve been playing with OpenBSD and FreeBSD in virtual machines. Getting a feel for them and BSD in general. Deciding to jump in with both feet, I rented a VPS with FreeBSD 8.0 and today, moved Raining Packets from it’s Linux host to FreeBSD. This process taught me a few interesting lessons about FreeBSD and WordPress.

FreeBSD

Packages or Ports

Pick one and stick with it.  I went with ports and quickly found out that once you go ports you can’t go back.  Not because you get hooked, but because chances are any package you pull in will not work.  Anytime I now try to pull in package, the package downloads, installs and returns a run time error.

Ports – searching,searching,searching

With ports I find myself looking for software a lot.  Looking for php?  You won’t find it.  Try php4 or php5 then you’ll have some luck.  I also thought that you would group all the php related ports together.  In www/php5 for example.  They’re not.  The php5 core is in www.  The php5 database modules are in databases.   Large and/or modular software such as PHP can have their bits and pieces spread all over the place.

Ports – build, build, build

When building ports, don’t expect to type make install and walk away.  For anything more than a simple software, there is a good chance that a dependency will pop-up a configuration window waiting for your input.  Speaking of dependencies, I don’t think I’ve ever seen Perl get pulled into so many builds.
A side affect of have a software’s components broken out into different ports is you probably won’t be able to build the whole thing in one shot.  Taking php5 as an example, you have to build the php5 port for the core but to to get the PHP database modules you have to go into the databases branch and build php5-mysql and friends one by one.

Firewalling

Goodbye iptables, hello PF!  I first played with PF on OpenBSD.  While it takes a while to get used to,  PF is powerful and has a lot of built in features that make life easier.  The built-in synproxy is pretty much a sell by it self.  Just remember to no block yourself out.

This isn’t Linux

When installing packages or ports, don’t expect files to be in the same place they were in Linux.  Looking for /var/www?  Try /usr/local/www. Oh and there is no default MySQL my.cnf file.

Moving WordPress

I decided to try and do it the easy way.  Using the Export option from the Tools menu I saved saved everything (or so I thought).  I then setup WordPress on the new server.  Here is what I learned.

  • Tools->Exports does not export your links or link categories.  So note them down.
  • Note down what plugins you have installed and how they are configured.
  • Note down any widgets you use and how they are configured.

Now would just copying the whole thing over to the new box and dumping/loading MySQL have worked?  Probably, but where’s the fun in doing things the easy way?