After much research and shopping around, I finally took the advice of a friend and checked out HostGator. I really liked what I found. They offer affordable hosting packages with reasonable bandwidth ceilings. I’m still worried about bandwidth but unless I’m lucky enough to get on Digg, I should not have a problem. My last ISP was very good to me but they needed to raise their rates and I needed to find a better deal. What made the transition possible was Gator’s tech support. They responded to all of my inquiries even when those requests seemed out of the ordinary. After a couple of weeks I have completed migration of all my web sites. For each web site I had to migrate the files and the database.
Here were some of the requirements and technical challenges I had and my solution to them with Gator.
I wanted to run a single Drupal installation so I did not have to maintain modules on every domain. I also wanted to migrate over to Drupal 6 or Drupal 7 at some point. I chose one of Gator’s reseller hosting plans with enough bandwidth and diskspace for my needs. I set up the main account as a throw away account. This is my primary user that I use to log into Gator’s control panels. I put up a simple one page web site there. This account cannot be changed once it is created (without paying $5). If you are following along at home my advice would be to set this main account up as a sub-domain and not as a domain. That is if your domain is domain.com then do not set up your Gator site domain as domain.com. Instead set it up as some other host in that domain. For example sleepy.domain.com. You can then still use domain.com as a parked domain later. I have always done this. I name the machine this way. This also require that you set up your own DNS accordingly. I am not using Gator for DNS hosting which is not Gator’s preferred method but it is mine.
Now I was able to set up a sub account for my Drupal 5 installation. I considered this like another host so I gave it a name. Let’s call this one dopey. I set up my DNS for dopey.domain.com to point at the ISP address given to me by Gator. You can make it easy on yourself and point *.domain.com at the same IP address. I installed Drupal and it working. Each sub account has its own username and password that only has access to that account. You use that username and password for the CPANEL, MySQL, and for FTP. The master account has access to all sub accounts. I created another sub account for Drupal 6.
I opted to create a separate MySQL database for each web site. A single Drupal web site can have a hundred tables or more. On my old server I ended up with thousands of tables in one Database. This makes the admin tools for MySQL very unhappy. This new approach also makes it easier to drop one site or restore one site. Gator is on MySQL 5 which was an upgrade that I has looming.
In order to get my fir Drupal install working, I had to turn off register_globals and enable clean URLs. In both cases Gator support was able to help me out. The answer to the register_globals was to create a PHP.INI file with the appropriate commands. For the mod_rewrite, I just had to create an .htaccess file with the appropriate commands. Gator is on PHP 5 which is another upgrade that I had been putting off.
Drupal depends on a regularly run cron script for its own maintenance. On my old server I just ran a cron script that ran through a list of domains and processed the cron page for each one. The cron script I wrote uses curl. By default curl is not enabled. A quick ticket to Gator got that enabled on a per account basis. Now I can run my cron script.
Since I am sharing an IP address with who knows how many other customers, I have to register all of my domains with the server. I do this with a service called Domain Parking. Until registered I see a generic parking page that tells me that the DNS is right but my parking is not. Once I park domain.com, it appears that all sub-domains also work.
Gator wants you to use their DNS. If you use their DNS then any changes you make in the CPANEL automatically change the appropriate DNS entry. I like my DNS hosting company and did not want to change. A quick ticket with Gator Support and they registered my DNS servers as trusted servers. This was necessary before I could park my domains Naturally I am on my own as far as making sure everything is pointed in the right direction.
I am using domain forwarding much more than ever before. If a customer has domain.com and domain.org, I make them choose one as the real domain and forward the other at the real one. This make Google Search happy too because google does not like to see the same content on multiple URLs. I am also using domain forwarding to forward directly to a particular URL if that is appropriate. So domain2.com can forward right to domain.com/number2. This makes for a very pleasant user experience.
Gator expects you to use their email servers. I choose not to. I have no complaints about them. I am happy with my current mail situation and do not want to change. I plan to use Gators mail server in a limited capacity. I am already using Gator’s mail server for sending mail. I have read elsewhere that Gator limits sending email to 200 messages per hour. I have not confirmed that. If true, that might be a problem in the future but for now it is not a problem. Because of this assumption, you have to go into the CPANEL for MX records and change the MX record to match your real configuration or you will not get any mail from your server. The mail server checks its MX record first before going out to get the real MX record. This will have to be maintained any time the real MX record changes.
I have been using Webalizer for years. I liked that it was enabled by default. I was able to use the reports right away. Since the report is for the entire account, I cannot pick out an individual Drupal site’s traffic. I will be able to use Drupal Logs or Google Analytics in order to get site-specify report that I can share with my customers. Right out of the box I found my site being crawled heavily by some Russian site. I was able to immediately block that IP right in the CPANEL instead of having to go to each individual Drupal site.
I am having to figure out new ways for backups. In the past I would rely on a second hard drive in the same server. Every night I script ran to backup the database and every web site’s files. I kept files for each month and the previous day. If there was every a problem, I could just restore the files. Now I have to back everything up over the web. I am still trying to come up with a way to schedule it to be automated. I think I will end up setting up a server in my house that mirrors everything on the server. More on that once I figure it out.
So in summary the migration has been relatively easy. I have to commend Gator support. They were very responsive via online chat, phone and email. The online Ticket system is by far the best mechanism to request a configuration change. The online chat is the best method for getting a quick question answered but those reps generally do not have access to change your site.