Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Given a web application that would need to run on the customer's servers, and installed by the system administrators on the customer's side, which technology stack would result in an easier deployment with least amount of "server surgery" done by the sysadmins?

Our target platforms are Windows/IIS/SQLServer and Linux/Apache/MySQL, but since the customer's web server host could be anything from a freshly opened Windows box to a fully patched and up-to-date Ubuntu machine, we're trying to find the technology which would result in least amount of work for the system administrators (read, minimize our support requirements).

The typical options are, of course, PHP, Python, ASP.Net (running Mono for the Linux installations), Rails, Java, etc.

Some of the things to consider would be whether an average "out of the box" web server running IIS or Apache would have the required libraries to install the product if it were built using one technology rather than another. For example, a PHP-based solution would probably be easier for the customer to deploy on a Linux machine as opposed to having to install mono and whatever other dependencies would be required to run an ASP.Net solution on a Linux machine as a web app.

Aside from that, there are questions of having the right balance between "out-of-the-box" functionality and "easy-integration", such as: would an included web server be of help? Or does that just make things more confusing when Apache is already running on port 80?

We're working on the assumption that the customer has some access to a system administrator, but perhaps not a full-time/dedicated one -- something like a shared web host account.

Given that, we want the customer to be able to have the least amount of friction in installing the web app on their web server, and we're debating the right technology stack to use for that.

share|improve this question
    
community wiki ... –  Kyle Brandt Jul 28 '09 at 19:45
add comment

6 Answers

up vote 0 down vote accepted

In most cases, I would expect the answer to be PHP/MySQL or .NET/MSSQL. I work with a lot of clients (not in IT) who are in one shop or the other - and if the application they need to install doesn't sit on their existing infrastructure then they might coo over it but then they'll move on - even if you provide good documentation and tutorials how to install php support on IIS or whatever (seemingly trivial) add-on is required.

If you are targetting customers who only have access to a part-time/put-upon sys-admin or who might be using shared hosting then I would think you really need to offer something as simple as the Wordpress 5 minute install. If you've already got a shared hosting plan you are not going to want another webserver installed, and you may not have enough access to add support for PHP (if you're on a Windows hosting plan and vice-versa).

Personally I would look at which is the easiest platform for you to develop on and how you can port that to the other side.

share|improve this answer
add comment

You can write your app in PHP and the only add for the IIS admin is fastcgi and PHP.(tutorial here). You're going to have dependancies on either platform that need to be resolved no matter what route you take. From a support side there are far fewer varibles on the windows side vs the linux side. If you choose to target ASP.net you can get a slew of debugging info out of the box from the .net platform. Windows web hosting is also standardized (as long as the web host is actually licensed to do webhosting- which is certainly a caveat you can pass on to your customers), and you can easily verify that the server it set up according to spec.

share|improve this answer
add comment

You could use Python. It works well cross-platform, comes installed in most Linux distributions and is easy to install on Windows (see ActiveState Python). You can write your own web server in a few lines of code which can work on Linux or run as a Windows service.

share|improve this answer
add comment

I have seen a lot of apps that rely on a stack to distribute the entire stack preconfigured for their application. Examples that I'm familiar with is Zimbra and Knowledge Tree. From the local administrators point of view they just have a single installer that contains everything they need already configured and ready to go.

Another option which may work out well is to go the virtual appliance route. Based on something like rpath or roll your own and make it available as images for Xen, VMWare, and Hyper-V.

share|improve this answer
add comment

It really depends on whther you're selling to a LAMP shop or a .NET shop. Your best bet for portability is PHP, but you might be able to do faster development using .NET or Rails, which would lock you in to one or the other stack (unless Mono is better that I've heard or Rails has good IIS support...). Coming from the Windows world, setting up a basic IIS config is completely trivial, even if you require SQL Express as well. You can even provide them with an answer file for servermanagercmd.exe and say "use this and it will install your web server for you.".

share|improve this answer
add comment

The best all-in-one type solution I've come up with so far (and, like you, I've put some thought into it) is Java. It's easy enough to get Java installed on Linux/Windows/Mac/BSD or whatever, it's pretty much always available. I've recently been using the Winstone Java servlet container:

http://winstone.sourceforge.net/

It's a small, self-contained web server - so self contained, in fact, that you can archive the whole thing as a single JAR file. The end user just runs the Jar file (just double-clicks, in most cases these days) and your server is running. This does, as you've pointed out, cause issues if there's something already running on port 80, but as it's a Java servlet you're creating anyway it's no extra effort to make that servlet available to the user too - if they don't want to run your all-in-one web server they can install the servlet in the standard way on their usual servlet container.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.