August 30, 2007

Zimbra Messaging Suite

Filed under: New Features, Supported Programs — pdrake @ 3:18 pm

Today, I’ve committed a new module to fully support the Zimbra mail suite from within web-cp. If you aren’t familiar with Zimbra, it is a feature-complete open source replacement for Exchange Server. It provides full mail, calendar and document sharing functionality (integrated) as well as mobile connectivity and Outlook support (as commercial add-ons). The webmail is AJAX based and feels like a desktop mail application. Also integrated are spam and antivirus scanning. The new module utilizes the Zimbra administrative soap interface with transport via SSL to ensure the security of all management functions.

March 1, 2007

PowerDNS Module

Filed under: Supported Programs — pdrake @ 11:31 am

I have moved the PowerDNS code (supporting PowerDNS through a MySQL backend) from lib code into a module. The code was based on my original code for the MyDNS module and there have been a number of bug fixes and enhancements to the MyDNS code so I have updated the PowerDNS code with those changes. If anyone tests and finds errors in the new implementation, please open a bug report.

February 13, 2007

clustering web-cp

Filed under: New Features, Supported Programs — pdrake @ 12:40 pm

I have recently begun moving my web hosting architecture over from standard single-server setups to a high-availability, load-balanced cluster. I am currently using Ultramonkey 3 for my cluster. It consists of two load-distributors(LD), one active and one hot standby, which are linked via heartbeat so that the hot standby can take over in case of active LD failure and two real servers (RS). The services on the real servers are monitored by ldirector and the load director only sends traffic to the appropriate real server (based on availability and load). I currently synchronize the real servers using csync2. This setup has impressed me thus far and so I intend to move it from development to production. In order to do so, I will be creating a web-cp HA-LB clustering module to attend to the relevant clustering functions and which will provide system administration capabilities. The following are the functions I intend to implement in the module:

  • Multi-server actions (actions in the DB are executed on each real server).
  • Configuration of scheduled file synchronization.
  • Domain, reseller and server-level option to sync files between servers (for immediate sync rather than having to wait).
  • Status monitoring of LD and RS and their services.
  • The ability to report server load from RS to LD for weighting.
  • The ability to add/remove RS on demand with web-cp notifying the LD.

October 26, 2005

new tomcat module

Filed under: New Features, Supported Programs — pdrake @ 9:03 am

This morning I finished up what I spent most of last night working on - a Tomcat module. This module adds the required JkMount directive to the Apache virtualhost file as well as managing the required entries in the Tomcat server.xml file. I imagine that this module is not yet perfect but it does handle domains, subdomains, aliases and pointers right now. The host configuration is defined by a template which the server admin can edit using the templates function. The module does not currently handle tomcat users and roles to allow for restarting, deploying, undeploying, etc. Once I learn a bit more about managers, security realms, roles, etc maybe I can make this happen.

You must ensure that the $cfg[’tomcatpath’] setting within the module points to your Tomcat installation (default /usr/local/tomcat), $cfg[’init’][’tomcat’] points to your stop/start script (default $cfg[’tomcatpath’]/bin/catalina.sh’ and $cfg[’spid’][’tomcat’] points to your tomcat pid file (default /var/run/tomcat.pid) and you should be all set.

As always, feedback and constructive criticism is welcome. Remember that this module is not even beta-quality code so expect bugs but please report them.

While developing this module, I discovered and fixed bugs in subdomain creation, pointer creation (both when using multiple IP addresses) and the SSL module. Additionally, the SSL module needs to either be extended to handle SSL certificates for subdomains and pointers or the SSL sslang entry needs to be limited to domains in some way. Preferrably, the SSL module should be expanded.

October 12, 2005

tux and apache 2

Filed under: Supported Programs — pdrake @ 5:14 pm

I’ve completed and posted a tux module which creates and binds the necessary directory structure for tux to run as the webserver for web-cp hosted domains. Tux can run either alone or as a front-end to apache. Tux does not support subdomains but pointers are working. Give it a try if you like and let me know what you think. You’ll need to enable tux’ virtual_servers config. If you don’t use the default document root (/var/www/html) you’ll need to change the cfg[’tuxroot’] in tux.mod.phps.

October 11, 2005

tux and apache

Filed under: Supported Programs — pdrake @ 3:24 pm

I’ve got apache and tux playing nicely now. Once I move apache into a module and set up the appropriate hooks, I’ll create a nice tux module so that everyone can do this with no hand-configuration required. And let me tell you, this combination flies! I have tux handling upwards of 13K simultaneous connections and upwards of 3K requests per second. With dynamic PHP files (processed by Apache), I’m getting 800 requests per second and it is able to handle up to 10K simultaneous connections. Typically Apache would overload when presented with this many requests but somehow with tux as a front-end, Apache doesn’t hit the maxclients limit. One more thing that will need to be done before this can be fully automated is that web-cp will have to support separate apache and dns IP addresses. This is good for all of you who want to run web-cp behind NAT because it will mean that you can bind to local IP’s and still serve public IP’s with your DNS. Yay.

October 10, 2005

apache alternatives

Filed under: Supported Programs — pdrake @ 12:11 pm

Well, I’m considering possible Apache alternatives to support in web-cp. Apache is a very good web server but is very heavy. When hosting many clients, most of whom are using basic html pages, one can recover considerable resources by using some other web server such as the following:

I’ve installed tux on my server with apache as the client server for it (it does not handle PHP and many other server-side scripting languages) and had great success. Formerly, apache could handle approximately 1300 requests per second (rps) max and about 250 simultaneous clients before slow-down (scbs). Tux can do 3300rps max and 15000+scbs. Not bad, eh?

In order to support tux, a directory structure must be created and then all domain directories have to be “mount –bind” to the directory structure. It seemed complicated at first but isn’t so bad now. I suspect that thttpd will require a similar structure. I plan to create modules to allow the use of thttpd and tux (possibly also lighttpd) with web-cp. Obviously, certain features are lost when you use these web servers since things like mod_bandwidth, .htaccess, etc are apache-only but for serving static content, these provide drastic improvement (better capability and lower resource usage) over apache.

One other possibility would be to allow a specific web server to be selected on a per-domain (or per sub-domain / per-pointer) basis. This would allow one to use apache as the main web server for www.domain.tld and use tux to serve static images/pages/downloads from a subdomain such as static.domain.tld. The best of both worlds!

So, what are your favorite apache alternatives? Would you use them as a main processor and use apache to serve certain kinds of content or can they handle pretty much anything you would want to use? What makes them better / worse than apache? How well do they support virtual domains?