[Web-SIG] WSGI apps on IIS

Ross Patterson me at rpatterson.net
Tue Oct 30 19:13:07 CET 2012


>From my blog post: http://rpatterson.net/software/wsgi-apps-on-iis

The `iiswsgi`_ module implements a FastCGI to `WSGI`_ gateway that is
compatible with `IIS`_'s variation of the `FastCGI protocol`_.  It also
provides `distutils`_ commands for building, distributing and installing
`Microsoft Web Deploy`_ (MSDeploy) packages through the `Web Platform
Installer`_ (WebPI).

The goals of the code in `iiswsgi`_ are to do the following for
deploying WSGI apps on IIS:

* make it open source as far as possible, right up to IIS
* be Pythonic as far as possible, right up to the MSDeploy packaging
* re-use our existing tool-chain for distributing packages
* share the maintenance burden for a WSGI on Windows story across the
  community

For the `Plone`_ project, it's always been simultaneously a necessity
that we support a Windows deployment story and one of our biggest pain
points.  The Windows installers have always been very different from
the other installers.  They have had different layouts from our user
and developer documentation and even from each other.  They have never
been maintained or supported by more than one entity, either a company
or an individual, and as such have often and ultimately languished.
And as for the poor individuals who have tackled the Windows
installers, they have almost always burned out and can no longer
provide any significant Windows support at all.  This is not a healthy
open source community dynamic.  And yet there is wide consensus that
it's not an option *not* to have a Windows deployment story.

My hope is that by generalizing the IIS deployment architecture as a
`WSGI server`_ and `distutils commands`_, it can be of use to the
general Python `WSGI`_ world.  I also hope that by doing things 'The
Right Way', it will be something that will be clearer and easy to
support and maintain.  With those two together maybe we can solve the
burnout issue by distributing the maintenance load.  I'd very much
appreciate any help to that end, particularly including feedback on
how to get there.  I don't care where the code lives and would be
happy to see some of it merged back into the packages it derives from
or moved into larger packages.  So please let me know if you'd like to
coordinate moving things around with me.

Help Needed
-----------

Any contributions are very welcome.  Here are a few things I'm looking
for in particular:

* addressing `Known Issues`_
* IIS app name and Python dist name conventions
* fostering community ownership
* writing tests

I'm particularly apologetic for the last one, I'm ashamed by the lack
of tests.  In my defense, this whole problem was such a fog for me
when I started that I just needed to start writing things and poking
around.  Believe me this is not my usual MO, I almost always do TDD
and beg your forgiveness.  :-)

I look forward to getting this going!

.. _`iiswsgi`: https://github.com/rpatterson/iiswsgi
.. _`WSGI`: http://wsgi.readthedocs.org/en/latest/
.. _`IIS`: http://www.iis.net
.. _`FastCGI protocol`: http://www.fastcgi.com/drupal/
.. _`distutils`: http://docs.python.org/distutils/
.. _`Microsoft Web Deploy`: http://www.iis.net/downloads/microsoft/web-deploy
.. _`Web Platform Installer`: http://www.microsoft.com/web/downloads/platform.aspx
.. _`Plone`: http://plone.org
.. _`WSGI server`: https://github.com/rpatterson/iiswsgi#iiswsgi-fcgi-gateway
.. _`distutils commands`: https://github.com/rpatterson/iiswsgi#build-msdeploy-package
.. _`Known Issues`: https://github.com/rpatterson/iiswsgi#known-issues



More information about the Web-SIG mailing list