Episode: 444 Title: HPR0444: Cherokee And Asyncronous Servers Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr0444/hpr0444.mp3 Transcribed: 2025-10-07 20:42:26 --- . Hi, my name is Gordon Sinclair, I'm known on IRC as this whole web. This HPR episode is on a lightweight web server that not many have heard of called Cherokee. Now Cherokee is one of a category, a whole category of lightweight web servers. But first of all, I'll read out a part of a wiki page. I'll put a link in the show notes as well. I'll read out a section of a wiki page from Lighty Versus Niggins to sort of explain what I mean. Then I'll talk about it. So from the website, from the wiki, both Lighty and Niggins are asynchronous servers. Niggins in Lighty are probably the two best known asynchronous servers, and Apache is undoubtedly the best known process-based server. The main advantage of the asynchronous approach is scalability. In a process-based server, each simultaneous connection requires a thread which incurs significant overhead. An asynchronous server, on the other hand, is event-driven, and handles requests in a single or at least very few threads. Pulling numbers from thin air for illustrative purposes serving 10,000 simultaneous connections would probably only cause Niggins a few megabytes of RAM, whereas Apache would probably consume hundreds of megabytes of RAM if it could do it at all. Lighty runs a single process with a single thread and non-blocking IO, and Niggins works as one master process, but delegates its work onto worker processes. Now that is from the Lighty Versus Niggins wiki page, which is all included in the show notes. Now, the reason for that to explain that is I wanted a web server that I could run on my desktop computer and only use it when I needed it. I've got an old computer, it's a Pentium 4, which at that in itself isn't a problem, but it's only a 256 mega RAM, which most definitely is a problem. So I've got to be quite careful about switching things on and off and things like that. So I looked at the only server that I really knew was Apache. Apache has lots of modules and patches and plugs for different all sorts of functions. The problem with Apache was when I installed it, I found that just as it explains on that web page, each click would add another process, and that process would be another 20 meg. I would install Drupal, which is a fantastic CMS, I would install Drupal and you go to login to do something, you click on the login button and boom, that's another process started, another 20 meg. You get into the back end of Drupal and you click on one of the options in the control panel to add a new content or something and boom, that's another process of another 20 meg. So before too long, you can see on my computer you can see the RAM going up and up and up, when I was using that. Now that seemed crazy to me because the way I'm not using the server to let anyone else connect it, it's only for my use, the only computer that was going to connect it, it was mine, and that would only be when I was actually working with it. So even although Drupal might be on there, no one else is, it's no use to anyone for these processes to sit and mount up. It doesn't need to be able to handle hundreds of thousands of connections all going to a process, splitting off into different CPUs and all this kind of stuff, it doesn't need any of that. So the other alternative was to have to go for the ZAMP approach, which is basically a one stop click, basically, that you switch on, that you install as a single package, it's from Apache and Friends, I'll include that in the show notes as well. And that's the full kitchen sink stuff, whether you need it or not, it's an FTP, the Apache, MySQL, PHP, Perl, and various modules for who can all that together. And that is basically switched on or off as needed. So I've got that as well. But I wanted a server that I could have switched on all of the time that would only take up resources as and when I was on with a browser open and on localhost and when it actually needed to do something that would be when it would take its resources. And other than that, it would sit there with negligible strain on the system. Now for that, that's when I started looking into, that's when I started looking into different types of servers and alternatives to Apache. And that's where I found out, found us page and found these two differences between them. Now after all that rumbling background, Cherokee is one of a huge list of what they call as asynchronous servers. There's an awful lot of them, I've found niggings as the one that is compared to Lighty, which I don't think is all that light, but it's certainly lighter than Apache. It's probably the best known pirate bay, for example, runs on Lighty. But there's a whole list of asynchronous servers and they're all pretty much light. What I've noticed is because Apache and Lighty are the two that get all the attention. They have the ones that are, they've got all the plugs to different things, different hooks for different services. That's where the lighter servers don't seem to have as many modules and it's maybe a bit more awkward to get different things running on them. I don't see me having as many options. But however, that all aside, I'll leave you to look into other asynchronous servers if that's what you want. But what I'm going to talk about after that preamble is a server called Cherokee, which runs, I've got it running right now in my system and it's lucky to take up two megabytes of RAM sim there. It's fantastic. It's really, really light. On an old system, you don't even notice it's there and that's running a desktop as well. I feel good desktop knowing that when I open my browser and go to a local host, boom, it's there, it's running. Not only that, it's hooked up to CRPHP as well. It can be hooked up to run MySQL and all that as well. It's not a problem. I can do all that. Now, what is Cherokee? First of all, the website is Cherokee Project. There's no comments. Cherokee Project.com. It's a bit unusual in the way that you configure it and you administer it. The way to do that is at the command line, basically, it does know usually servers have a config file somewhere, an XA or whatever, but this generates it's own. It's a little bit different. Let's see if I can remember what the command is. I've been trying, I've been recorded this a few times and I've been trying to think how to explain all right, there we go. As I say, I've recorded this quite a few times now and trying to get how to explain the differences between the servers and how to set out this episode. The one thing I've forgotten, I forgot to put my notes, was how to start the Admin. Anyway, I found that. That sort of caught me off guard there. It's, it's at least the runner's route. So in my case, I'm in Crunchbang, so it's pseudo-space Cherokee-Admin at the command line. Now, that doesn't take you into the Admin part itself. What it does do is it opens the service as it opens the Admin section. It switches that on a localhost, colon, or port, 9090. That's, you've got to go onto the website, onto the one-year browser and go to localhost, colon, 9090. That'll open the Admin page. It also will be required to log in. Now, what this does, not only it starts, but it runs the Admin page. It switches it on to that port, but it also gives it a temporary one-off password, which you then copy and paste into the browser. And that, as I said, that's a one-off password. As soon as you close the terminal, close that, that tab or that window in the terminal, it closes, it switches off that Admin function. So you've got to, that's how to get into the Admin section anyway. And it's all Admin started via Ague. From there, you can set up, you can teach it, or add things like PHP so that it recognizes PHP and can run PHP applications. That's where they do it. Now, you can set, you can change the default home folder for that server, you can create set up virtual servers. It's actually quite advanced when you get into that. So anyway, that's the Cherokee Admin. I'm going to put a link to how to forge as well. I found that was the first place I found when looking into how to set up Cherokee and how to get it configured with PHP. And my sequel, and they've got quite a few tutorials on how to get it set up on different Linuxies, basically. I found that Cherokee have their own have their own PPA as well. That's where I installed from, is their own PPA at Launchpad. That means you'll always get the latest and greatest from them, which is what I've done. One thing to note that mic quality problems, depending on which version of Cherokee you're running, or which, if you're running it from the repos of your own distribution, there might not be the latest ones. As a program to watch out for, or something to watch out for, a spawn CGI. Now, spawn CGI is something that was included in Lighty. That was something that was built into Lighty. At one point, one of the tutorials instructed you to install Lighty because it needed that particular part of it. Not to run Lighty, you had to install it, and then specifically tell it not to run because you only wanted that one part of it. Now, I've noticed that recently that's been spun off and it's now included in the Cherokee PPA. It should include that. If you collect the install Cherokee, it should include that. If it doesn't, make sure you include that. That's basically a lightweight CGI program. The theory is it's supposed to be able to handle PHP. Now, even although mine is set up to PHP, it's set up to be handled by a spawn CGI. It still runs. It still needs PHP 5 CGI to actually run. It's PHP 5 that's still doing the processing. I'm not quite sure how that works. I would love some feedback on that because PHP 5 is another little boost in the RAM that I could use to tweak to trim off if I possibly can. But anyway, there's that. Now, Cherokee is, remember I said that the Niggins works as one master process, but delegates work to other worker processes. Cherokee is the same thing. Cherokee Admin is the Admin process that runs. I've already mentioned that. But when it's actually doing its work and when it's serving its web pages, it's Cherokee Worker. It's Cherokee Worker that you'll see in the logs. That's what's running your, serving your pages. So, after that, I don't know how much sense that I made because I've tried to record this several times now and I keep sort of getting a bit flustered trying to figure out I know what it is I'm trying to explain, but thinking of ways to explain it in order to put it in and you know, anyway. So, after you've got that, that basically allows you to run an extremely lightweight web server on your computer. Now, as I say, I happen to use it on the same machines my desktop. The majority of the machine is running the desktop. I've got my Zim working open with my notes. I've got Firefox 3.5, open with the the Light-A page or the Light-A version of Niggins work. My machine is a desktop. That's what it's for, but it also runs, it's also running as a server as well when I want to go to a local host. Now, it has the reason for this rather than just serving a blank page. It allows you to have PHP stuff and there's a three applications that I'm going to mention which are flat file PHP applications. They don't need the MySQL daemon running. So, even if you just if you just install a Cherokee and the PHP interpreter, that's all you need and you can have your very own wiki for taking notes. You can dock your wiki as used by a lot of websites now. I heard a bit of that on Linux basement. Chad uses dock your wiki for his wiki and it's best brilliant. It's it's very, very advanced. It's a full-blown wiki and it runs its flat files. All you need is PHP. So, you can use that as a note taker or whatever you want. Another one is one that a few people see me have heard of. It's Nano-CMS. Now, this is a it's a content management system along the lines of Drupal, albeit it hardly, it doesn't know it hardly has any plugins or add-ons or anything like that. But what it is, it's a flat file wiki, a flat file CMS. So, that's that itself is quite unusual. It's everything's theme above, of course. So, I'll put the the link to the show notes and for both of these, link to these in the show note scene. And the other one is, I've not actually tried it yet, but it happened to be ghosting in the IRC and I saw a quick glimpse of a conversation between, I believe it was monster being called, to mentioning flatpress. And flatpress is, it's a flat file PHP block, plugins offer. Now, the beauty of all these is you don't need a database. All you need is PHP and a web server that can interpret it. So, this works ideal. If you want something that's really lightweight in my case, sitting as a sort of as an additional process on desktop, or if you've got a really on old machine that you're sitting and it's not really doing anything, it doesn't, it's not really that much power in it. You could set up Cherokee with any of these applications. CMS, CMS are a blog, a wiki. When docky wiki has got all sorts of modules and plugins that can turn on air, they can serve us at a blog, for example, as well. But it gives it opens up new options with with little resources, basically, that's what I'm trying to say. So, that is, I think I'm going to call it a day there. Yeah, I think that'll be it for today. So, this rather incoherent episode, I'll do a apologise to say, I'm getting that explanation at the start, proved to be quite a bit more difficult than I actually thought, when I thought about doing this episode. So, anyway, I'm going to call it a day at that. Thanks for listening. My name is Gordon Sunkler. I am known on the IRC SSL web, and the last shameless plug-all-up, the last few days I've finally got my blog up and running. So, if you want to visit that, it's thistleweb.co.uk. If you want to contact me, my emails changed as well to reflect that. It's now Gordon at thistleweb.co.uk, although my previous ones have still reached me as well. So, that's it, and thanks for listening. Oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh Thank you for watching!