For the past few years I have been running some software on a WIMP stack. They have been working quite well. I never had any issues with the technology stack itself. Or rather the only issues I had at times stemmed from the fact that a lot of PHP apps automatically assume that you are running Apache. So lately I had this crazy idea to try switching things around and running things on top of a WAMP stack. Here the thing though…
Long, long time ago, in a galaxy far, far away – as as I call it “back in college” I participated in a discussion on this very topic. It started with the following statement:
“… and on top of that they are running Apache on windows which is kinda stupid!”
This was met with round of nods, and approving grunts from everyone. Since I was the youngest, dumbest and least informed person in the room, I nodded too. Then asked why was it stupid, trying to figure out whether or not I should immediately uninstall apache from my home desktop.
The answer I got was sort of convincing. Apache was never designed to be run on windows. It was ported back to windows – it works because of kludges and hacks were made. It will never be as efficient as a server designed from ground up for the platform. It won’t scale and etc.. This was followed by another round of nods. One again, since I was least experienced, and least knowledgeable person there I didn’t argue the point and taken it as a given. From that point I always tried to run pure LAMP when possible, and if I had to use windows then use WIMP instead of WAMP. And of course I always figured:
“I have this windows box here, and it comes with it’s own built in server, so why would I install another one on top of it”.
Now that I think about it, I can’t really find any empirical data – any tests, or benchmarks which would support the convincing IIS vs Apache argument from my distant past. There are millions of various arguments on which one is better out there but most of them boil down to “Apache is better because it is open sauce” or “IIS sux because it is from Micro$not” and so on. Serverwatch has a nice, objective cross comparison between the two – and if you look at it, you will see that both are almost equivalent when it boils down to features. IIS is better at running ASP, and integrating Windows specific stuff. Apache on the other hand is multi platform and integrates better with linux-y technologies.
I really believe that the whole “Apache is a port” logic is faulty. It is an open source project after all, and people have been successfully deploying it on Windows for years, even in production environments. I’m sure it grew up considerably in the last 6 years or so since I had that conversation too. So if it was flaky back then, I’m sure it is not flaky now.
What do you think? Is WAMP a viable option these days? Should people stick to WIMP? Or is WIMP the abomination here? Is PHP really better off pairing up with Apache? I’m throwing it out there because I honestly don’t know. On one hand, I don’t want to try to fix what is obviously not broken. On the other hand, perhaps running WAMP would be more beneficial in a long run. LAMP is not really an option at that location I’m afraid.
[tags]apache, iis, server, php, wimp, wamp, lamp[/tags]
I’ve run a low-volume WAP (no database) server for years. Maybe the discussions were valid at one point, but Apache 2 seems to be pretty darn Windows-friendly.
I don’t have anything major against IIS, really. I found Apache easier to configure and getting new versions for free appealed to the poor college student I was at the time (yeah Windows comes with a crippled ancient version of IIS (at least, the version that came with Win2k was both ancient and crippled; I don’t know if XPs is any better), but you’ll probably be dropping some dough if you want the most recent, unrestricted version). Plus, don’t underestimate the awesomeness of open sauce :)
I agree with Nathan.
I’ve been running WAMP at a low scale level (with database, but quite small) for several years now, and works fine. No empirical data, sorry.
My main reason to use WAMP over WIMP, though, is that it’s in fact developed as LAMP application that has to work over XP too, due to some customer requirements. Oh, man, and now I’ll have to check what happens with Vista!
And of course “IIS sux because it is from Micro$not”. :-)
got the same reason like anyone else… its easier to switch between lamp and wamp than to switch between lamp and wimp.
But on the other hand… i dont do much switching in last time… used lamp most exclusively the last 3-4 years. (besides using Linux exclusively as Desktop OS the last 2 years)
What about WLAP? (L standing for Lighthttpd)
That’s what all the cool kids are doing now.
oops. should be WLMP of course…
Personally, I choose to run SAMP.
Long live Solaris!
Back in the time I was using windows, I only used Apache, simply because my friend’s IIS server got hacked and the forum he had hosted was totally gone. I have never had that experience with Apache.
I really recommend Apache, it was written with security in it’s mind, according to some article i have read it is used by 80% of all websites.
And i use it cus i love Linux, not only the freedom, but the OS itself, for example Ubuntu has so many cool features, mosly small things that make my life easier
You could make a better case in the past for not running Apache on Windows than you could today. There were very valid reasons what it was not a good idea.
The root of the problem is the MS OS roots are multi-threading while the roots of UNIX is multi-processing. From a Windows person’s perspective, threads are a WAAAAY less expensive than processes because there is only one instance of the executable code, and they would be right, from a Windows perspective. If you watch the forums, they are quick to get out their calculator and multiply X megs times the number of processes to calculate just how expensive it is to fork a new process. A few realize their math isn’t working because the machine doesn’t have that much memory, and it isn’t swapping. UNIX caches an image of the executable, which is shared among invocations. Thus, Windows optimized their threading while UNIX optimized their multi-processing, because that’s what each depended on most. If you only experience Windows, it’s difficult to grasp how dirt cheap launching and terminating a Unix process is because for Windows it’s crazy expensive.
The old Apache was written for UNIX and Netware, both rocket ships at forking processes. What naturally follows, if you run the same code on Windows, you end up with slow motion and memory requirements that WILL agree with your calculator. This is also why CGI is such a disaster under Windows. As you’ve gathered by now, the reason IIS runs fine on Windows is because it is thread based.
You may have noticed that consistently, the top 10 most reliable web hosts, are UNIX, usually FreeBSD, while they are small fraction of the servers. There is more to that than real smart guys working on it. Memory leaks in a multi-processing environment don’t have the impact they do in a threaded environment because if the programmer doesn’t get it quite right, the memory gets released back to the OS when the process terminates anyway. Windows programmers need to be able to walk on water to prevent leaks. Moreover, even two perfect pieces of code working together may not be perfect when they work together if things don’t happen in the predicted order every time. That’s why so much emphasis on languages with automatic garbage collection to cut down on the leaks. This is human factors engineering. You can appreciate that getting Windows server as solid as you see today was no cheap trick.
Today, UNIX and Linux have refined their threading, and Windows has refined its multi-processing. Today, Apache has more processing models than you can shake a stick at. They have varying mixtures of processes and threads. Forking isn’t free, so today, you see parameters in Apache to reuse processes for say 100,000 iterations, an then tossing them. That keeps any memory leaks from building, and helps Windows out which isn’t very efficient at multi-processing. The whole idea of FastCGI is to keep the language process running for Windows. The problem with that is, the language and all of the software may not be thread safe because it never had to be. Getting rid of PHP on the web would be like getting rid of Windows applications for the desktop, so PHP has had to evolve with thread-safe libraries. On UNIX and Apache 2.2, prefork is faster than FastCGI.