The Cherokee Project describes Cherokee as:
a very fast, flexible and easy to configure Web Server. It supports the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, uWSGI, SSI, TLS and SSL encrypted connections, Virtual hosts, Authentication, on the fly encoding, Load Balancing, Apache compatible log files, Data Base Balancing, Reverse HTTP Proxy, Traffic Shaper, Video Streaming and much more.
ISPConfig is an Open Source control panel for providing managed hosting. If your needs are simple enough, it makes a decent alternative to heavyweights such as cPanel/WHM or Parallels Plesk. In my case it makes it easier to provide virtual hosting for family members.
The thing is...
The ISPConfig installer comes with automagic support for configuring Apache and nginx, but no support for configuring Cherokee.
On top of that...
The default install of ISPConfig doesn't play well with Cherokee.
There are some very good instructions for installing ISPConfig on various distributions here, so I won't repeat them.
Also, I've previously written about installing Cherokee on Ubuntu and Debian Lenny (using the testing repository):
Once you're past that, you need to get them both to work together.
First you'll need to fire up
cherokee-admin before you can configure a vServer to serve ISPConfig. The easiest way is to run the following on your server:
# cherokee-admin -b Cherokee Web Server 1.0.10 (Nov 25 2010): Listening on port ALL:9090, TLS disabled, IPv6 enabled, using epoll, 4096 fds system limit, max. 2041 connections, caching I/O, 20 threads, 102 connections per thread, standard scheduling policy Login: User: admin One-time Password: aryusp7DBcNZESml Web Interface: URL: http://localhost:9090/
Note: the administration interface is now available, unencrypted, to the world on port 9090. Don't leave it this way once you're done.
Point your browser at your server on port 9090 and log in.
Next, click on the
vServers tab up the top and then the plus sign in the top-left corner:
PHP and click on
Enter the document root (probably
/var/www/ispconfig unless you strayed from the recommended default when installing ISPConfig) and click
Enter your hostname, choose whether you want to use the same logging configuration as an existing site, then click
Unless you have a simple Cherokee configuration and plan to keep it that way, (which, if you need ISPConfig, is unlikely), you'll want to reconfigure the
Host Match tab so that your new site matches on wildcards, regular expressions or server IP. For example:
Once you're done, click on
SAVE in the top-right corner, followed by
Ordinarily, you'd expect that you might be finished at this point... but you're not. If you try to visit the site now you will either get
404 (Page Not Found) or
504 (Gateway Timeout) errors.
What's going on...?
ISPConfig is typically installed in
/usr/local/ispconfig and a symbolic link at
/var/www/ispconfig points to a location beneath that. All the directories and files are owned by the
ispconfig user and the
ispconfig group with
0750 permissions. That seems to pose a problem. Although
php-cgi run as
www-data is a member of the
ispconfig group, that does not seem to be sufficient.
Now, I admit, I got bored at this point before digging any further. Also, Cherokee is not extremely helpful when it comes to error messages and debugging. I changed the ownership of the files and directories to the
www- data user and group and everything started to work. That was good enough for me. To do the same:
# chown -R www-data:www-data /usr/local/ispconfig
Try loading the site again. As long as the usual culprits are OK (eg, DNS) ISPConfig should now be working.
Caveat: these permissions might pose a problem for future upgrades to ISPConfig. Also, it's the easy way out... I became bored and gave up before figuring out exactly what was experiencing permissions problems. If you know, let me know, I'll update the post.