In the spirit of open-source software, I'm going to post here the tips and tricks I've learned about how to manage Web sites. I hope you find them useful!
Alas, a good hosting company is hard to find. All too often, we find that the proverbial grass is greener in another pasture, and it's time to move. But a modern Web site is a dynamic thing, being edited by lots of people. How do you make sure that the most recent version gets copied? Here are the steps I've developed:
You may ask, why copy the site twice instead of just once? Because something unexpected will almost certainly go wrong, usually at step 5, and you want it to happen before you have set a deadline for the move, not after.
Much has been written already about why to use Drupal, and a little about why not to:
Here are my own two cents. I taught myself the PHP programming language during slow times at work in 2002-04, and used it to build some database front-ends. In 2005, I wrote my own content-management system (CMS) from scratch, without having researched the fact that there were already such programs available. Then I was hired by PSDUUA, and they wanted me to use PmWiki, so for all of 2006-07 I was using PmWiki almost exclusively -- whenever a client wanted a site, I gave them a wiki. It's a very solid CMS and a powerful programming platform, as far as it goes, and I could teach anyone to use it in under an hour. I wrote six modules (called "recipes") and contributed them to the project.
The trouble with PmWiki was, clients kept outgrowing it. They wanted features like blogs and forums and media galleries and shopping carts that PmWiki is not really designed for and doesn't do very well. The developer community behind PmWiki, while fairly active, is small (maybe a hundred programmers), so if someone drops the ball on a particular recipe, no one may ever pick it up again. Up until this month (January 2009) the core PmWiki program itself depended on one person, who was unavailable for most of 2007 and 2008. And I can't really criticize, because I myself became unavailable in 2008 and stopped maintaining the recipes I'd contributed. In any case, by the end of 2007 I was feeling disenchantd with PmWiki, and I'd heard great things about Drupal, and all I needed was an excuse to learn it.
In 2008 I worked for Smartphone & Pocket PC magazine, and they paid me to learn Drupal and sent me to DrupalCon. It was just the opportunity I was looking for. DrupalCon was a blast and just confirmed my decision to devote myself to Drupal: it's a going concern. There are thousands of programmers around the world working to make Drupal and its modules better every day. That's more programmers than work on Microsoft Office, I believe. What that means is that any security problems are fixed within hours, and whatever new trendy features a client may want are usually available before they ask.
There are disadvantages, of course.
On the whole, though, in my opinion Drupal is a good foundation for any new Web site, because even if the site doesn't need it now, it is likely to later. It's better to start with a strong foundation than rebuild later. And since I'm now proficient with Drupal, I can install and configure it in the same amount of time as I formerly took to install and configure PmWiki, or build static HTML pages, or write PHP code.
OK, but why not Joomla! or Wordpress? Drupal is currently the 3rd most popular open-source CMS, after these two behemouths. Why am I championing the (relative) underdog? Well, partly because I have so much invested in it already. But also because, after seeing the community at work at DrupalCon 2008, and grasping where the project is headed, I fully expect Drupal 7 (due later this year) to surpass all other CMSes in capabilities and user-friendliness, and then in popularity. The easiest way to prepare a site for Drupal 7 now is to embrace Drupal 6.
(Note: this article is about Drupal, but the same philosophy applies to other content-management systems that have multisite capability, such as PmWiki's WikiFarms feature. In order to use multisites, you will need to have a hosting account that allows you to keep more than one domain or subdomain in the same account, so that they can access the same files. Generally speaking, PHP cannot run files that are in another account.)
There are differing schools of thought about whether it's better to have a separate Drupal installation for each site (for example, example.com and cart.example.com), or to use its built-in multisite capability. In my experience it is better to assume from the start that you may serve multiple sites from a single installation, because even if you never do, you will at least keep your site's files cleanly separate from Drupal's files, which makes upgrading or moving between hosting accounts much easier. And if you do wind up hosting multiple sites, you will save a ton of time doing upgrades in one place instead of several, and all your sites' performance will improve from server-side caching of the PHP files.
Let me explain what I mean. When you do a fresh install of Drupal 6, a settings.php file is created for you at drupal/sites/default/settings.php, and a files directory is created at drupal/sites/all/files . (In Drupal 5, you had to create the file and directory manually, which meant that you might well put the files directory at drupal/files -- outside the sites directory -- but fortunately this has been corrected in more recent versions.) Like this:
The default directory is for when no more specific settings.php file is available for the domain name you're using, and the all directory is available to all sites regardless of what domain name you're using... in other words, if you decide to use the same Drupal installation to serve cart.example.com, you would put its settings.php file at drupal/sites/cart.example.com/settings.php, and the example.com site would continue to use the one in the default directory, like so:
Both sites would be able to access the same files, which can be handy, but presents problems if you're not sharing users between the sites, because two users with the same ID number could potentially overwrite each other's files!
But the main problem with this setup is that if you later decide to serve a site with another domain name such as demonstration.com, it's no longer clear what the "default" means. Is "default" example.com or demonstration.com? Well, it's whatever isn't otherwise specified. You can move the files into a subdirectory, but you will have to run a series of queries on the database -- potentially on four or five tables -- to change where Drupal looks for all the files. You may also have to change your theme templates, if you referenced images that were in the files directory.
Instead, I highly recommend creating a directory for the domain name from the start: before you run Drupal the first time, simply create a directory at drupal/sites/example.com. Drupal will find it and put the settings.php and files directories there instead of in its default locations. All files specific to example.com will be kept in this one location. (You're on your own to make sure that themes and modules specific to the site are kept in the right directory.)
If you decide to upgrade this site separately from the others in your account (for example, because another site relies on modules that aren't yet available for the new version of Drupal), you can just move that one directory from the one drupal directory to the other, without worrying about leaving any files behind. Of course you'll also have to copy any modules that it may need from the drupal/sites/all/modules directory ... there are too many advantages to sharing modules among sites to go putting them in the site-specific directories.
Similarly, if you need to move a site to a different hosting account, you can move its files without affecting any of the other sites. This is very handy if you happen to be a Web developer for multiple clients.
The Drupal project has fond hopes of one day producing the most user-friendly content-management system in the world. However, so far it's written by and for programmers, so often the easiest way to install and upgrade it is from the UNIX command line! Here's how to do it:
Suppose you have some content in your Web site that is geographical in nature, like photos from a trip, or users, or carpools to an event, or a portfolio of clients. How do you map that information? In Drupal, it's pretty easy to set up, and very easy to use once it's set up. Here are the steps:
Before I installed Mollom on my sites, spam was a continual threat. Not only were email forms at risk of being exploited, flooding their recipients with hundreds of unwanted messages a day, but comment spam could take over a site, covering useful pages in garbage or actually coopting the browser with iframes and other dangerous HTML tags. I fought back as best I could with captchas and input filters, but it was an arms race I wasn't likely to win.
Then at DrupalCon I heard about Mollom, and I put it into practice, and since then I have been able to open up comments to unregistered users and relax input filters with no worries at all. Mollom doesn't show a captcha unless you have already called your humanity into question, so the majority of users never see a captcha.
Let me give you an idea what volume of spam I'm dealing with. Here are the Mollom statistics for smartphonemag.com for the past 32 days:

If the graphic above were as interactive as the actual stats (which are Flash), you could mouse over the graph to see each data point. The maximum number of "ham" (valid) posts during this month was 35, the most I see on any of my sites. Mollom will process up to 100 valid posts a day for free. So this is the free service we're using here, and it blocked nearly 2900 spam messages in a single day, from this one site alone. That is an unbelievable value! Even at the paid rate of 1 Euro per day, it would still be an unbelievable value.
The one downside of the free service is that if the Mollom server goes down, you have to make a choice: stop receiving any posts on your site, or let them all through. We have chosen to let them through, and the server did go down once, and about 500 spam comments made it onto the site. But before Mollom we were tackling spam every single day. In the time we've used it, we've had a total of 3 false negatives (i.e. spam messages passing as valid). We deleted them and reported them to Mollom, and no messages like them have made it through since.
I highly recommend Mollom to anyone with a Web site that accepts any kind of public feedback.
A number of you are my friends on Facebook and may have wondered why I got so excited a few days ago about DrupalCon Paris (which I'm not attending -- it's happening right now) and the accompanying "code freeze" of Drupal 7. Without getting too technical, here are some of the recent developments and what they mean for you as Drupal users.
I'll be among the first to download Drupal 7 when it goes alpha, and I'll keep you posted!