It’d be great if you and your clients always had exactly the right hardware on hand, with the right version of your favorite environment installed, and the horsepower to deal with running all of your apps. Of course, out here in the real world, that’s true only some of the time. That’s why every developer ought to have some options for managed hosting, but which one can you rely on to support your applications? In this article, we’ll examine some of the best developer-friendly web hosts for your next project.
We’ve compared six hosting providers known to be relatively developer-friendly. In no particular order, we examined plans from A Small Orange, DreamHost, Hosting Rails, Media Temple, RailsPlayground, and WebFaction.
We’ve looked for all the usual suspects when evaluating hosts: disk space, monthly cost, contract term, and so on. While choosing hosts for the study, we tried to stick to ones that suit developers: low resource limits, poor or missing support for simplified administration panels, and limited control were some of the attributes that led us to exclude a plan from the study.
Just about all the plans in the final lineup had sufficiently generous resource limits so that you’d never need to worry about them; plenty of databases, users, domains, and mailboxes, with the only constraints being disk space and bandwidth. At this end of the scale, CPU/RAM usage is more of an issue, with most of these hosts having some sort of policy for such usage.
Another major factor was language support: we expected all of these hosts to support PHP, Python, and Ruby at the least, with Perl support a nice to have. For deployment of non-PHP applications, FastCGI support was an absolute minimum, with mod_python and Passenger (mod_rails) desirable.
Finally, we’ve tried a couple of real-world tests by actually running software on these web hosts. We started with the pre-install check of Joomla, which verifies some sensible values for PHP configuration directives, followed by installing some basic PHP and Django applications, using whatever installation methods the host provides.
We’ve laid out each plan and feature in a handy table, but of course a good comparison must go deeper than that – let’s discuss each offering in more detail.
A Small Orange: Small
We chose to look into A Small Orange’s Small plan – though even the Tiny plan would serve quite well for a small app, the Small plan is a better comparison to the other plans in our lineup.
At A Small Orange, the control panel on offer is cPanel 11, which at first glance has a multitude of options for almost every conceivable task – email set-up, MySQL administration, and more. However, the use of a generic control panel solution makes some issues unclear: for example, to enable shell access with SSH at A Small Orange, one must request it when signing up or file a support request through an entirely separate system. However, the cPanel system still includes an area for setting up SSH access.
MySQL was an interesting issue here, and indeed on all the cPanel hosts we reviewed – the DB server was always running on the same machine as the web server. The two other cPanel hosts in this roundup also had this issue, which may only be a minor problem for testing out software, but could impact your ability to scale up a deployed application without switching servers.
One area where A Small Orange shone was PHP deployment; there were no issues with the Joomla pre-install check, bar the
display_errors directive (
ON instead of Joomla’s recommended
OFF). This was quite common among the hosts surveyed, but an
ON value for
display_errors is only a small issue as long as it’s disabled on a per-application basis.
PHP performance seems excellent. To test PHP performance, we used WordPress to convert an XML file containing over 500 posts with comments. A Small Orange’s server made quick work of the XML import, and had all posts imported within a minute or two. We tried a similar test on Media Temple, and the server was still going after ten minutes!
While there is no official support for Django, instructions found on A Small Orange’s wiki were sufficiently detailed to get a FastCGI deployment up and running. However, the FastCGI approach was quite lengthy and left little room for optimization and tuning; serving static files over a separate domain could have been more straightforward than it was, and the cPanel system offered little help.
DreamHost offers just one plan, the price of which varies depending on the length of time you choose to prepay, and which added extras you purchase.
DreamHost operates on a larger user base than most of the hosts in this study, and has developed a series of in-house systems based around a custom control panel. In the panel, you’ll find a set of quick access options for the usual suspects: management of databases, domains, users, and so on, as well as fine-grained control over mail, a handful of reporting systems, and utilities for everything from crontabs to mailing lists to Subversion repositories. A wide range of one-click installation options is also available, including the latest version of Joomla.
The Joomla pre-install check worked just fine, with only one little issue –
display_errors ON, again. However, it’s possible to use one’s own PHP configuration on a DreamHost service; see the DreamHost wiki for details. The CakePHP deployment worked as expected out of the box, without a hitch.
DreamHost has no official support for Django, so the general solution is to run Django under FastCGI. We deployed a standard Django blog application on a DreamHost service, following the lengthy instructions on the Django wiki page, without any major setbacks. Serving media files over a separate domain was relatively straightforward, thanks to DreamHost’s flexible domain controls.
For Rails, DreamHost has a very nice Phusion Passenger (mod_rails) setup that you can configure yourself without assistance from a system administrator. You can enable it on a per-domain basis, and it’s an excellent option for deploying Rails apps.
We test-drove HostingRails’ Beginner plan, with an extremely tiny price of just $43.08 per year.
HostingRails advertises itself as a Rails-oriented provider, but in reality it’s a perfectly good all-rounder with a fairly straightforward offering. Their servers run cPanel 10 and are loaded with more than enough Apache modules, Ruby gems, and PHP extensions. Server management is a simple affair; your shell details are provided in the welcome email, and all your domains work more or less out of the box.
Running the Joomla pre-install check resulted in the same error as RailsPlayground – the web server was unable to write to its configuration file without it being world-readable. Similarly, CakePHP’s tmp and tmp/cache folders had to be made world-writable before Cake could write out its databases, caches, and other temporary data. Joomla also noted that
ON. Overall, however, the PHP experience was perfectly satisfactory, with no major issues. URL rewriting also worked out of the box.
Our Django test was a different experience, however. The wiki guide first directed us to install our own copy of Python in our home directory, suggesting the installed version of Python (2.4.3 on our server) was insufficient for the latest version of Django. After compiling Python, we then had to install the Python MySQL DB module to establish MySQL connections from Django’s database adaptor. A few quick changes pointed the system at our custom Python install; we then had to duplicate the django-admin.py file and point it at our custom Python as well. Finally, we set up the dynamic FastCGI configuration.
While Django deployment could have been a lot better, HostingRails’ mod_rails functionality is well ahead of the pack, as we expected! Deployment instructions for Rails at HostingRails’ wiki were extremely straightforward and relatively quick, although manual intervention from a support technician is required for part of it.
Media Temple: (gs) Grid Service
The (gs) Grid Service offering from Media Temple was a standout in this study, and in more than just the price tag – although at $240 per year, it isn’t exactly ideal for a spare test bed. Media Temple’s server cluster infrastructure is marketed as an extremely reliable system for hosting sites that may experience an unexpected burst of traffic; that is, experiencing short periods of a considerably above-average load, such as being featured on Slashdot or Digg.
Media Temple’s Django and Rails deployment solution, called Containers, were a highlight in this review. Starting at $20 per month, a container is essentially a mini virtual private server for your Django, Rails, or MySQL setup. A Django Container, for example, dedicates a certain amount of RAM for your Django applications, and provides easy management of your Django version and installed eggs for each container. (A container is essentially a lighttpd server in front of FastCGI threads, all preconfigured.)
The Media Temple control panel is extremely well designed and offers a reasonable level of control over systems. In particular, the panel offers considerable documentation, and even comes with a guide outlining usernames, access domains, and other service details. While the panel itself lacks the same level of control as other reviewed offerings, it’s extremely usable for deployment. At the time of writing only Drupal, WordPress, and Zen Cart were available as one-click install options.
Worthy of mention is the Media Temple Knowledge Base, an amazing resource with unmatched depth among web host guides. It even includes video tutorials suitable for end users, such as email program configuration.
The Joomla install result was identical to that on DreamHost; all required settings met, and once again we found that
display_errors were set to
ON. Our CakePHP deployment went off without a hitch, but it’s the Django/Rails Container system that makes this offering worth every dollar: we had our sample Django application open for business within minutes, as opposed to the better part of an hour for A Small Orange and DreamHost. A single container managed multiple applications just fine, and application-level controls were extremely handy for deployment.
RailsPlayground offers a fairly standard range of managed, VPS, and dedicated hosting services – we chose Developer Hosting Level One. The servers are relatively standardized, running cPanel 10, and the company is well-known in Rails and Django circles for offering a less painful FastCGI deployment than usual. Interestingly, RailsPlayground offers a DIY lighttpd deployment solution with FastCGI for a static process, for which the support group allocates a dedicated port.
The cPanel setup was near identical to A Small Orange’s, and will make sense to anyone with experience on a previous version of cPanel; for the rest of us, a collection of introductory videos was helpfully offered at first login. Interestingly, the cPanel offers a section for installing PEAR packages, an option that may be useful for working with applications that require them, especially open source projects.
While testing Joomla and CakePHP deployment, we had to manually make folders world-writable for the web server; without this, Joomla was unable to update its own configuration file, and similarly CakePHP complained about insufficient control over its temporary folder. Luckily, SSH worked out of the box with the access details in one of the five emails you’ll receive from RailsPlayground when starting your account. A couple of chmods later and we were ready to roll. Once again, Joomla found that the
display_errors setting was
ON, but otherwise Joomla and CakePHP were functioning fine, including URL rewriting for Cake.
Django deployment was a breeze on RailsPlayground – less so than Media Temple’s approach, but relatively straightforward nonetheless. Serving files over a separate domain was no issue, and the server we worked with had the latest stable version of Django installed, with django-admin.py ready to go. The RailsPlayground wiki has a helpful guide to Django and Rails deployment explaining each step.
WebFaction: Shared 1 Plan
Last and perhaps not least – we tested WebFaction’s Shared 1 plan, an offering which is possibly the most unique in this roundup.
WebFaction, formerly known as python-hosting.com, specializes in web application deployment, with stunning results. The control panel is a fairly straightforward affair, a custom system that gets the job done – well, until we look at domains and applications. WebFaction has a unique approach to one-click installers, creating applications under a ~/webapps folder, with everything from Rails to Drupal to Django available. Once an application is created, a web site can then be configured to mount one or more applications at particular URLs.
We started out creating a “Static/CGI/PHP” site, and had the Joomla pre-install check ready within a minute. The only warning from the installer was our old friend,
ON instead of
OFF – with everything else ready to go. Our CakePHP install revealed some unexpected issues, however: owing to WebFaction’s managed URL rewriting for each application, we were unable to have mod_rewrite use Cake’s own pretty URLs. Everything else, however, was working fine.
The control panel really shone in our Django deployment, however; the process was so straightforward, there was no need to login over SSH to get the first project template up and running. A wide variety of Django versions (at the time of writing, 0.96.3, 1.0, 1.0.2, and trunk) were all available and recommended, with a handful of prior releases marked “INSECURE.” WebFaction even offers a choice between mod_python and mod_wsgi; we tried the WSGI approach for this review. After creating a Django trunk application, we could load up the URL immediately and were ready to go.
The deployment was just about on par with Media Temple, and at less than $10 per month (depending on how much you pre-pay), this is definitely an excellent option for Django development. If you’re interested in frameworks such as CherryPy, Pylons, Turbogears, or anything else that you might like to run under mod_python, have a look at the WebFaction plans; official support for all of these is included out of the box.
We’ve explored several excellent options for managed hosting in this review, and which one you choose is up to you and what you need. Here are our picks for common scenarios.
No-hassle Rails/Django Deployment
For deploying a Rails or Django application with as little fuss as possible, it’s hard to go past Media Temple. Their Grid Server platform could be more flexible, but the Container system makes pushing your application live a breeze, while still being compatible with your existing version control.
Runner up: WebFaction’s Django and Rails deployment system is incredible, with a little more flexibility than the Media Temple option, and at a more agreeable price point. Definitely worth a look.
PHP Deployment Server
A Small Orange wins this hands down. The cPanel 11 administration panel has more than enough options to keep PHP under control, and the servers are sufficiently powerful for whatever you plan to throw at them.
Runner up: RailsPlayground: just the right amount of power to get your applications up and running, and support for enough non-PHP environments to explore. Just watch out for those file permissions!
General Web Development Test Bed
We’ll have to go with WebFaction for this one, with a multitude of options for trying out PHP, Django, and Rails applications with no fuss. A purpose-built architecture gives you the flexibility to try out applications to your heart’s content.
Runner up: A Small Orange. With plenty of flexibility, relatively up-to-date libraries and applications, and a stable environment, you’ll be able to avoid deployment hassles.