Notebook (Posts about hosting)/categories/hosting.atom2019-05-05T21:20:57ZToni MüllerNikolaHosting Interchange on Nginx/posts/hosting-interchange-on-nginx/2012-09-20T00:30:00+02:002012-09-20T00:30:00+02:00Toni Mueller<div><p>A while back,
<a href="http://lists.akopia.com/pipermail/interchange-users/2011-April/052879.html">Geert van der Spoel</a>
made a public statement about how to run
<a href="http://www.icdevgroup.org">Interchange</a> on <a href="http://nginx.org">nginx</a>,
a very fine webserver which I like and use since a few years ago.</p>
<p>Geert's notes got me on track to finally attempt to abandon Apache for
our Interchange hosting as well, and, although in a hurry, I converted
my website to a similar scheme. As the way Geert interfaces to the
Interchange stuff seemed too complicated to me, and since we do not
have much traffic, I thought that there should be an easy
way. Therefore, instead of creating a Perl-based FastCGI launcher, I
simply perused the provided link programs, which I then start using
<a href="http://nginx.localdomain.pl/wiki/FcgiWrap">fcgiwrap</a> (thanks,
Grzegorz!). Also, in contrast to earlier deployments, I wanted to stay
within standard system configurations and packaging, too. Our URL
configuration is such that all URLs go to Interchange, except for
static images and such.</p>
<p>The relevant part of our nginx configuration now looks like this (Debian host):</p>
<pre class="code literal-block"><span></span><span class="err">#</span> <span class="nt">standard</span> <span class="nt">Debian</span> <span class="nt">location</span> <span class="nt">for</span> <span class="nt">Interchange</span>
<span class="nt">location</span> <span class="o">^~</span> <span class="o">/</span><span class="nt">cgi-bin</span><span class="o">/</span><span class="nt">ic</span> <span class="p">{</span>
<span class="err">root</span> <span class="err">/usr/lib</span><span class="p">;</span>
<span class="err">fastcgi_pass</span> <span class="n">unix</span><span class="p">:</span><span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">run</span><span class="o">/</span><span class="n">fcgiwrap</span><span class="o">.</span><span class="n">socket</span><span class="p">;</span>
<span class="err">#</span> <span class="err">this</span> <span class="err">stuff</span> <span class="err">comes</span> <span class="err">straight</span> <span class="err">from</span> <span class="n">Geert</span><span class="p">:</span>
<span class="n">gzip</span> <span class="kc">off</span><span class="p">;</span>
<span class="err">expires</span> <span class="err">off</span><span class="p">;</span>
<span class="err">set</span> <span class="err">$path_info</span> <span class="err">$request_uri</span><span class="p">;</span>
<span class="err">if</span> <span class="err">($path_info</span> <span class="err">~</span> <span class="err">"^(</span><span class="cp">[</span><span class="p">^</span><span class="o">\?</span><span class="cp">]</span><span class="err">*)\?")</span> <span class="err">{</span>
<span class="err">set</span> <span class="err">$path_info</span> <span class="err">$1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">include</span> <span class="nt">fastcgi_params</span><span class="o">;</span>
<span class="nt">fastcgi_read_timeout</span> <span class="nt">5m</span><span class="o">;</span>
<span class="err">#</span> <span class="nt">name</span> <span class="nt">your</span> <span class="nt">shop</span><span class="err">'</span><span class="nt">s</span> <span class="nt">link</span> <span class="nt">program</span><span class="o">:</span>
<span class="nt">fastcgi_index</span> <span class="o">/</span><span class="nt">cgi-bin</span><span class="o">/</span><span class="nt">ic</span><span class="o">/</span><span class="nt">shop1</span><span class="o">;</span>
<span class="nt">fastcgi_param</span> <span class="nt">SCRIPT_NAME</span> <span class="o">/</span><span class="nt">cgi-bin</span><span class="o">/</span><span class="nt">ic</span><span class="o">/</span><span class="nt">shop1</span><span class="o">;</span>
<span class="nt">fastcgi_param</span> <span class="nt">SCRIPT_FILENAME</span> <span class="o">/</span><span class="nt">usr</span><span class="o">/</span><span class="nt">lib</span><span class="o">/</span><span class="nt">cgi-bin</span><span class="o">/</span><span class="nt">ic</span><span class="o">/</span><span class="nt">shop1</span><span class="o">;</span>
<span class="nt">fastcgi_param</span> <span class="nt">PATH_INFO</span> <span class="o">$</span><span class="nt">path_info</span><span class="o">;</span>
<span class="nt">fastcgi_param</span> <span class="nt">HTTP_COOKIE</span> <span class="o">$</span><span class="nt">http_cookie</span><span class="o">;</span>
<span class="err">}</span>
</pre>
<p>Enjoy!</p></div>Python BarCamp 2011/posts/python-barcamp-2011/2011-04-17T12:17:00+02:002011-04-17T12:17:00+02:00Toni Mueller<div><p>Yesterday, I went to the <a href="http://pythoncamp.de/">Python BarCamp</a>. In
the process, I discovered the collaboration tool
<a href="http://etherpad.org/">etherpad</a>, which nicely complements PasteBins
(eg. http://pastie.org, http://pastebin.ca/, or
http://pastebin.com/). The session protocls have their
<a href="http://openetherpad.org/pycamp">own etherpad page</a>.</p>
<p>The disscussions covered a broad range of subjects, including how to
interface with modules written in C, practical hosting questions,
several talks on testing, the small high-performance web server
<a href="http://www.tornadoweb.org/">Tornado</a>, and the latest developments in
<a href="http://www.djangoproject.com">Django</a>, now in version 1.3. Regarding
Django, the speaker highlighted a number of new features which were
being implemented by using mixin classes. Although some quantitative
analysis would be required to really assess this development, I had
some strong repercussions about the Zope2 development that eventually
caused the initially painful, but highly liberating, Zope3
development.</p>
<p>For everyone interested, the event continues to this evening, so hurry
if you haven't been there yet. You should already be in or near
Cologne, though, due to the limited time remaining.</p></div>