steve's blog

Scripted D6 to D7 Drupal Upgrades

AKA, How to upgrade a complex Drupal site to D7

So Drupal 6 reaches end of life on Februrary 24. If you're like many of my clients, only now are you getting around to making that upgrade happen. Accordingly, I've done a bunch of D6 to D7 upgrades recently, and wanted to share the recipe I now follow to make things go as smoothly as possible.

This process has worked out extremely well even for moderately complex sites, for instance e-commerce sites using Ubercart.

Download your Drupal site without server access

Recently I've had some clients come to me because their previous developer just kind of dropped out of sight. This happens every now and then when you rely on one-person shops. It's also also familiar to me on a personal level: a vanishing dev is largely why I got into this line of work again in the early 2000s, after a few years' hiatus. The problem in these recent cases was complicated because not only did this dev build the sites, but also hosted them. This meant that, for one (live) site, no much-needed code or template changes were possible, and another (dev) site couldn't launch.

Drupal rsyslog with separate log files

This just took a little figuring out, so I'm recording it for posterity. I maintain many Drupal sites, almost all hosted in multisite installations. To save DB server traffic, I've started experimenting with the syslog facility. Here's how I set things up on my Debian server to log each site to its own file. First, I created a /var/log/drupal directory to hold the log files and gave it the appropriate permissions (group etc. will vary by distro).

Lenovo Thinkpad S431: A Web Developer’s Review

I’ve been a Thinkpad user for many years now. I love my mid-2000s T60 with an irrational passion. So much so that, when I cracked the case a couple of years ago, I hit up eBay for an identical replacement rather than try something new. (I’m pretty confident that at least some Thinkpad owners will be nodding in understanding right now.)

PHP Project Management and Bug Tracking with TinyIssue

I've recently returned to freelancing after working for most of the past year at Myplanet, a relatively large web development company that uses Agile techniques to manage teamwork on complex projects. The experience left me impressed with how effective good project management systems and tools can be. Back on my own again, I set off in search of some kind of tool that would let me manage my work. Ideally it would operate both as a bug tracker and as a sprint/scheduling tool, be open source, and written in PHP.

How To Report Website Problems

Getting web site errors fixed means telling your programmer or IT people what needs fixing, and it can be challenging to communicate effectively with them. Technical folks really want to fix things, and non-technical users really want them fixed. But the language each group uses to understand and describe the world is not quite the same. The resulting confusion is frustrating for both.

DKIM Signing of Relayed Mail with Amavis + Postfix

It has long been good practice to use email-validation tools such as Sender Protection Framework (SPF) and Domainkeys / DKIM to provide confidence that a given server or domain has the authority to send emails on behalf of its own or other domains. We use Postfix and Amavisd-new on Debian to perform DKIM signing of messages on a central mail server that relays mail for many other servers. There were a couple of catches to getting it all working that I wanted to record for posterity, should anyone else run into similar problems.

First. amavisd-new can now (since version 2.6.0) handle DKIM signing itself, meaning you can do away with additional milters or the use of dkimproxy. To tell amavis that you want it to sign mail, you need only add this line to an appropriate config file (say, conf.d/50-user):

$enable_dkim_signing = 1;

Keys and selectors are assigned to domains by adding lines like so:

dkim_key('', 'selector', '/var/db/dkim/');

(I am omitting the details of generating keys and creating the DNS records necessary to make DKIM work. There are lots of tutorials on the net that cover that material.)