Hi, I'm Benedikt Deicke. I'm a web and software developer at flinc. I'm mainly building user focused web applications using Ruby on Rails and JavaScript. Additionally I'm currently finishing my studies for my master's degree and enjoying photography in my spare time. Feel free to get in touch with me!

May 22nd, 2007
HowTo: Setting up Lighttpd + fastcgi

This short tutorial is going to show how to set up Lighttpd with fastcgi on Debian 4.0 (Etch). Actually it’s nothing special but I hope it demonstrates how easy it is. ;-)

What is Lighttpd?

Lighttpd is a light (I bet you already guessed that … ;)), fast and secure high performance web server. It perfectly fits the needs for high load websites but it’s not the best choice for servers hosting multiple independant websites. There are some popular sites running on lighttpd (eg. Youtube).

Installation

If you’ve been running apache, the first step is to stop it:
   1  apache2ctl stop
Afterwards you can savely install the lighttpd package:
   1  aptitude install lighttpd

It should install smoothly and start itself when finished.

Basic Configuration

Lighttpds default configuration on Debian file is /etc/lighttpd/lighttpd.conf. The default settings might be just fine for your needs, but it’s a bit messy for my taste. So let’s simply write our own. Open the configuration with your favorite editor.

The first thing we need to do is loading the required modules. This is what we’ll use for this tutorial:
   1  # Modules
   2  server.modules = (
   3    "mod_access",
   4    "mod_alias",
   5    "mod_accesslog",
   6    "mod_rewrite",
   7    "mod_compress",
   8    "mod_evhost"
   9  )
Of course there are a lot more modules. Just take a look at the list provided in the Lighttpd documentation wiki. We’ll use mod_evhost to simulate multiple virtual hosts. More on this later. Next we’ve to set some required values in order to get the server working. This should be self explaining:
   1  # Server settings
   2  server.port               = 80
   3  server.pid-file           = "/var/run/lighttpd.pid"
   4  
   5  server.username           = "www-data"
   6  server.groupname          = "www-data"
   7  
   8  # Document root
   9  server.document-root      = "/var/www/default"
In order to use logging we also need to set the following two paths:
   1  # Logs
   2  server.errorlog           = "/var/log/lighttpd/error.log"
   3  accesslog.filename        = "/var/log/lighttpd/access.log"
You also might want to set index file names and enable directory listing. Do this by adding this to your configuration file:
   1  # Index files
   2  index-file.names          = (
   3    "index.php",
   4    "index.html",
   5    "index.htm"
   6  )
   7  
   8  # Directory listing
   9  server.dir-listing        = "enable"
To finish the basic configuration we’ve to add two more lines. They’re used to load more configuration files located in /etc/lighttpd/conf-enabled/ and to load the mime-types:
   1  # External configuration files
   2  include_shell "/usr/share/lighttpd/create-mime.assign.pl"
   3  include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

Don’t forget to save! ;-)

Enabling fastcgi support

In order to use ruby or php on our server we need to activate lighty’s fastcgi module. This can be done by running: true You’ll see a list of available modules and asked to enter the module in question (fastcgi). Afterwards open up /etc/lighttpd/conf-enabled/10-fastcgi.conf to see the fastcgi configuration. By default php4 support is enabled. In order to use it you need to install php4-cgi: true In order to use the newly created configuration file we need to restart lighttpd: true That’s it! Now go and place a file like this called info.php in /var/www/default:
   1  <?php phpinfo(); ?>
View it’s output by visiting http://www.your-domain.com/info.php. If everything worked you should now see php’s details.
Posted by benediktFiled in Articles, Linux

May 16th, 2007
OpenCola

We had your monthly Linux Usergroup Fulda meeting yesterday. As always, it was nice. ;-) Simon brought some presents for us: Homebrew OpenCola! It’s a recipe for mixing the popular soft drink. The best thing is: It’s under the GPL!

Get the recipie here ...

Posted by benediktFiled in Other

May 15th, 2007
Nightwish nightmares ...

Somehow a funny story … but actually: not at all. I was sitting in car and traveling to the train station when I received the first SMS. The Nightwish.com server is getting slow. As we posted the studio dairy of Nightwish’s new vocalist on Sunday, I wasn’t much surprised and not worried. We had some minor problems on sunday evening, directly after posting the diary, but were able to resolve them quickly. About an hour after the first SMS, while sitting in train, I got a second: The server isn’t responding anymore at all. Funny thing to know everything is going as wrong as it can and only being able to write this text about it (offline of course). I decided to move from Apache and mod_php to Lighttpd.and fastcgi, as fast as possible. The server being down today is clearly a big fat warning sign flashing over our heads. I doubt the box will survive the 30th …

I managed to switch to lighttpd after arriving back home in Fulda. Had to change the CMS a bit, but nothing special. The cause of all the problems was apache using about 150MB RAM for each of it’s processes (up to 150) on the 2GB RAM box. Everything is running better and faster now …

I’ll keep you up to date … ;-)

Posted by benediktFiled in Linux

May 4th, 2007
Upgraded nightwish.com to Debian Etch

I just finished upgrading nightwish.com to Debian 4.0 Etch. Took me some time, but worked without any notable problems. (Thanks to the excellent documentation)

This was just another step in embattling the server for the 30th of this month. We’re expecting a lot of fans overrunning the website, as the identity of the new vocalist is going to be announced this day.

Posted by benediktFiled in Linux

May 2nd, 2007
UFTG Shop online

It’s done! My first Rails application is online. Hope it works fine … :-) Go visit http://shop.uftg.de/ and order some merch …

Posted by benediktFiled in Ruby on Rails