Edgewall Software

Version 10 (modified by anonymous, 17 years ago) ( diff )

Windows Installation Instructions for Subversion w/Trac 0.7.1


  • Windows 2003 Server SP1
  • IIS 6

Trac running on Microsoft's Internet Information Server (IIS) is _highly_ experimental. See #692 #693 and #697.

Trac running without Apache or IIS: using tracd and svnserve is experimental (tracd) but the performance improvement is very significant over cgi. See TracOnWindowsSansApacheOrIis (TBD).

Note: This example installs to F: (for extra points, then goes DarkReign hard with a separate application pool and so on.)

Arm Yourself

  1. Get & Read book http://svnbook.red-bean.com

Install Subversion Pre-Requisites

  1. Install Python http://www.python.org

Add F:\Python23 to path

Note that installing to a path that contains spaces is likely to break the install (iis6 doesn't seem to like cgi interpreters with spaces in their path).

  1. Install IIS Control panel, Configure server roles…
  1. Install Subversion http://subversion.tigris.org (remember to get the python bindings as well)
  1. Install docutils http://docutils.sourceforge.net/
      expand and run from the expanded docutils-xxx directory
      > D:\python23\python install.py

Create Repository

  1. Create repository
    F:\> svnadmin create f:\tracsvn --fs-type fsfs

The bdb repo type doesn't work well with a cgi trac on windows (possibly locking?). The fsfs type works quite well though.

  1. Create skeleton repository structure in f:\temp\project Example:
  1. Build repository tree
    f:\> svn import f:\temp\project file:///f:/tracsvn/ -m "Initial Load"
  1. Create local sandbox
    f:\> svn checkout file:///f:/svn/repo1 f:\project

Configure IIS

  1. Create the Service-Trac (local) user
    • Add Service-Trac to the IIS_WPG (local) group
  1. Allow the Service-Trac user to run cgi scripts.
    • Grant Service-Trac the following permissions in the 'Local Security Policy' control panel:
      • Security Settings > Local Policies > User Rights Assignment > Adjust Memory Quotas for a process
      • Security Settings > Local Policies > User Rights Assignment > Replace a process level token
      • Together these permission allow the Service-Trac user to run cgi scripts.
      • Add Service-Trac to the IIS_WPG group (it's going to be the identity for an IIS Application pool.
      • See http://www.microsoft.com/resources/documentation/iis/6/all/proddocs/en-us/ca_configcgi.mspx for more information.
  1. Add a Python CGI web service extension to IIS In the IIS control panel add a new web service extension. The required file is [F:\Python23\python.exe -u "%s" %s]. You will also need to enable this extension.
  1. IIS virtual directories Add a virtual directory for /trac in the IIS control panel. It doesn't need execute permissions of any description as that will be taken care of by /trac/cgi-bin. Map this to [F:\Python23\share\trac\htdocs].

Add a cgi-bin vdir under /trac in the IIS control panel. It needs script execute permissions. Map this to [F:\Python23\share\trac\cgi-bin].

  1. IIS Application Pool Add a new application pool in the IIS control panel. Change the Identity of the new pool to Configurable and enter the details for the Service-Trac user you defined earlier.

Change the Application settings of the /trac/cgi-bin vdir: click Configuration and select the Mappings tab. Add a new mapping.

  • Executable: [F:\Python23\python.exe -u "%s" %s] - note that this must be identical to the web service extension added earlier
  • Extension: [py]
  • Verbs: All verbs
  • Script Engine: checked
  • Verify that file exists: unchecked

Change the Application Pool setting of the cgi-bin vdir to the pool you just created.

  1. Fix up permissions Change the ownership of F:\tracsvn to Service-Trac. You may also need to change the ownership or grant write/modify on F:\Python23\Lib\site-packages\trac to Service-Trac (so it can write pyc files). Service-Trac will need read access to F:\Python23\share\trac

Install Trac Prerequisites

  1. Install Subversion Python Bindings (Get from same download page as Subversion)
    Copy libsvn and svn directories to F:\Python23\Lib
  1. Install SQLite http://www.sqlite.org
    Copy sqlite.exe to F:\Program Files\SQLite This is really optional. Don't let it mess your disk unless something exceptional not described here happens.
  1. Install PySQLite http://pysqlite.sourceforge.net
  1. Install ClearSilver http://www.clearsilver.net NOT necessary if you use the Trac .exe installer - go back and download it ;)
  1. Install Trac http://www.edgewall.com/products/trac/
    python ./setup.py install

Fix a few things

  1. Rename and fix CGI F:\Python23\share\trac\cgi-bin\trac.py should be F:\Python23\share\trac\cgi-bin\wtrac.py or similar (trac.py breaks with a can't find core.py error)

In wtrac.py add the line [import os;os.environTRAC_ENV = 'F:
trac.db'] to the first try block as shown here:

    import os;os.environ['TRAC_ENV'] = 'F:\\tracsvn\\trac.db'
    import trac.core

You will still need the except block that follow the original

The TRAC_ENV line is important as IIS6 won't pass this environment variable to the script when it runs.

23a. Fix core.py

In F:\Python23\Lib\site-packages\trac\core.py, change the real_cgi_start function where it says

    path_info = os.getenv('PATH_INFO')

Change this to:

    path_info = os.getenv('PATH_INFO').replace(os.getenv('SCRIPT_NAME'),"")

In the redirect function on the Request class, change the first part of the method to read:

    def redirect(self, url):
	base_url = '%s://%s' % ("http", os.getenv('SERVER_NAME'))
        self.send_header('Location', base_url + url)

Configure Trac DB

The trac database can be named to match the subversion repository it is working with, which is especially useful if more than one repository will ever be created. However, I'm not going to try that here (re: DarkReign hard).

  1. Run trac-admin
    f:\Python23\Scripts> python trac-admin f:/tracsvn/trac.db
  1. Initialize DB
    Trac [f:/tracsvn/trac.db]> initdb


Trac [f:/tracsvn/trac.db]> initenv
  Enter project name
  Enter path to repository
  Enter path to templates

If you get an error here stating that libdb42.dll was not found, copy [SVN PATH]\bin\libdb42.dll to [PYTHON PATH]\lib\libsvn\, then try again.

  1. BUG Load Wiki
    Trac [f:/tracsvn/trac.db]> wiki load f:/python23/share/trac/wiki-default
  1. Add administrative permissions (the below adds all permissions for 'admin' user)
    Trac [f:/tracsvn/trac.db]>
    permission add admin TRAC_ADMIN

Note that if you're using windows authentication with iis6 you can grant permissions to windows users here. Eg.

Trac [f:/tracsvn/trac.db]>

permission add STAR\Administrator TRAC_ADMIN

If your iis server's windows network name is "STAR", or your iis server is in the "STAR" domain.


  1. Install Subversion clients as necessary (try RapidSVN & TortoiseSVN)
  1. Don't forget to lock down the security on the box!
  1. Now go get a *real* drink
Note: See TracWiki for help on using the wiki.