Just in Chronicles

Life as a Voyage

Posts Tagged ‘iis

How to Install the Latest Version of Mercurial Web Repository on Windows 2008 Server R2

with 6 comments

It’s a super pain to install HG on Windows 2008 Server R2. This post is based on Firegarden’s article and has additional information from other resources.


  • Windows 2008 Server R2
  • The latest version of Python: 2.7.3 (at the moment of writing)
  • The latest version of PyWin32: Build 217 (at the moment of writing)
  • The latest version of Mercurial: 2.2.2 (at the moment of writing)

Setup Process

Please note that if your choice of Python has to be consistent. In other words, if you choose Python of x86 version, all other applications have to be x86 version; if you choose Python of x64 version, all other applications have to be x64 version; otherwise, this will not be working for your system.

1. Installing Python.

As Mercurial doesn’t support Python 3.x, the latest version of Python we can use is 2.7.x.

  1. Go to the Python download page. http://www.python.org/download/releases
  2. Download the latest 2.7.x version of Python. Choose the platform carefully, if to be x86 or x64.
  3. Install Python downloaded. Make sure that the installation must be conducted by an administrator permission. During the installation process, let the installer set the default installation directory, which will be C:\Python2x.
  4. Add the Python path to the system environment path.
    1. Open “Control Panel” > “System and Security” > “System” > “Advanced System Settings
    2. Click “Environment Variables...” and find the “Path” variable under “System variables” section.
    3. Append “;C:\Python2x;” to the “Path” value. Make sure that the path value is delimited by semi-colons.
    4. Open a command prompt and type “python” at any directory and you will get into the python console. Press CTRL+Z to exit from the console.
    5. If you can’t run the “python” command on the command prompt, check the step 4.3 again. If the path has been correctly set, your server might need to reboot.

2. Installing PyWin32

Again, your choice of platform has to be consistant; if you have installed Python of x86 version, this also has to be x86 version; if you have installed Python of x64 version, this also has to be x64 version.

  1. Go to the Python for Windows Extensions download page. http://sourceforge.net/projects/pywin32/files/pywin32
  2. Go to the latest build and download an appropriate one corresponding to your Python version and platform. The filename looks like “pywin32-xxx.win32-py2.7.exe”
  3. Install the PyWin32 downloaded. Make sure that the installation must be conducted by an administrator permission.
  4. In case of error you might face at the end of the installation process. The message will look like:

    close failed in file object destructor:
    sys.excepthook is missing
    lost sys.stderr

    This is because of your administrator permission. For workaround of this: http://sourceforge.net/mailarchive/message.php?msg_id=29300152

    1. Click “Start Menu” > Right click on “Computer” > Click “Manage“.
    2. Go to “System Tools” > “Local Users and Groups” > “Users
    3. Create a new account named “Admin” and assign it to the “Administrators” group.
    4. Open a command prompt as an administrator and type

      runas /user:Admin pywin32-xxx.win32-py2.7.exe

      and type password you set previously.

    5. If you get an error “Access is denied“, close the command prompt and open it again as an administrator.

3. Building and Installing Mercurial from the Source Code.

As the latest version of Mercurial installer (2.2.2 at the moment of writing) is built with Python 2.6.6, the installer will not be running on our server. So, we need to build the source with Python that we have installed into our system.

  1. Go to the Mercurial download page. http://mercurial.selenic.com/downloads
  2. Download the source code and unzip it. We assume that the unzipped directory is “C:\hg-source“.
  3. Open a command prompte as an administrator and move to the unzipped directory.
  4. Run the following command to build Mercurial

    python setup.py --pure build_py -c -d . build_ext -i build_mo --force

    Even if you meet a warning like “warning: hgbuildmo: could not find msgfmt executable, no translations will be built“, just ignore it.

  5. Run the following command to install Mercurial

    python setup.py --pure install --force

    Mercurial will have been installed at “C:\Python2x\Lib\site-packages\mercurial

  6. In order to execute to “hg” command at anywhere, try the followings:
    1. Copy “c:\python2x\scripts\hg.bat” to “c:\python2x
    2. Open hg.bat and modify the line

      "%~dp0..\python" "%~dp0hg" %*


      "%~dp0python" "%~dp0\scripts\hg" %*

4. Installing ISAPI-WSGI Module

For better performance, we need to install ISAPI-WSGI module to build a DLL file.

  1. Go to the ISAPI-WSGI download page. http://code.google.com/p/isapi-wsgi/downloads/list
  2. Download the latest version of the source code. The precompiled version will not work for our setup.
  3. Unzip it. We assume that the unzipped directory is “C:\isapi-wsgi-source“.
  4. Run the following command to compile the source

    python setup.py install

5. Seting up IIS for the Mercurial Web Repository

As IIS doesn’t recognise Python and Hg natively, we need to setup IIS manually.

  1. Open IIS Manager.
  2. Create an application pool called “Mercurial” with the following configurations:
    1. Set “.NET Framework Version” to “No Managed Code
    2. Set “Enable 32-Bit Applications” to “True“, only if you have installed x86 version of Python.
  3. Create a website on IIS for the web repository. We assume that the directory is “C:\inetpub\hg” and its URL is “hg.myserver.com“. This has to point the application pool “Mercurial“.
  4. Copy the “hgwebdir_wsgi.py” file from the Mercurial source code downloaded to “C:\inetpub\hg“. It is located in “C:\hg-source\contrib\win32“.
  5. Open the “hgwebdir_wsgi.py“, find and edit the parameters below:

    hgweb_config = r'c:\inetpub\hg\hgweb.config'
    path_prefix = 0

  6. Create a new “hgweb.config” file in “C:\inetpub\hg” and place the following into it.

    / = c:\Repositories\*

  7. Open a command prompt as an administrator and move to the directory “C:\inetpub\hg“.
  8. Run the following command to build the ISAPI-WSGI library.

    python hgwebdir_wsgi.py

  9. Open Handler Mappings and click “Add Wildcard Script Map...” with followings:
    1. Set “Executable” to “c:\inutpub\hg\_hgwebdir_wsgi.dll” that has been created from the step 5.8.
    2. Set “Name” to “Mercurial-ISAPI“.
    3. If you are asked to allow the ISAPI extension, click “YES“.

So far, if everything is done smoothly, you can browse the web repository by typing the URL “http://mg.myserver.com” into your brower’s lcation bar.

This is optional. If you want to tie basic authentication function to the web repository, try the following steps.

6. Setting up Basic Authentication of IIS onto the Web Repository

  1. Create users and a user group.
    1. Click “Start Menu” > Right click on “Computer” > Click “Manage“.
    2. Go to “System Tools” > “Local Users and Groups” > “User Groups
    3. Create a user group, named “Mercurial Users
    4. Go to “System Tools” > “Local Users and Groups” > “Users
    5. Create as many users as you want and assign the users to the “Mercurial Users” group.
  2. Set the permission for the “Mercurial Users” group to only allow the access to “C:\inetpub\hg“.
  3. Create a self-signed certificate and bind the HTTPS protocol with “hg.myserver.com“.

Once everything is done, type “https://hg.myserver.com” and you will be asked to login to the site.

It would be great if you guys who are reading this article share your experiences regardless of success or failure.

Written by Justin Yoo

02/07/2012 at 18:16

Running Multiple Websites in IIS 5.1

Reference: Windows XP IIS Manager v1.7

There are still thousands of web developers running WindowsXP on their machine. It is true that WindowsXP, even though it is pretty much old operating system, provides robust developing environment to developers.

In order to debug and test their website built, the built-in IIS 5.1 should be used. Unlike Windows server products, however, it only serves one web site. In other words, running multiple web sites at the same time on IIS 5.1 is not possible. Of course we can run different web site by opening IIS manager, changing its property and running it, which is cumbersome.

The tool introduced in the link above reduces this bothering process to only one mouse click. It is very easy and intuitive to use.

Easy IIS 1.7

This is unnecessary for installation, so just download it and use it.

WindowsXP 자체가 오래된 운영체제이다보니 이 툴 역시도 오래된 것이긴 하다만 잘만 작동하면 장땡. 그냥 다운로드 받아서 실행시키면 끝. 원하는 만큼 웹사이트를 추가시킬 수 있음.

IIS 5.1의 특성상 한번에 한 웹사이트만 돌릴 수 있으니 동시에 여러 개의 웹사이트를 돌리고 싶다면 서버 운영체제를 설치해야 함.

Written by Justin Yoo

07/08/2009 at 05:10

Installing cURL Module for PHP on IIS

Reference: cURL Installation

When developers install PHP module onto IIS, cURL isn’t installed automatically, even though it is in the package.

There are two key files to use cURL.

  • ssleay32.dll
  • libeay32.dll

Installing cURL onto my IIS is:

  1. Copy both files stated above from C:\PHP5 and paste them to C:\Windows\System32.
  2. Uncomment extension=php_curl.dll in php.ini.
  3. Restart IIS.

That’s it! Enjoy your cURL life~

cURL 모듈이 PHP 패키지에 들어있음에도 불구하고 자동으로 IIS에 올라가지는 않는다. IIS에 올리려면 위와 같은 순서를 따라 하면 됨.

Written by Justin Yoo

14/07/2009 at 01:46

Posted in For PHP, For Windows

Tagged with , ,