<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:black;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1684355706;
        mso-list-type:hybrid;
        mso-list-template-ids:1629675668 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Seemed easier to me to do it that way, especially since I could debug any errors/issues by visiting the 5000 website directly and in the output window (or logs, when redirected). Also, wasn’t sure about https with the WSGI app, although that probably would just work. Maybe I’m just overworking this, but I had already installed Kallithea on Ubuntu and used Apache as a reverse-proxy and thought I’d do the same on my Windows box.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I’ll see about presenting a patch, need to find the time.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thank you,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><p class=MsoNormal><span style='color:#1F497D'>Nochum Sossonko,</span><span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>IT Director</span><span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Georgian American Alloys, Inc</span><span style='color:#1F497D'><o:p></o:p></span></p></div><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='color:windowtext'>From:</span></b><span style='color:windowtext'> Mads Kiilerich [mailto:mads@kiilerich.com] <br><b>Sent:</b> Friday, April 24, 2015 11:24 AM<br><b>To:</b> Nochum Sossonko; kallithea-general@sfconservancy.org<br><b>Subject:</b> Re: Kallithea on Windows<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>On 04/24/2015 03:04 PM, Nochum Sossonko wrote:<span style='font-size:12.0pt'><o:p></o:p></span></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal>Hi,<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>We are using Kallithea as our SCM in our company (very nice, btw) installed on a Windows Server 2008 R2. The installation process was pretty straightforward but I did some things that I could not find in the online documentation so I figured I’d post my “findings” here in case it will help anyone else (and for inclusion in the docs, as appropriate).<o:p></o:p></p></blockquote><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><br>Thanks for sharing!<br><br>Please consider providing this as a patch to our documentation. We are all users of the system and if we all contribute we will get all more than we give ;-) The documentation has a lot of room for improvement - probably even more on windows where we only have few users.<br><br>I assume "run the Kallithea server on startup" means using the small web server in 'paster serve' to run the WSGI application?<br>Why did you decide to use IIS as reverse proxy instead of running Kallithea inside IIS as described on <a href="http://docs.kallithea-scm.org/en/latest/installation_iis.html">http://docs.kallithea-scm.org/en/latest/installation_iis.html</a> ?<br><br>/Mads<br><br><br><br><o:p></o:p></span></p><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal> <o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]><span dir=LTR></span>After following the normal install steps, I wanted to use IIS as a reverse-proxy to the Kallithea server. To get this done properly, I did the following:<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>a.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]><span dir=LTR></span>Install IIS Rewrite Module and Application Request Routing.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-1.5in;mso-text-indent-alt:-9.0pt;mso-list:l0 level3 lfo2'><![if !supportLists]><span style='mso-list:Ignore'><span style='font:7.0pt "Times New Roman"'>                                                                                       </span>i.<span style='font:7.0pt "Times New Roman"'>      </span></span><![endif]><span dir=LTR></span><a href="http://www.iis.net/downloads/microsoft/url-rewrite">http://www.iis.net/downloads/microsoft/url-rewrite</a><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-1.5in;mso-text-indent-alt:-9.0pt;mso-list:l0 level3 lfo2'><![if !supportLists]><span style='mso-list:Ignore'><span style='font:7.0pt "Times New Roman"'>                                                                                     </span>ii.<span style='font:7.0pt "Times New Roman"'>      </span></span><![endif]><span dir=LTR></span><a href="http://www.iis.net/downloads/microsoft/application-request-routing">http://www.iis.net/downloads/microsoft/application-request-routing</a><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>b.<span style='font:7.0pt "Times New Roman"'>      </span></span><![endif]><span dir=LTR></span>Enable proxying at the global, server level (this can be done in the IIS GUI via “Application Request Routing” icon -> Server Proxy Settings link on the right-hand side).<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>c.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]><span dir=LTR></span>In that same settings window (very important!!) uncheck “Include TCP port from client IP” under the “X-Forwarded-For” setting.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>d.<span style='font:7.0pt "Times New Roman"'>      </span></span><![endif]><span dir=LTR></span>Under query string support, select “Include query string”.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>e.<span style='font:7.0pt "Times New Roman"'>      </span></span><![endif]><span dir=LTR></span>Leave all other settings there as-is.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>f.<span style='font:7.0pt "Times New Roman"'>        </span></span><![endif]><span dir=LTR></span>Create a new site and make make a new IIS Rewrite rule via the IIS Rewrite icon on the site.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>g.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]><span dir=LTR></span>Select “Reverse Proxy” and fill out the proxy URL as “127.0.0.1:5000” and check “Enbable SSL Offloading”.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>h.<span style='font:7.0pt "Times New Roman"'>      </span></span><![endif]><span dir=LTR></span>After the rule is created, open it and check that the URL is correct (with the proper port) and check “Append Query String”.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>i.<span style='font:7.0pt "Times New Roman"'>         </span></span><![endif]><span dir=LTR></span>Finally, run the following command to fix the clone url: appcmd.exe set config -section:system.webServer/proxy /preserveHostHeader:"True" /commit:apphost<o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-1.5in;mso-text-indent-alt:-9.0pt;mso-list:l0 level3 lfo2'><![if !supportLists]><span style='mso-list:Ignore'><span style='font:7.0pt "Times New Roman"'>                                                                                       </span>i.<span style='font:7.0pt "Times New Roman"'>      </span></span><![endif]><span dir=LTR></span>This is a server-wide setting, there is no way to set this on the site level.<o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]><span dir=LTR></span>Then, I wanted an ultra-simple way to run the Kallithea server on startup, so I created a task that runs on startup and uses a batch file to run the paster command. I won’t paste the event file here, as it is a very simple thing to do, but I can provide if anyone is interested.<o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]><span dir=LTR></span>I also made an event to run the paster make-index command to update the Whoosh full-text search indexes every 2 hours.<o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>       </span></span><![endif]><span dir=LTR></span>Finally, I ran into an issue where my server was returning a 500 for certain code files (eg, .csproj and .cs files) and had to modify the Request Filtering on the Kallithea site (via the icon of the same name) -> File Name Extensions to allow these files to be served.<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Not much in the way of innovation, but figured I’d share <span style='font-family:Wingdings'>J</span><o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Thank you,<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>Nochum Sossonko,</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>IT Director</span><o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'>Georgian American Alloys, Inc</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></blockquote><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p></div></body></html>