I got my new 64-bit web server up and running today. Now the main task that remains is to get my data moved over to it. I talked myself into going with an Apache setup, since one program I want to run (Webtrees) is designed for Apache and its search engine optimization seems to work better under Apache than Nginx. It’s fast anyway; displaying the 17-person family of Andrew Davis McQueen of Leesville, Mo., briefly consumes 2% of the available CPU time in Webtrees with the APC PHP cache installed and enabled. And that should get better, seeing as newer, faster, better versions of both Apache and PHP were released in the last month.
As I built my new 64-bit web server, I messed up MySQL a couple of times. When you break MySQL beyond repair, here’s how to start over with a fresh MySQL install and a fresh /var/lib/mysql without doing a Windows-like reformat and reinstall of the entire operating system:
My new fire-breathing dragon of a server is sitting idle at the moment. I would have liked to have had it up and running today, but now I’m starting to realize why it took me so long to migrate off my Pentium II-450. Setting up Linux web servers is a lot more complicated than it was in 2001.
They can do a lot more than they could in 2001 too, but when I first built that server, the process literally went in about three steps: Install Debian, apt-get install apache mysql php, then download blogging software, create a MySQL database and account for it, edit a config file, then start blogging. You could get it done in an hour, and a lot of that time was waiting for stuff to load off a CD-ROM or download over a 256K DSL connection.
I dragged my computer back over to Micro Center this afternoon. It took three of us, but we got the computer working.
It’s a long story. It would have been a much shorter story if I’d remembered my rule #1. I won’t bore you with the details, except to say the second technician, upon hearing the only thing we hadn’t swapped out was the power supply, dragged a power supply out of the back. We plugged that power supply in, and heard the sweet gimme-some-memory scream from the motherboard failing to POST. Incredible. So we powered down, reinstalled the memory, and watched the system POST.
You may have a question about open-source licenses on your CISSP exam. I don’t remember the specifics and wouldn’t be able to repeat them anyway, but I had a question on my exam where knowing the differences was helpful in finding the right answer.
And I had to deal with an issue this past week involving open-source technologies where the licenses made a big difference.
Arstechnica posted a nice writeup on Nginx, a cut-down webserver that does less than Apache does, but does the few things it does much faster. That’s nothing particularly new, as smaller and faster webservers have existed for as long as I can remember.
What makes Nginx different is that it can work with PHP. And therefore, it can run WordPress.
When upgrading this site, I replaced the underlying hardware as well. The old server was just a dead end in too many regards to be worth upgrading in place, and besides, being able to run new and old side by side for a time is helpful.
This type of maneuver is routine work for a professional sysadmin. But it’s been at least two years since I’ve done a similar maneuver at all, and at least five years since I did it with Linux.
When I built the new machine, I gave it a unique IP address. Turnkey Linux makes getting an operational LAMP stack trivial, and depending on what you want to run on that stack, you may even be able to get that installed for you too.
Unfortunately for me, the Geeklog migration tool doesn’t seem to work with WordPress 3.0.1. So I had to get WordPress running on my old hardware in order to migrate. I chose WordPress 2.0.11 because the 2.0 branch appeared to be the current branch when Justdave wrote his migration tool, and 2.0.11 ran without complaint on the dated versions of PHP and MySQL that were on my old server.
After importing the content, I used mysqldump to export my databases. Specifically:
mysqldump --opt -u [mysql username] -p [database name, probably wordpress] > wordpress.sql
I should have gzipped the file, but I didn’t.
I then connected to the old server via FTP and transferred the file. Use your favorite file transfer method; I happened to have FTP set up for my internal network.
Uncompress the file if you compressed it:
Then restore the file:
mysql -u [mysql username] -p [database name] < wordpress.sql
Or, if the database already exists, like in my case:
mysqlimport -u [uname] -p [database name] wordpress.sql
Then I connected to the webserver via my web browser. WordPress 3.0.1 saw the WordPress 2.0.11 database and informed me that it needed to be upgraded. So I let it do its thing, and a few minutes later, I had a functioning WordPress site with 10 years’ worth of legacy entries.
I messed around with it for a while. Finally, I decided to go live. And at this point, I should have physically moved the new server into its permanent home. I didn’t do that, so now when I decide to move the server, I’m going to have some downtime.
To flip the IP addresses, you need to know where your Linux box stores its IP address. Debian and Ubuntu both store it in /etc/network/interfaces. As far as I can tell, Red Hat and derivatives like CentOS store it in /etc/sysconfig/network-scripts/ifcfg-eth0, but I haven’t used Red Hat or a derivative in a long time, perhaps 2003.
If worse comes to worse, try something like this to determine where it’s stored:
grep -r [ip address] /etc/
I edited the appropriate file on both boxes, changing the IP address while leaving all of the other parameters unchanged.
I then issued the command ifdown eth0 on both machines.
On my new production server, I then issued the command ifup eth0. Depending on the Linux distribution, it might also be necessary to re-issue a default route command. I didn’t have to do that.
Depending on how much Linux/Unix cred you have at stake, you could just do it the Windows way and reboot the box. Or both of them.
Once I was satisfied everything was working, I powered down the old server and celebrated.
Yesterday, during my weekly garage sale adventures, I bought some computer equipment. Among the haul: a Biostar Socket A motherboard with an AMD Sempron 2200+ CPU and 512MB of RAM. It’s not state of the art, but can hold its own against some of the stuff still on the market, and it’s a big upgrade over the 450 MHz Pentium II that’s been powering this web site since July 2002.I swapped the board into my 266 MHz Pentium II. That first-generation P2 was a useful machine for me for a while, but mostly it’s just been taking up space. I had to do some slight modifications to get the newer board to bolt in, but it fit without too much trouble and now some of the 11-year-old hardware is useful again. It reminded me a lot of my college days, when I used to drop 486 and Pentium boards into IBM PC/ATs.
Debian installed on the upgraded system with no complaints, but I quickly found my Linux command line skills are rusty. And there have been enough changes in the last six years that I can’t just copy over /var/www and /var/lib/mysql and expect it to run like it used to.
So I’ll apply my 15 minutes per day principle. My chances of finding a block of 2-3 hours to get it all done are near zero, but I should be able to find a few minutes each day. So one day I can move the databases, then I can move the HTML and PHP another day, convert to WordPress still another day, and maybe, just maybe, have a vastly improved site in about a week if it all goes well.
Say what you will about Debian–the development process is slow and plodding, the distribution is always trailing-edge and Debian is always the last to get everything–but installing it today reminded me why I still like it.I need a temporary holding place where I can experiment. I want to move my genealogy page to a new piece of software, and I want to migrate this blog to WordPress.
The only spare computer I have right now that works reliably is an ancient P2-266. I don’t know how that ended up being, but I’ll work with it..
The system has 192 MB of RAM. I have a pile of DIMMs, but it doesn’t like most of them. So 192 it is.
Ubuntu’s installer won’t load on this system. It tries and tries, but after several hours, the only result is a graphical screen with a heron on it and a mouse pointer.
Debian just loads in text mode and doesn’t complain. It asks a few questions along the way, and it’s slower than the last few installs I’ve done, but it’s steady.
I’m confident I could get it to work on my 486 too, if I had the need or inclination (I don’t). I’ll save the 486 for the day I want to set up a DOS box for some old-school gaming. Probably in another 10 years.