First, writing a serious web server is not trivial in any language. It's a complex network server that requires intense attention to security (witness the number of IIS exploits). Not something to be taken lightly.
Second, I think you're underestimating the power and flexibility of Apache2. Let's look at some of your shopping list:
- Built-in distributed application- and session-state.
- This is application and language specific. Web servers have no business getting into this.
- The ability to use different processes for different websites.
- Apache2's model allows any configuration of processes and threads that you like with MPM modules.
- The ability to specify resource limits on a per-website basis.
- Check out some of the bandwidth and throttling modules available for Apache2. They can do this.
- Cluster-awareness. Load-balancing and application clustering should not be "bolted-on" as an afterthought. These features are important enough to be included as part of the overall system architecture.
- Again, I would say this has nothing to do with the web server itself and should not be tied to it, but there are load-balancing modules for Apache2 if you insist. The mod_proxy stuff is one option.
- A "mini" version capable of running a single website - especially useful for local development and testing.
- Apache2 works fine for this. You can simply start your own instance with your own config file on a specific IP and port. In fact, unlike IIS, you can install dozens of dev Apache2 servers with different compile options on a single machine and start, stop, and configure them all separately. It's total freedom.
- Like FCGI, the ability to pass "requests" to another process and return "responses." This would presumably be simpler than requiring a compiled binary (*.so) as a module.
- What's wrong with using FCGI and mod_proxy for this, as we have for years?
You also mentioned starting/stopping a single virtual host. This is pretty simple with FastCGI, by restarting the FastCGI processes for that site. If you use mod_perl and want to do this, you would run a separate backend instance for each site. Running a proxy in front of mod_perl has long been the recommended configuration.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.