<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Gentoo on Ulis Notizen</title>
    <link>https://wolf-u.li/tag/gentoo/</link>
    <description>Recent content in Gentoo on Ulis Notizen</description>
    <generator>Hugo</generator>
    <language>de</language>
    <copyright>Copyright 2006-CURRENTYEAR Uli Wolf - All rights reserved</copyright>
    <lastBuildDate>Mon, 22 May 2017 20:51:09 +2200</lastBuildDate>
    <atom:link href="https://wolf-u.li/tag/gentoo/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Probleme mit neuer Netzwerkkarte nach Austausch unter Gentoo</title>
      
      
      <link>https://wolf-u.li/probleme-mit-neuer-netzwerkkarte-nach-austausch-unter-gentoo/</link>
      <pubDate>Mon, 18 Jun 2007 11:37:17 +1800</pubDate>
      <guid>https://wolf-u.li/probleme-mit-neuer-netzwerkkarte-nach-austausch-unter-gentoo/</guid>
      <description>&lt;p&gt;Sehr geehrter Leser :)
lang lang ist&amp;rsquo;s her, dass ich das letzte Mal gebloggt habe, mittlerweile hat sich viel getan und vor allem bin ich mittlerweile ein Gentoo-Fan (was nicht heisst, dass ich gar kein Debian mehr betreibe).&lt;/p&gt;
&lt;p&gt;Mein letztes Problem mit Gentoo war eine neue Netzwerkkarte, nachdem die alte ein paar Macken aufwies. Die alte Onboard-Netzwerkkarte wurde entfernt und stattdessen eine &amp;ldquo;Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 0c)&amp;rdquo; als PCI-Steckkarte installiert. Natürlich musste der Kernel neu gebaut werden, die Optionen &amp;ldquo;CONFIG_EEPRO100=y&amp;rdquo; und &amp;ldquo;CONFIG_E100=y&amp;rdquo; wurden so fest in den Kernel einkompiliert.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Sehr geehrter Leser :)
lang lang ist&rsquo;s her, dass ich das letzte Mal gebloggt habe, mittlerweile hat sich viel getan und vor allem bin ich mittlerweile ein Gentoo-Fan (was nicht heisst, dass ich gar kein Debian mehr betreibe).</p>
<p>Mein letztes Problem mit Gentoo war eine neue Netzwerkkarte, nachdem die alte ein paar Macken aufwies. Die alte Onboard-Netzwerkkarte wurde entfernt und stattdessen eine &ldquo;Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 0c)&rdquo; als PCI-Steckkarte installiert. Natürlich musste der Kernel neu gebaut werden, die Optionen &ldquo;CONFIG_EEPRO100=y&rdquo; und &ldquo;CONFIG_E100=y&rdquo; wurden so fest in den Kernel einkompiliert.</p>
<p>Nach einem Reboot meldete das Syslog jedoch folgende Fehlermeldung:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">rc-scripts: network interface eth0 does not exist
</span></span><span class="line"><span class="cl">rc-scripts: Please verify hardware or kernel module (driver)
</span></span><span class="line"><span class="cl">rc-scripts: ERROR: cannot start sshd as net.eth0 could not start
</span></span></code></pre></td></tr></table>
</div>
</div><p>was mich ein wenig erstaunte, denn dmesg meldete:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">eepro100.c:v1.09j-t 9/29/99 Donald Becker http://www.scyld.com/network/eepro100.html
</span></span><span class="line"><span class="cl">eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin  and others
</span></span><span class="line"><span class="cl">ACPI: PCI Interrupt 0000:00:08.0[A] -&gt; GSI 16 (level, low) -&gt; IRQ 16
</span></span><span class="line"><span class="cl">eth0: OEM i82557/i82558 10/100 Ethernet, 00:03:47:B0:ED:D3, IRQ 16.
</span></span><span class="line"><span class="cl">Board assembly a29355-003, Physical connectors present: RJ45
</span></span><span class="line"><span class="cl">Primary interface chip i82555 PHY #1.
</span></span><span class="line"><span class="cl">General self-test: passed.
</span></span><span class="line"><span class="cl">Serial sub-system self-test: passed.
</span></span><span class="line"><span class="cl">Internal registers self-test: passed.
</span></span><span class="line"><span class="cl">ROM checksum self-test: passed (0x3258698e).
</span></span><span class="line"><span class="cl">e100: Intel(R) PRO/100 Network Driver, 3.5.17-k2-NAPI
</span></span><span class="line"><span class="cl">e100: Copyright(c) 1999-2006 Intel Corporation
</span></span></code></pre></td></tr></table>
</div>
</div><p>Diese Meldungen kommen sowohl, wenn ich mir die IP über DHCP zuweisen lassen würde (in /etc/conf.d/net eingestellt) oder fest eintrage. Ich konnte jedoch ohne Probleme mit dieser Netzwerkkarte ein Rescue-System booten und darin arbeiten, was meine Erklärung dafür war, dass warum meines Erachtens die neue Karte nicht kaputt sein konnte</p>
<p>Ich habe die Karte natürlich über &ldquo;rc-update add net.eth0 default&rdquo; zum Starten angewiesen, der Link ist auch korrekt erstellt (und hat mit der alten Karte funktioniert).</p>
<p>Letztendlich wusste ich nicht mehr weiter und meldete mein Problem im offiziellen Gentoo-Forum, wo mir innerhalb von wenigen Minuten geholfen werden konnte. Das Problem hätte mir auffallen müssen, als folgende Einträge im Log aufgetaucht sind:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">udevd-event[5100]: run_program: exec of program &#39;/sbin/udev_run_hotplugd&#39; failed
</span></span><span class="line"><span class="cl">udevd-event[5101]: run_program: exec of program &#39;/sbin/udev_run_devd&#39; failed
</span></span></code></pre></td></tr></table>
</div>
</div><p>Das Problem war relativ einfach in den Griff zu bekommen (<link rel=dns-prefetch href=//forums.gentoo.org /> <a href="http://forums.gentoo.org/viewtopic-t-562337.html"
    title="Quelle" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Quelle&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>):</p>
<p>In der Datei <code>/etc/udev/rules.d/70-persistent-net.rules</code> stand bei mir folgendes:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl"># This file was automatically generated by the /lib/udev/write_net_rules
</span></span><span class="line"><span class="cl"># program, probably run by the persistent-net-generator.rules rules file.
</span></span><span class="line"><span class="cl">#
</span></span><span class="line"><span class="cl"># You can modify it, as long as you keep each rule on a single line.
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># PCI device 0x1106:0x3065 (via-rhine)
</span></span><span class="line"><span class="cl">SUBSYSTEM==&#34;net&#34;, DRIVERS==&#34;?*&#34;, ATTRS{address}==&#34;00:0c:6e:92:02:aa&#34;, NAME=&#34;eth0&#34;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"># PCI device 0x8086:0x1229 (e100)
</span></span><span class="line"><span class="cl">SUBSYSTEM==&#34;net&#34;, DRIVERS==&#34;?*&#34;, ATTRS{address}==&#34;00:03:47:b0:ed:d3&#34;, NAME=&#34;eth1&#34;
</span></span></code></pre></td></tr></table>
</div>
</div><p>Man beachte hierbei: VIA Rhine war meine vorherige Netzwerkkarte, die e100 meine neue. Die neue Karte wurde von udev einfach als eth1 eingetragen und war daher auch nicht unter eth0 erkannt worden. Ich habe nun schlicht und einfach die alte rausgeworfen, bei e100 auch eth0 eingetragen und schon war das Problem behoben.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl"># PCI device 0x8086:0x1229 (e100)
</span></span><span class="line"><span class="cl">SUBSYSTEM==&#34;net&#34;, DRIVERS==&#34;?*&#34;, ATTRS{address}==&#34;00:03:47:b0:ed:d3&#34;, NAME=&#34;eth0&#34;
</span></span></code></pre></td></tr></table>
</div>
</div><p>Vielen Dank ans <link rel=dns-prefetch href=//forums.gentoo.org /> <a href="http://forums.gentoo.org"
    title="Gentoo-Forum" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Gentoo-Forum&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> für den schnellen Support, vielleicht hilft dieser Post dem einen oder anderen verzweifelten Gentoo-Besitzer</p>
]]></content:encoded>
    </item>
    <item>
      <title>mod_bw unter Gentoo installieren - Bandbreitenbegrenzung für den Webserver Apache 2.2</title>
      
      
      <link>https://wolf-u.li/mod_bw-unter-gentoo-installieren-bandbreitenbegrenzung-fuer-den-webserver-apache-22/</link>
      <pubDate>Sat, 19 Apr 2008 22:13:44 +1900</pubDate>
      <guid>https://wolf-u.li/mod_bw-unter-gentoo-installieren-bandbreitenbegrenzung-fuer-den-webserver-apache-22/</guid>
      <description>&lt;p&gt;Heute habe ich mich mit der Bandbreitenbegrenzung für einzelne Vhosts eines Webservers beschäftigt. Da ich Apache 2.2 einsetze, musste das Modul damit kompatibel sein. www-apache/mod_cband-0.9.7.5 und www-apache/mod_bw-0.7 waren das leider nicht. Es gab jedoch einen &lt;link rel=dns-prefetch href=//sourceforge.net /&gt; &lt;a href=&#34;http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1378369&amp;amp;group_id=147230&amp;amp;atid=767737&#34;
    title=&#34;Patch&#34; 
     target=&#34;_blank&#34; rel=&#34;nofollow noopener noreferrer&#34; &gt;
  Patch&amp;nbsp;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;icon&#34; aria-hidden=&#34;true&#34; focusable=&#34;false&#34; viewBox=&#34;0 -128 512 640&#34;&gt;
    &lt;path d=&#34;M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z&#34;/&gt;
  &lt;/svg&gt;&lt;/a&gt; für mod_bw, der das Problem beheben sollte. Ein genauerer Blick auf gentoo-portage.com zeigte mir, dass es bereits eine stable Version &lt;link rel=dns-prefetch href=//www.ivn.cl /&gt; &lt;a href=&#34;http://www.ivn.cl/apache/&#34;
    title=&#34;0.8&#34; 
     target=&#34;_blank&#34; rel=&#34;nofollow noopener noreferrer&#34; &gt;
  0.8&amp;nbsp;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;icon&#34; aria-hidden=&#34;true&#34; focusable=&#34;false&#34; viewBox=&#34;0 -128 512 640&#34;&gt;
    &lt;path d=&#34;M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z&#34;/&gt;
  &lt;/svg&gt;&lt;/a&gt; gibt, welche Apache 2.2 kompatibel ist.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Heute habe ich mich mit der Bandbreitenbegrenzung für einzelne Vhosts eines Webservers beschäftigt. Da ich Apache 2.2 einsetze, musste das Modul damit kompatibel sein. www-apache/mod_cband-0.9.7.5 und www-apache/mod_bw-0.7 waren das leider nicht. Es gab jedoch einen <link rel=dns-prefetch href=//sourceforge.net /> <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1378369&amp;group_id=147230&amp;atid=767737"
    title="Patch" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Patch&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> für mod_bw, der das Problem beheben sollte. Ein genauerer Blick auf gentoo-portage.com zeigte mir, dass es bereits eine stable Version <link rel=dns-prefetch href=//www.ivn.cl /> <a href="http://www.ivn.cl/apache/"
    title="0.8" 
     target="_blank" rel="nofollow noopener noreferrer" >
  0.8&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> gibt, welche Apache 2.2 kompatibel ist.</p>
<p>Über <code>emerge -av mod_bw</code> sollte nun die Version 0.8 installieren. Sobald diese installiert ist, muss man in <code>/etc/conf.d/apache2</code> den mod_bw noch aktivieren. Dazu wird zu den <code>APACHE2_OPTS</code> einfach &quot; <code>-BW</code>&quot; hinzugefügt. Der mod_bw ist jetzt soweit installiert.</p>
<p>Es gibt verschiedene Konfigurationsoptionen für den mod_bw.
Unterschied zwischen einer &ldquo;globalen&rdquo; und einer Vhost-spezifischen Konfiguration:
Die &ldquo;globale&rdquo; Konfiguration gilt für alle Vhosts des Apachen. Diese wird in <code>/etc/apache2/modules.d/11_mod_bw.conf</code> gemacht. Darin stehen nach der Installation schon einige Vorschläge zur Konfiguration, allerdings sind diese noch stark ausbaufähig.
Die Vhost-spezifische Konfiguration gilt nur für einen Vhost und kann diesen speziell begrenzen.</p>
<p>Die Direktiven in der Übersicht:</p>
<ul>
<li>Bandwidth</li>
<li>BandWidthError</li>
<li>BandwidthModule</li>
<li>BandWidthPacket</li>
<li>ForceBandWidthModule</li>
<li>LargeFileLimit</li>
<li>MaxConnection</li>
<li>MinBandwidth</li>
</ul>
<h2 id="bandwidth">BandWidth</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidth [Quelle] [bytes/s]
</span></span></code></pre></td></tr></table>
</div>
</div><p>&ldquo;Quelle&rdquo; kann verschieden angegeben werden:</p>
<ul>
<li>Voller Hostname</li>
<li>Teil einer Domain</li>
<li>IP-Adresse</li>
<li>Adressbereich (z.B.: 192.168.0.0/24 oder 192.168.0.0/255.255.255.0)</li>
</ul>
<p>Kommt diese Direktive mehrmals mit verschiedenen Quellen vor, so ist die Reihenfolge entscheidend. Die Reihenfolge ist die Priorität, wobei der erste Eintrag die höchste hat.
Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidth 192.168.0.0/24 10240
</span></span></code></pre></td></tr></table>
</div>
</div><p>Das Netz 192.168.0.0-192.168.0.255 kann maximal mit 10kb/s Daten vom Webserver empfangen</p>
<h2 id="bandwidtherror">BandWidthError</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidthError [Error]
</span></span></code></pre></td></tr></table>
</div>
</div><p>Wenn die Maximale Anzahl der Verbindungen (definiert durch <code>MaxConnection</code>) erreicht wird, so wird der HTTP-Error-Code 503 (HTTP_SERVICE_UNAVAILABLE) ausgegeben. Da die meistens Nutzer nicht wissen, aus welchem Grund dies geschieht, kann das nervig sein. Daher kann man hier den Fehlercode festlegen, der dann ausgegeben wird.
Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">ErrorDocument 510 /errors/maxconexceeded.html
</span></span><span class="line"><span class="cl">BandWidthError 510
</span></span></code></pre></td></tr></table>
</div>
</div><p>Als ErrorCode wird 510 verwendet und dieser mit einer Fehlerseite versehen</p>
<h2 id="bandwidthmodule">BandwidthModule</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidthModule [On|Off]
</span></span></code></pre></td></tr></table>
</div>
</div><p>Diese Direktive schaltet das Bandwidth-Modul an (On) oder aus (Off)
Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidthModule On
</span></span></code></pre></td></tr></table>
</div>
</div><p>Einschalten des Modules</p>
<h2 id="bandwidthpacket">BandWidthPacket</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidthPacket [Size]
</span></span></code></pre></td></tr></table>
</div>
</div><p>Größe der Packete. Besser nicht ändern. Defaultwert: 8092, Werte zwischen 1024 und 131072 sind erlaubt. Zu kleine Werte machen mod_bw langsam (aufgrund des vielen Splittens).
Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidthPacket 8092
</span></span></code></pre></td></tr></table>
</div>
</div><p>Setzt 8092 als Packetgröße</p>
<h2 id="forcebandwidthmodule">ForceBandWidthModule</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">ForceBandWidthModule [On|Off]
</span></span></code></pre></td></tr></table>
</div>
</div><p>In der Default-Konfiguration wird nicht jeder Request durch mod_bw geleitet. Dadurch kann die Bandbreitenregulation möglicherweise nicht korrekt durchgeführt werden. Diese Direktive piped jeden Request durch mod_bw.
Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">ForceBandWidthModule On
</span></span></code></pre></td></tr></table>
</div>
</div><p>Damit wird jeder Request durch mod_bw geleitet</p>
<h2 id="largefilelimit">LargeFileLimit</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">LargeFileLimit [Typ] [Minimale Grösse] [bytes/s]
</span></span></code></pre></td></tr></table>
</div>
</div><p>Mit dieser Direktive kann die Dateiendung, sowie eine minimale Größe, aber der die Direktive greifen soll, angegeben werden.
Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">LargeFileLimit .avi 500 10240
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="maxconnection">MaxConnection</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">MaxConnection [Quelle] [Max]
</span></span></code></pre></td></tr></table>
</div>
</div><p>Mit dieser Direktive wird die maximale (Max) Anzahl von Verbindungen aus einer bestimmten Quelle angegeben. Werden mehr Verbindungen aufgebaut, bekommen diese einen HTTP-Status-Code 503 (Service Temporarily Unavailable) oder die in BandWidthError angelegte Fehlerdatei.
Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">MaxConnection all 20
</span></span><span class="line"><span class="cl">MaxConnection 192.168.0.0/24 50
</span></span></code></pre></td></tr></table>
</div>
</div><p>Alle Clients aus dem Netz 192.168.0.0/24 erhalten 20b/s, alle anderen 50b/s</p>
<h2 id="minbandwidth">MinBandwidth</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">MinBandWidth [Quelle] [bytes/s]
</span></span></code></pre></td></tr></table>
</div>
</div><p>Mit dieser Direktive wird die minimale Geschwindigkeit pro Quell-Host/Range festgelegt. Jeder Client bekommt die festgelegte Rate zugewiesen, egal, wieviel Gesamt-<em>Bandwidth</em> festgelegt wurde. Wenn [bytes/s] auf 0 gestellt, wird der Default-Wert von 256 bytes/s festgelegt. Wird [bytes/s] auf -1 festgelegt, so bekommt jeder Client die Maximal-Bandbreite zugewiesen.
Beispiel:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidth all 102400
</span></span><span class="line"><span class="cl">MinBandWidth all 50000
</span></span></code></pre></td></tr></table>
</div>
</div><p>Die Bandbreite wird auf 100kb/s festgelegt. Ist nur ein Client verbunden, so bekommt dieser 100kb/s. Verbindet sich ein zweiter, so wird diesem und dem ersten (wie auch allen weiteren) mindestens 50kB/s zugewiesen.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">BandWidth all 50000
</span></span><span class="line"><span class="cl">MinBandWidth all -1
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jeder Client bekommt eine maximale Bandbreite von 50kb/s zugewiesen</p>
<p>Beispiele befinden sich in der Readme von <link rel=dns-prefetch href=//bwmod.sourceforge.net /> <a href="http://bwmod.sourceforge.net/files/mod_bw-0.7.txt"
    title="mod_bw" 
     target="_blank" rel="nofollow noopener noreferrer" >
  mod_bw&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, hier ein Auszug:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">&lt;Virtualhost *&gt;
</span></span><span class="line"><span class="cl">  BandwidthModule On
</span></span><span class="line"><span class="cl">  ForceBandWidthModule On
</span></span><span class="line"><span class="cl">  Bandwidth all <span class="m">10240</span>
</span></span><span class="line"><span class="cl">  MinBandwidth all -1
</span></span><span class="line"><span class="cl">  Servername test.wolf-u.li
</span></span><span class="line"><span class="cl">&lt;/Virtualhost&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><p>Erklärung: Limitiert alle Clients auf maximal 10kb/s</p>
]]></content:encoded>
    </item>
    <item>
      <title>OpenVPN als Internet-Gateway mit zertifikatsbasierter Authentifizierung auf Linux-Server unter Gentoo und Windows-Client einrichten</title>
      
      
      <link>https://wolf-u.li/openvpn-als-internet-gateway-mit-zertifikatsbasierter-authentifizierung-auf-linux-server-und-windows-client-unter-gentoo-einrichten/</link>
      <pubDate>Fri, 24 Oct 2008 16:16:03 +2400</pubDate>
      <guid>https://wolf-u.li/openvpn-als-internet-gateway-mit-zertifikatsbasierter-authentifizierung-auf-linux-server-und-windows-client-unter-gentoo-einrichten/</guid>
      <description>&lt;p&gt;Vor einigen Tagen habe ich mich intensiv mit Openvpn auseinander gesetzt, da ich meinen &lt;a href=&#34;https://wolf-u.li/1296/mobil-online-mit-dem-internet-pack-m-oder-internet-pack-l-von-o2-germany/&#34;
    title=&#34;Internet Pack M auf den nächst größeren Internet Pack L&#34; 
   &gt;
  Internet Pack M auf den nächst größeren Internet Pack L&lt;/a&gt; umgestellt habe und daher diesen nicht mehr nur für gelegentliches surfen, sondern dauerhaft verwenden wollte. Leider läuft die Verbindung mit O2 über einen Zwischenproxy, weshalb mir das ganze etwas suspekt erschien. Nicht zuletzt, weil O2 erst vor kurzem Probleme mit STARTTLS während der AUthentifizierungsphase bei E-Mailversand hatte. Daher habe ich mir vorgestellt, eine gesicherte Verbindung zu meinem Server aufzubauen und darüber zu surfen. Eventuell werde ich in Kürze auch mein NAS mit dran hängen, um jederzeit auf meine Daten zugreifen zu können (Das wird aber ein separates Setup).
Im Folgenden beschreibe ich mein Setup (welches möglicherweise etwas paranoid ist :P) unter Gentoo als Server und Windows XP als Clients.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Vor einigen Tagen habe ich mich intensiv mit Openvpn auseinander gesetzt, da ich meinen <a href="/1296/mobil-online-mit-dem-internet-pack-m-oder-internet-pack-l-von-o2-germany/"
    title="Internet Pack M auf den nächst größeren Internet Pack L" 
   >
  Internet Pack M auf den nächst größeren Internet Pack L</a> umgestellt habe und daher diesen nicht mehr nur für gelegentliches surfen, sondern dauerhaft verwenden wollte. Leider läuft die Verbindung mit O2 über einen Zwischenproxy, weshalb mir das ganze etwas suspekt erschien. Nicht zuletzt, weil O2 erst vor kurzem Probleme mit STARTTLS während der AUthentifizierungsphase bei E-Mailversand hatte. Daher habe ich mir vorgestellt, eine gesicherte Verbindung zu meinem Server aufzubauen und darüber zu surfen. Eventuell werde ich in Kürze auch mein NAS mit dran hängen, um jederzeit auf meine Daten zugreifen zu können (Das wird aber ein separates Setup).
Im Folgenden beschreibe ich mein Setup (welches möglicherweise etwas paranoid ist :P) unter Gentoo als Server und Windows XP als Clients.</p>
<p>Ich beginne mit der Serverkonfiguration.Zunächst muss man das sogenannte TUN/TAP-Device im Kernel aktivieren, welches sich in der menuconfig unterhalb von &ldquo;<em>Device Drivers &mdash;&gt;</em>&rdquo; im Menü &ldquo;<em>Network device support &mdash;&gt;</em>&rdquo; unter dem Punkt &ldquo;<em>[</em>]Network device support*&rdquo; unter dem Punkt &ldquo;<em>Universal TUN/TAP device driver support</em>&rdquo; verbirgt.
Anschließend muss man den Kernel natürlich einmal neu kompilieren und diesen starten, um die Änderungen zu übernehmen.</p>
<p>Weiter gehts mit der eigentlichen Installation von OpenVPN:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">emerge openvpn
</span></span></code></pre></td></tr></table>
</div>
</div><p>Nun gehen wir zur Erstellung der Zertifikate für die Authentifizierung weiter. Mit Hilfe der sogenannten Easy-RSA von OpenVPN erstellen wir die benötigten Dateien. Dazu wechseln wir in dessen Verzeichnis:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /usr/share/openvpn/easy-rsa/
</span></span></code></pre></td></tr></table>
</div>
</div><p>Nun wird die Datei &ldquo;vars&rdquo; editiert und die folgenden Parameter gesetzt (Es darf keine leer bleiben):</p>
<ul>
<li>KEY_SIZE
Erklärung: Verschlüsselungsstärke, ich habe 2048 gewählt</li>
<li>KEY_COUNTRY
Erklärung: Ländercode</li>
<li>KEY_PROVINCE
Erklärung: Bundesland</li>
<li>KEY_CITY
Erklärung: Stadt</li>
<li>KEY_ORG
Erklärung: Firma oder Organisation</li>
<li>KEY_EMAIL
Erklärung: Mailadresse des Ansprechpartners</li>
</ul>
<p>Diese Variablen müssen nun geladen und anschließend im Verzeichnis aufgeräumt werden:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">source</span> ./vars
</span></span><span class="line"><span class="cl">./clean-all
</span></span></code></pre></td></tr></table>
</div>
</div><p>Weiter gehts mit der Erstellung der Public-Key-Infrastruktur (<link rel=dns-prefetch href=//de.wikipedia.org /> <a href="http://de.wikipedia.org/wiki/Public-Key-Infrastruktur"
    title="PKI" 
     target="_blank" rel="nofollow noopener noreferrer" >
  PKI&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>) mittels einer Certificate Authority (CA):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">./build-ca
</span></span></code></pre></td></tr></table>
</div>
</div><p>Der Output sieht etwa so aus:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">Generating a 2048 bit RSA private key
</span></span><span class="line"><span class="cl">............++++++
</span></span><span class="line"><span class="cl">...........++++++
</span></span><span class="line"><span class="cl">writing new private key to &#39;ca.key&#39;
</span></span><span class="line"><span class="cl">-----
</span></span><span class="line"><span class="cl">You are about to be asked to enter information that will be incorporated
</span></span><span class="line"><span class="cl">into your certificate request.
</span></span><span class="line"><span class="cl">What you are about to enter is what is called a Distinguished Name or a DN.
</span></span><span class="line"><span class="cl">There are quite a few fields but you can leave some blank
</span></span><span class="line"><span class="cl">For some fields there will be a default value,
</span></span><span class="line"><span class="cl">If you enter &#39;.&#39;, the field will be left blank.
</span></span><span class="line"><span class="cl">-----
</span></span><span class="line"><span class="cl">Country Name (2 letter code) [DE]:
</span></span><span class="line"><span class="cl">State or Province Name (full name) [DeinBundesland]:
</span></span><span class="line"><span class="cl">Locality Name (eg, city) [DeineStadt]:
</span></span><span class="line"><span class="cl">Organization Name (eg, company) [Privat]:
</span></span><span class="line"><span class="cl">Organizational Unit Name (eg, section) []:
</span></span><span class="line"><span class="cl">Common Name (eg, your name or your server&#39;s hostname) []:**Irgendwas**
</span></span><span class="line"><span class="cl">Email Address [mail@myhostname.tld]:
</span></span></code></pre></td></tr></table>
</div>
</div><p>Wenn zuvor alles korrekt eingegeben wurde, muss man nur &ldquo;Common Name&rdquo; ausfüllen und mit einem beliebigen Wert (hier &ldquo;Irgendwas&rdquo;) füllen.</p>
<p>Weiter gehts mit dem Zertifikat für den Server, diesmal muss aber der Common Name mit &ldquo;<code>server</code>&rdquo; (bitte exakt so schreiben!) gefüllt werden. Zwei weitere Fragen müssen positiv (also mit &ldquo;y&rdquo;) beantwortet werden, die da lauten: &ldquo;Sign the certificate? [y/n]&rdquo; aund &ldquo;1 out of 1 certificate requests certified, commit? [y/n]&rdquo;. Jetzt zum Befehl:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">./build-key-server server
</span></span></code></pre></td></tr></table>
</div>
</div><p>Für jeden Client muss man nun ein Zertifikat erstellen. Auf keinen Fall sollte ein Zertifikat auf zwei Rechner eingesetzt werden. Der Grund dafür ist sehr einfach: Geht ein Rechner verloren oder wird gehackt und man muss das Zertifikat revoken, so sind alle Rechner mit diesem Zertifikat davon betroffen.
Beim folgenden Befehl sollte im Common Name jeweils ein eindeutiger Name für den Rechner stehen, also z.B. <em>ulilaptop</em> oder <em>ulimainframe</em></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">./build-key ulilaptop
</span></span><span class="line"><span class="cl">./build-key ulimainframe
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jetzt brauchen wir noch den Diffie Hellman Parameter, der leider bei 2048 Bit recht lang zu generieren braucht (kann schon mal ein paar Minuten dauern).</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">./build-dh
</span></span></code></pre></td></tr></table>
</div>
</div><p>Zuletzt generiere ich noch ein tls-auth key-file für die Authentifizierung am Server:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">openvpn --genkey --secret keys/ta.key
</span></span></code></pre></td></tr></table>
</div>
</div><p>Schützenswert sind vor allem nun im Verzeichnis &ldquo;keys&rdquo; die Dateien, welche auf *.key enden, da diese die privaten Teile der Zertifikate darstellen.</p>
<p>Wir kopieren nun die erstellten Dateien ins OpenVPN-Verzeichnis:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir -p /etc/openvpn/securenet/
</span></span><span class="line"><span class="cl">mv /usr/share/openvpn/easy-rsa/keys/* /etc/openvpn/securenet/
</span></span><span class="line"><span class="cl">chmod <span class="m">700</span> /etc/openvpn/securenet
</span></span></code></pre></td></tr></table>
</div>
</div><p>Und ein Backup aller erstellten Keys (nur zur Sicherheit):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">tar cfzp /root/openvpn-securenet.tar.gz /etc/openvpn/securenet/
</span></span><span class="line"><span class="cl">chmod <span class="m">700</span> /root/openvpn-securenet.tar.gz
</span></span></code></pre></td></tr></table>
</div>
</div><p>Kommen wir zur Konfiguration des Servers. Zunächst muss die Datei &ldquo;<code>/etc/openvpn/openvpn.conf</code>&rdquo; editiert werden. Mein VPN-Netz bekommt den IP-Bereich 10.13.37.0 und wird maximal 5 Clients zulassen. Der VPN-Server lauscht auf Port 4242 (UDP) auf einem TUN-Device.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">port <span class="m">4242</span>
</span></span><span class="line"><span class="cl">verb <span class="m">3</span>
</span></span><span class="line"><span class="cl">proto udp
</span></span><span class="line"><span class="cl">dev tun
</span></span><span class="line"><span class="cl">ca /etc/openvpn/securenet/ca.crt
</span></span><span class="line"><span class="cl">cert /etc/openvpn/securenet/server.crt
</span></span><span class="line"><span class="cl">key /etc/openvpn/securenet/server.key
</span></span><span class="line"><span class="cl">dh /etc/openvpn/securenet/dh2048.pem
</span></span><span class="line"><span class="cl">server 10.13.37.0 255.255.255.0
</span></span><span class="line"><span class="cl">ifconfig-pool-persist /etc/openvpn/ipp.txt
</span></span><span class="line"><span class="cl">keepalive <span class="m">10</span> <span class="m">120</span>
</span></span><span class="line"><span class="cl">cipher AES-256-CBC
</span></span><span class="line"><span class="cl">comp-lzo
</span></span><span class="line"><span class="cl">user openvpn
</span></span><span class="line"><span class="cl">group openvpn
</span></span><span class="line"><span class="cl">persist-key
</span></span><span class="line"><span class="cl">persist-tun
</span></span><span class="line"><span class="cl">resolv-retry infinite
</span></span><span class="line"><span class="cl">status /etc/openvpn/openvpn-status.log
</span></span><span class="line"><span class="cl">chroot /etc/openvpn/chroot
</span></span><span class="line"><span class="cl">push <span class="s2">&#34;redirect-gateway&#34;</span>
</span></span><span class="line"><span class="cl">client-to-client
</span></span><span class="line"><span class="cl">max-clients <span class="m">5</span>
</span></span><span class="line"><span class="cl">tls-auth /etc/openvpn/securenet/ta.key <span class="m">0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Damit ist die Serverkonfiguration fast abgeschlossen. Nun muss man noch das chroot-Verzeichnis erstellen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir /etc/openvpn/chroot
</span></span></code></pre></td></tr></table>
</div>
</div><p>Und die passende User-/Nutzergruppenkombination erstellen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">useradd -M -s /bin/false -U openvpn
</span></span></code></pre></td></tr></table>
</div>
</div><p>Ab besten sollte man nun den Server einmal starten:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">/etc/init.d/openvpn start
</span></span></code></pre></td></tr></table>
</div>
</div><p>Wenn alles geklappt hat, sollte man die Änderungen permanent machen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">rc-update add openvpn default
</span></span></code></pre></td></tr></table>
</div>
</div><p>Nun muss man das IP-Forwarding einschalten (Danke an Sven für den Hinweis!). Dazu öffnet man die Datei <code>/etc/sysctl.conf</code> und sucht folgende Zeilen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Disables packet forwarding</span>
</span></span><span class="line"><span class="cl">net.ipv4.ip_forward <span class="o">=</span> <span class="m">0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Diese ersetzt man durch (also v.a. <strong>0</strong> =&gt; <strong>1</strong>):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enables packet forwarding</span>
</span></span><span class="line"><span class="cl">net.ipv4.ip_forward <span class="o">=</span> <span class="m">1</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Dies funktioniert NUR, wenn im Kernel &ldquo;Sysctl support&rdquo; eingeschalten ist!</p>
<p>Damit der Server hinterher auch den Internet-Traffic durchroutet, muss man einige IPTables-Regeln festlegen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">iptables -t nat -F POSTROUTING
</span></span><span class="line"><span class="cl">iptables -t nat -A POSTROUTING -o eth0 -s 10.13.37.0/24 -j MASQUERADE
</span></span></code></pre></td></tr></table>
</div>
</div><p>Man will jedoch nicht, dass der Server den Netbios-Traffic auch ins Internet schickt, daher zusätzlich:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Block outgoing NetBios</span>
</span></span><span class="line"><span class="cl">iptables -A FORWARD -p tcp --sport 137:139 -o eth0 -j DROP
</span></span><span class="line"><span class="cl">iptables -A FORWARD -p udp --sport 137:139 -o eth0 -j DROP
</span></span><span class="line"><span class="cl">iptables -A OUTPUT -p tcp --sport 137:139 -o eth0 -j DROP
</span></span><span class="line"><span class="cl">iptables -A OUTPUT -p udp --sport 137:139 -o eth0 -j DROP
</span></span></code></pre></td></tr></table>
</div>
</div><p>Damit diese Regeln beim Systemstart auch gesetzt werden, habe ich diese am Ende von /etc/rc.conf angefügt, welche bei jeden Systemstart aufgerufen wird.</p>
<p>Kommen wir zur Konfiguration der Clients. Unter Windows installiert man am Klügsten das Paket von openvpn.se, da dort eine graphische Oberfläche zur Benutzung von OpenVPN (inklusive eines Taskleistenprogramms) verfügbar ist.
Nun müssen die Schlüssel zu den Clients transportiert werden. Die fünf Dateien sollten am besten über einen SICHEREN Weg transportiert werden (beispielsweise <link rel=dns-prefetch href=//www.winscp.net /> <a href="http://www.winscp.net"
    title="SCP" 
     target="_blank" rel="nofollow noopener noreferrer" >
  SCP&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>). Diese werden benötigt (hier beispielhaft für &ldquo;ulilaptop&rdquo;:</p>
<ul>
<li>dh2048.pem</li>
<li>ulilaptop.crt</li>
<li>ca.crt</li>
<li>ulilaptop.key</li>
<li>ta.key</li>
</ul>
<p>Herunterladen und im Verzeichnis &ldquo;config&rdquo; der OpenVPN-Installation abgelegen. Im gleichen Verzeichnis muss eine Datei namens client.ovpn mit folgendem Inhalt angelegt werden:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">client
</span></span><span class="line"><span class="cl">dev tun
</span></span><span class="line"><span class="cl">proto udp
</span></span><span class="line"><span class="cl">remote YOURSERVER <span class="m">4242</span>
</span></span><span class="line"><span class="cl">resolv-retry infinite
</span></span><span class="line"><span class="cl">nobind
</span></span><span class="line"><span class="cl">cipher AES-256-CBC
</span></span><span class="line"><span class="cl">persist-key
</span></span><span class="line"><span class="cl">persist-tun
</span></span><span class="line"><span class="cl">ca ca.crt
</span></span><span class="line"><span class="cl">cert ulilaptop.crt
</span></span><span class="line"><span class="cl">key ulilaptop.key
</span></span><span class="line"><span class="cl">comp-lzo
</span></span><span class="line"><span class="cl">verb <span class="m">3</span>
</span></span><span class="line"><span class="cl">mute <span class="m">20</span>
</span></span><span class="line"><span class="cl">ns-cert-type server
</span></span><span class="line"><span class="cl">tls-auth ta.key <span class="m">1</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Hierbei müsssen YOURSERVER mit dem Hostnamen des Servers und jeweils die Zertifikatsnamen mit deinen vergebenen Namen ausgetauscht werden.</p>
<p>Damit sollte Client-Configuration ageschlossen sein. Jetzt einfach mal versuchen zu verbinden. Wenn alles funktioniert hat und in der Taskleiste das Icon grün leuchtet, sollte man mal die eigene IP herausbekommen. Dazu gibt es viele verschiedene Seiten (Suchmaschine befragen), ich habe mir eine eigene in PHP schnell zusammengestrickt ;) Mit diesem Setup fahre ich momentan problemlos ;)</p>
]]></content:encoded>
    </item>
    <item>
      <title>MySQL-Tuning per my.cnf und Analyse-Skript</title>
      
      
      <link>https://wolf-u.li/mysql-tuning-per-mycnf-und-analyse-skript/</link>
      <pubDate>Fri, 03 Aug 2007 11:37:13 +0300</pubDate>
      <guid>https://wolf-u.li/mysql-tuning-per-mycnf-und-analyse-skript/</guid>
      <description>&lt;p&gt;[&lt;img src=&#34;https://wolf-u.li/upload/2007/08/728-mysql-tuning-nach-toomany-connections.webp&#34; alt=&#34;276-mysql-tuning-nach-toomany-connections.webp&#34; loading=&#34;lazy&#34;&gt;&lt;/p&gt;
&lt;p&gt;Heute morgen hats mich erwischt&amp;hellip;der MySQL5-Server hatte ein kleines Problem&amp;hellip;
Aufgrund der gestiegenen Last auf dem neuen Server hat die Anzahl der Queries die Anzahl der max_connections erreicht. Was heisst das konkret? Queries, welche nach dem Überschreiten dieser Zahl gesetzt werden, werden nicht ausgeführt, sondern mit dem Fehler &amp;ldquo;Too many Connections (localhost)&amp;rdquo; abgewiesen.&lt;/p&gt;
&lt;p&gt;Wie kann man nun den MySQL-Server ein wenig tunen?&lt;/p&gt;
&lt;p&gt;Es gibt hierzu ein Skript von &lt;link rel=dns-prefetch href=//www.day32.com /&gt; &lt;a href=&#34;http://www.day32.com/MySQL/&#34;
    title=&#34;Day32&#34; 
     target=&#34;_blank&#34; rel=&#34;nofollow noopener noreferrer&#34; &gt;
  Day32&amp;nbsp;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;icon&#34; aria-hidden=&#34;true&#34; focusable=&#34;false&#34; viewBox=&#34;0 -128 512 640&#34;&gt;
    &lt;path d=&#34;M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z&#34;/&gt;
  &lt;/svg&gt;&lt;/a&gt;, welches bei mir hervorragende Dienste geleistet hat:&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>[<img src="/upload/2007/08/728-mysql-tuning-nach-toomany-connections.webp" alt="276-mysql-tuning-nach-toomany-connections.webp" loading="lazy"></p>
<p>Heute morgen hats mich erwischt&hellip;der MySQL5-Server hatte ein kleines Problem&hellip;
Aufgrund der gestiegenen Last auf dem neuen Server hat die Anzahl der Queries die Anzahl der max_connections erreicht. Was heisst das konkret? Queries, welche nach dem Überschreiten dieser Zahl gesetzt werden, werden nicht ausgeführt, sondern mit dem Fehler &ldquo;Too many Connections (localhost)&rdquo; abgewiesen.</p>
<p>Wie kann man nun den MySQL-Server ein wenig tunen?</p>
<p>Es gibt hierzu ein Skript von <link rel=dns-prefetch href=//www.day32.com /> <a href="http://www.day32.com/MySQL/"
    title="Day32" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Day32&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, welches bei mir hervorragende Dienste geleistet hat:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /usr/src/
</span></span><span class="line"><span class="cl">wget http://www.day32.com/MySQL/tuning-primer.sh
</span></span><span class="line"><span class="cl">sh tuning-primer.sh
</span></span></code></pre></td></tr></table>
</div>
</div><p>Tuning primer gibt nun eine Menge Vorschläge und Ratschläge aus, um den MySQL-Server ein bisschen zu tunen. Bei mir wars vor allem die Variable max_connections, welche per Default auf 100 steht, die nun ein wenig zu niedrig war.</p>
<p>Um dies zu ändern öffnet man die Datei <em>my.cnf</em> (bei mir unter <em>/etc/mysql/</em>) und fügt in der Sektion [mysqld] folgenden Wert hinzu (Bitte Anzahl der gleichzeitigen Verbindungen selbst wählen, ich habe mal 500 eingetragen):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="na">max_connections</span> <span class="o">=</span> <span class="s">250</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Achtung: Bei mir trat ein Fehler auf, wenn ich vor und nach dem &lsquo;=&rsquo; keine Leerzeichen gesetzt hatte. Ausserdem wird für jede Connection Ram benötigt, tuning-primer meckert aber dann schon ;)</p>
<p>Nun kann man entweder den Server neu starten, oder man setzt es temporär bis zum Neustart mit einem Query in die Datenbank:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mysql -u root -p
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">set</span><span class="w"> </span><span class="k">GLOBAL</span><span class="w"> </span><span class="n">max_connections</span><span class="o">=</span><span class="mi">250</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">exit</span><span class="p">;</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>Man kann das schnell prüfen, in dem man vor dem <em>exit;</em> folgenden Befehl in die Datenbank absetzt:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">show</span><span class="w"> </span><span class="n">variables</span><span class="w"> </span><span class="k">like</span><span class="w"> </span><span class="s1">&#39;max_connections&#39;</span><span class="p">;</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>Weitergehende Informationen bekommt man beim <link rel=dns-prefetch href=//dev.mysql.com /> <a href="http://dev.mysql.com/doc/mysql/en/Too_many_connections.html"
    title="Hersteller" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Hersteller&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> im Handbuch.</p>
<p>Danke an dieser Stelle an <link rel=dns-prefetch href=//blog.alexarnold.de /> <a href="http://blog.alexarnold.de/"
    title="Alex" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Alex&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> (dem ich den Fehler nicht glauben wollte) und <link rel=dns-prefetch href=//science.geopfert.de /> <a href="http://science.geopfert.de/"
    title="PaGo" 
     target="_blank" rel="nofollow noopener noreferrer" >
  PaGo&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> (für den Screenshot, ich hab da noch geschlafen :) )</p>
]]></content:encoded>
    </item>
    <item>
      <title>Installation von nginx mit PHP auf Gentoo</title>
      
      
      <link>https://wolf-u.li/installation-von-nginx-mit-php-auf-gentoo/</link>
      <pubDate>Sat, 15 Aug 2009 16:01:34 +1500</pubDate>
      <guid>https://wolf-u.li/installation-von-nginx-mit-php-auf-gentoo/</guid>
      <description>&lt;p&gt;Seit einigen Tagen habe ich einen neuen Root-Server, der meine Webseite ausliefern soll. Da ich ein bisschen experimentierfreudig bin, habe ich mich zur Installation des Webservers &lt;link rel=dns-prefetch href=//nginx.net /&gt; &lt;a href=&#34;http://nginx.net/&#34;
    title=&#34;nginx&#34; 
     target=&#34;_blank&#34; rel=&#34;nofollow noopener noreferrer&#34; &gt;
  nginx&amp;nbsp;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;icon&#34; aria-hidden=&#34;true&#34; focusable=&#34;false&#34; viewBox=&#34;0 -128 512 640&#34;&gt;
    &lt;path d=&#34;M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z&#34;/&gt;
  &lt;/svg&gt;&lt;/a&gt; (sprich engine-x) entschlossen, da dieser in vielen Benchmarks noch schneller als lighttpd ist und gleichzeitig weniger RAM verbraucht.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Seit einigen Tagen habe ich einen neuen Root-Server, der meine Webseite ausliefern soll. Da ich ein bisschen experimentierfreudig bin, habe ich mich zur Installation des Webservers <link rel=dns-prefetch href=//nginx.net /> <a href="http://nginx.net/"
    title="nginx" 
     target="_blank" rel="nofollow noopener noreferrer" >
  nginx&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> (sprich engine-x) entschlossen, da dieser in vielen Benchmarks noch schneller als lighttpd ist und gleichzeitig weniger RAM verbraucht.</p>
<p>Gleichzeitig sind aber die Rewrite-rules einfacher als beim <link rel=dns-prefetch href=//www.lighttpd.net /> <a href="http://www.lighttpd.net/"
    title="lighttpd" 
     target="_blank" rel="nofollow noopener noreferrer" >
  lighttpd&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, da diese fast 1:1 vom Apache zu übernehmen sind (was den Umzug der Seiten deutlich einfacher gestaltet). Ich möchte direkt nativ alles über nginx und dessen FastCGI-Backend ausliefern, weshalb ein paar zusätzliche Artikel zu deren Rewrite-Rules oder Stolperfallen bei der Einrichtung kommen werden.</p>
<p>Dieser Artikel ist Teil einer Reihe zum Webserver nginx.
Schau dir auch die anderen Artikel an: <a href="/3137/leitartikel-zur-konfiguration-und-installation-des-webservers-nginx/"
    title="Zum Leitartikel" 
   >
  Zum Leitartikel</a></p>
<p>Los geht&rsquo;s mit der Installation von Gentoo, welche ich nach <link rel=dns-prefetch href=//www.gentoo.org /> <a href="http://www.gentoo.org/doc/de/handbook/"
    title="Handbuch" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Handbuch&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> durchführe. Hierzu verliere ich keine weiteren Worte, da das Handbuch wirklich umfangreich und ausreichend ist. Wichtig ist, dass Portage auf dem aktuellen Stand ist, das sollte aber nach der Installation der Fall sein.</p>
<p>Ich wollte den nginx mit den zusätzlichen Modulen <link rel=dns-prefetch href=//wiki.nginx.org /> <a href="http://wiki.nginx.org/NginxHttpFcgiModule"
    title="FastCGI" 
     target="_blank" rel="nofollow noopener noreferrer" >
  FastCGI&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, PCRE, <link rel=dns-prefetch href=//wiki.nginx.org /> <a href="http://wiki.nginx.org/NginxHttpSslModule"
    title="SSL" 
     target="_blank" rel="nofollow noopener noreferrer" >
  SSL&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, <link rel=dns-prefetch href=//wiki.nginx.org /> <a href="http://wiki.nginx.org/NginxHttpStubStatusModule"
    title="Stub_Status" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Stub_Status&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, <link rel=dns-prefetch href=//wiki.nginx.org /> <a href="http://wiki.nginx.org/NginxHttpDavModule"
    title="WebDAV" 
     target="_blank" rel="nofollow noopener noreferrer" >
  WebDAV&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> und <link rel=dns-prefetch href=//wiki.nginx.org /> <a href="http://wiki.nginx.org/NginxHttpGzipStaticModule"
    title="zlib" 
     target="_blank" rel="nofollow noopener noreferrer" >
  zlib&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, weshalb ich die folgenden USE-Flags hinzugefügt und anschließend den nginx installiert habe:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;www-servers/nginx fastcgi pcre ssl status webdav zlib&#34;</span> &gt;&gt; /etc/portage/package.use
</span></span><span class="line"><span class="cl">emerge -av nginx
</span></span></code></pre></td></tr></table>
</div>
</div><p>Zum Zeitpunkt des Schreibens wird Version 0.7.61 installiert.</p>
<p>Nach dem emergen von Nginx kommt bei mir die Konfiguration von PHP. Ich fahre schon seit Ewigkeiten <em>mod_fcgid</em> unter Apache, welcher die Verwaltung (Starten/Stoppen/Steuerung) der PHP-Prozesse selbst übernimmt. Bei nginx wird das etwas anders angesteuert, da die PHP-Prozesse schon existieren müssen und nginx diese nicht selbst erstellt. Um dies zu vereinfachen, gibt es das Project <link rel=dns-prefetch href=//redmine.lighttpd.net /> <a href="http://redmine.lighttpd.net/projects/spawn-fcgi/wiki"
    title="spawn-fcgi" 
     target="_blank" rel="nofollow noopener noreferrer" >
  spawn-fcgi&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, welches aus dem Webserverprojekt <link rel=dns-prefetch href=//www.lighttpd.net /> <a href="http://www.lighttpd.net/"
    title="lighttpd" 
     target="_blank" rel="nofollow noopener noreferrer" >
  lighttpd&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> ausgegliedert wurde.</p>
<p>Zum Zeitpunkt dieses Tutorials ist dieses Paket in Gentoo noch nicht als stable gekennzeichnet, weshalb man es vor der Installation möglicherweise erst freischalten muss:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;www-servers/spawn-fcgi&#34;</span> &gt;&gt; /etc/portage/package.keywords
</span></span><span class="line"><span class="cl">emerge -av spawn-fcgi
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jetzt sollte man sich ein paar Gedanken zur Aufteilung der Webserverhosts über die PHP-Prozesse machen. Dazu muss man ein wenig Hintergrund zur <link rel=dns-prefetch href=//de.wikipedia.org /> <a href="http://de.wikipedia.org/wiki/FastCGI"
    title="FastCGI" 
     target="_blank" rel="nofollow noopener noreferrer" >
  FastCGI&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>-Technologie kennen. Zur Verarbeitung der PHP-Seiten wird ein PHP-Interpreter gestartet mit dem der Webserver über einen Unix-Socket oder einen TCP-Port kommuniziert. Diese Interpreter kann man unter einem anderen Nutzer (als root) starten, wodurch ein wenig zusätzliche Sicherheit geschafft wird, wenn dieser Nutzer weniger Rechte hat. Im Idealfall sollte man also für jeden Vhost einen eigenen PHP-Interpreter und Nutzer haben, um die höchste Sicherheit zu erhalten. Leider benötigt jeder Interpreter ein wenig RAM, sodass man sich überlegen sollte, wieviele man davon gleichzeitig im RAM halten möchte. Ich habe für mich einen Mix aus Performance und Sicherheit gewählt. Ich zeige mal an einem Vhost, wie man diese PHP-Interpreter startet.</p>
<p>Startet man nun <code>/etc/init.d/spawn-fcgi</code>, so wird man ermahnt, dass das so nicht funktioniert:</p>
<blockquote>
<ul>
<li>You are not supposed to run this script directly. Create a symlink</li>
<li>for the FastCGI application you want to run as well as a copy</li>
<li>of the configuration file and modify it appropriately like so&hellip;</li>
<li></li>
<li>ln -s spawn-fcgi /etc/init.d/spawn-fcgi.trac</li>
<li>cp /etc/conf.d/spawn-fcgi /etc/conf.d/spawn-fcgi.trac</li>
<li>nano /etc/conf.d/spawn-fcgi.trac</li>
</ul>
</blockquote>
<p>Folglich führe ich diese Schritte für meinen ersten FastCGI-Server durch:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ln -s spawn-fcgi /etc/init.d/spawn-fcgi.wolfuli
</span></span><span class="line"><span class="cl">cp /etc/conf.d/spawn-fcgi /etc/conf.d/spawn-fcgi.wolfuli
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jetzt muss man die Konfigurationsdatei <code>/etc/conf.d/spawn-fcgi.wolfuli</code> editieren:</p>
<blockquote>
<p><code>FCGI_SOCKET= FCGI_ADDRESS=127.0.0.1 FCGI_PORT=1234 FCGI_PROGRAM=/usr/bin/php-cgi FCGI_CHILDREN=1 FCGI_CHROOT= FCGI_CHDIR= FCGI_USER=wolfuli FCGI_GROUP=wolfuli PHPRC=&quot;/var/www/php-ini/wolfuli/&quot; PHP_FCGI_CHILDREN=10 PHP_FCGI_MAX_REQUESTS=1000 ALLOWED_ENV=&quot;PATH PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS PHPRC&quot;</code></p>
</blockquote>
<p>Über die Variable <em>PHPRC</em> wurde ein Verzeichnis festgelegt, in dem man man eine, für den Vhost angepasste, <em>php.ini</em> hinterlegen kann.</p>
<p>Jetzt muss man noch den Nutzer <em>wolfuli</em> samt der gleichen Nutzergruppe anlegen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">useradd -s /bin/false -U wolfuli
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jetzt richten wir mal unsere Vhosts ein. Aus praktischen Gründen habe ich mich entschlossen ein &ldquo;sites-available&rdquo; und ein &ldquo;sites-enabled&rdquo;-Verzeichnis anzulegen.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir /etc/nginx/sites-available
</span></span><span class="line"><span class="cl">mkdir /etc/nginx/sites-enabled
</span></span></code></pre></td></tr></table>
</div>
</div><p>So kann ich Vhosts im ordner <em>sites-available</em> konfigurieren und dann diese dann in <em>sites-enabled</em> softlinken, wenn sie aktiv sein sollen. So kann ich mal vhosts abschalten ohne diese gleich löschen zu müssen.</p>
<p>Die <code>/etc/nginx/nginx.conf</code> habe ich ebenfalls ein wenig abgeändert, sodass diese wie folgt aussieht:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">user nginx nginx<span class="p">;</span>
</span></span><span class="line"><span class="cl">worker_processes 2<span class="p">;</span>
</span></span><span class="line"><span class="cl">error_log /var/log/nginx/error_log info<span class="p">;</span>
</span></span><span class="line"><span class="cl">events <span class="o">{</span>
</span></span><span class="line"><span class="cl"> worker_connections 8192<span class="p">;</span>
</span></span><span class="line"><span class="cl"> use epoll<span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl">http <span class="o">{</span>
</span></span><span class="line"><span class="cl"> include /etc/nginx/mime.types<span class="p">;</span>
</span></span><span class="line"><span class="cl"> default_type application/octet-stream<span class="p">;</span>
</span></span><span class="line"><span class="cl"> log_format main
</span></span><span class="line"><span class="cl"> <span class="s1">&#39;$remote_addr - $remote_user [$time_local] &#39;</span>
</span></span><span class="line"><span class="cl"> <span class="s1">&#39;&#34;$request&#34; $status $bytes_sent &#39;</span>
</span></span><span class="line"><span class="cl"> <span class="s1">&#39;&#34;$http_referer&#34; &#34;$http_user_agent&#34; &#39;</span>
</span></span><span class="line"><span class="cl"> <span class="s1">&#39;&#34;$gzip_ratio&#34;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> client_header_timeout 10m<span class="p">;</span>
</span></span><span class="line"><span class="cl"> client_body_timeout 10m<span class="p">;</span>
</span></span><span class="line"><span class="cl"> send_timeout 10m<span class="p">;</span>
</span></span><span class="line"><span class="cl"> connection_pool_size 256<span class="p">;</span>
</span></span><span class="line"><span class="cl"> client_header_buffer_size 1k<span class="p">;</span>
</span></span><span class="line"><span class="cl"> large_client_header_buffers <span class="m">4</span> 2k<span class="p">;</span>
</span></span><span class="line"><span class="cl"> request_pool_size 4k<span class="p">;</span>
</span></span><span class="line"><span class="cl"> gzip on<span class="p">;</span>
</span></span><span class="line"><span class="cl"> gzip_min_length 1100<span class="p">;</span>
</span></span><span class="line"><span class="cl"> gzip_buffers <span class="m">4</span> 8k<span class="p">;</span>
</span></span><span class="line"><span class="cl"> gzip_types text/plain<span class="p">;</span>
</span></span><span class="line"><span class="cl"> output_buffers <span class="m">1</span> 32k<span class="p">;</span>
</span></span><span class="line"><span class="cl"> postpone_output 1460<span class="p">;</span>
</span></span><span class="line"><span class="cl"> sendfile on<span class="p">;</span>
</span></span><span class="line"><span class="cl"> tcp_nopush on<span class="p">;</span>
</span></span><span class="line"><span class="cl"> tcp_nodelay on<span class="p">;</span>
</span></span><span class="line"><span class="cl"> keepalive_timeout <span class="m">75</span> 20<span class="p">;</span>
</span></span><span class="line"><span class="cl"> ignore_invalid_headers on<span class="p">;</span>
</span></span><span class="line"><span class="cl"> index index.html<span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> include /etc/nginx/sites-enabled/*<span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Wie man sieht, ist nun in der letzten Zeile ein include aller Vhosts aus dem &ldquo;<code>sites-enabled</code>&quot;-Verzeichnis. Die Variable &ldquo;<code>worker_processes</code>&rdquo; sollte auf die Anzahl der CPU-Kerne gesetzt werden, was in meinem Falle zwei sind.</p>
<p>Damit ist die Installation abgeschlossen, jetzt kann man nun einen PHP-VHost anlegen. Dazu muss zunächst die Datei /etc/nginx/fastcgi_params angelegt bzw. modifiziert werden, sodass diese so aussieht:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">fastcgi_param QUERY_STRING <span class="nv">$query_string</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param REQUEST_METHOD <span class="nv">$request_method</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param CONTENT_TYPE <span class="nv">$content_type</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param CONTENT_LENGTH <span class="nv">$content_length</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">fastcgi_param SCRIPT_NAME <span class="nv">$fastcgi_script_name</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param SCRIPT_FILENAME <span class="nv">$document_root$fastcgi_script_name</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param REQUEST_URI <span class="nv">$request_uri</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param DOCUMENT_URI <span class="nv">$document_uri</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param DOCUMENT_ROOT <span class="nv">$document_root</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param SERVER_PROTOCOL <span class="nv">$server_protocol</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">fastcgi_param GATEWAY_INTERFACE CGI/1.1<span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param SERVER_SOFTWARE wolfuli/1337<span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">fastcgi_param REMOTE_ADDR <span class="nv">$remote_addr</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param REMOTE_PORT <span class="nv">$remote_port</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param SERVER_ADDR <span class="nv">$server_addr</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param SERVER_PORT <span class="nv">$server_port</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">fastcgi_param SERVER_NAME <span class="nv">$server_name</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">fastcgi_index index.php<span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># PHP only, required if PHP was built with --enable-force-cgi-redirect</span>
</span></span><span class="line"><span class="cl">fastcgi_param REDIRECT_STATUS 200<span class="p">;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Diese Datei legt einige Parameter im Zusammenspiel von PHP (FastCGI) und nginx fest.</p>
<p>Hier der Beispielvhost <em>example.com</em>, welcher unter <code>/etc/nginx/sites-available/example.com</code> angelegt wird:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">server <span class="o">{</span>
</span></span><span class="line"><span class="cl"> listen 80<span class="p">;</span>
</span></span><span class="line"><span class="cl"> server_name example.com<span class="p">;</span>
</span></span><span class="line"><span class="cl"> error_log /var/log/nginx/example.com.log warn<span class="p">;</span>
</span></span><span class="line"><span class="cl"> root /var/www/example.com/<span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> location / <span class="o">{</span>
</span></span><span class="line"><span class="cl"> index index.php<span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> location ~ <span class="se">\.</span>php$ <span class="o">{</span>
</span></span><span class="line"><span class="cl"> fastcgi_pass 127.0.0.1:1234<span class="p">;</span>
</span></span><span class="line"><span class="cl"> include /etc/nginx/fastcgi_params<span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jetzt muss man den fertigen Vhost nur noch softlinken:</p>
<blockquote>
<p><code>cd /etc/nginx/sites-enabled/ ln -s ../sites-available/example.com</code></p>
</blockquote>
<p>Und nginx die neuen Konfigurationsdateien lesen lassen:</p>
<blockquote>
<p><code>/etc/init.d/nginx reload</code></p>
</blockquote>
<p>Das wars. Lies auch die anderen Artikel zu diesem Thema in diesem <a href="/3137/leitartikel-zur-konfiguration-und-installation-des-webservers-nginx/"
    title="Leitartikel" 
   >
  Leitartikel</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>lspci unter Gentoo</title>
      
      
      <link>https://wolf-u.li/lspci-unter-gentoo/</link>
      <pubDate>Wed, 19 Aug 2009 14:13:00 +1900</pubDate>
      <guid>https://wolf-u.li/lspci-unter-gentoo/</guid>
      <description>&lt;p&gt;Grad hab ich mal für meinen neuen Root den Kernel anpassen wollen, sodass er ein wenig schlanker wird und wollte dazu mal wissen, was in der Kiste eigentlich an Hardware verbaut ist. Hierzu nutzt man am einfachsten den Befehl:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lspci
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Blöderweise meinte Gentoo, dass es diesen Befehl nicht kennt. Nach kurzer Suche fand ich heraus, dass der Autor des Programms das ganze in ein Paket namens &lt;link rel=dns-prefetch href=//mj.ucw.cz /&gt; &lt;a href=&#34;http://mj.ucw.cz/sw/pciutils/&#34;
    title=&#34;pciutils&#34; 
     target=&#34;_blank&#34; rel=&#34;nofollow noopener noreferrer&#34; &gt;
  pciutils&amp;nbsp;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;icon&#34; aria-hidden=&#34;true&#34; focusable=&#34;false&#34; viewBox=&#34;0 -128 512 640&#34;&gt;
    &lt;path d=&#34;M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z&#34;/&gt;
  &lt;/svg&gt;&lt;/a&gt; verpackt hat.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Grad hab ich mal für meinen neuen Root den Kernel anpassen wollen, sodass er ein wenig schlanker wird und wollte dazu mal wissen, was in der Kiste eigentlich an Hardware verbaut ist. Hierzu nutzt man am einfachsten den Befehl:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">lspci
</span></span></code></pre></td></tr></table>
</div>
</div><p>Blöderweise meinte Gentoo, dass es diesen Befehl nicht kennt. Nach kurzer Suche fand ich heraus, dass der Autor des Programms das ganze in ein Paket namens <link rel=dns-prefetch href=//mj.ucw.cz /> <a href="http://mj.ucw.cz/sw/pciutils/"
    title="pciutils" 
     target="_blank" rel="nofollow noopener noreferrer" >
  pciutils&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> verpackt hat.</p>
<p>Die Lösung war also die Installation von sys-apps/pciutils:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">emerge -av pciutils
</span></span></code></pre></td></tr></table>
</div>
</div><p>Und schon lief der Spaß :)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Leitartikel zur Konfiguration und Installation des Webservers Nginx</title>
      
      
      <link>https://wolf-u.li/leitartikel-zur-konfiguration-und-installation-des-webservers-nginx/</link>
      <pubDate>Sat, 15 Aug 2009 16:05:49 +1500</pubDate>
      <guid>https://wolf-u.li/leitartikel-zur-konfiguration-und-installation-des-webservers-nginx/</guid>
      <description>&lt;p&gt;Dies ist der Leitartikel zu diversen Anleitungen zu Konfiguration und Installation des Webservers Nginx. Ich habe diesen unter Gentoo installiert, andere Distributionen sind da aber durchaus ähnlich.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3130/installation-von-nginx-mit-php-auf-gentoo/&#34;
    title=&#34;Installation von nginx mit PHP auf Gentoo&#34; 
   &gt;
  Installation von nginx mit PHP auf Gentoo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3136/installation-von-eaccelerator-in-verbindung-mit-nginx-unter-gentoo/&#34;
    title=&#34;Installation von eAccelerator in Verbindung mit nginx unter Gentoo&#34; 
   &gt;
  Installation von eAccelerator in Verbindung mit nginx unter Gentoo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;konfiguration&#34;&gt;Konfiguration&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3132/nginx-ausgabe-der-server-version-auf-fehlerseiten-und-header-unterdruecken/&#34;
    title=&#34;Ausgabe der Server-Version auf Fehlerseiten und Header unterdrücken&#34; 
   &gt;
  Ausgabe der Server-Version auf Fehlerseiten und Header unterdrücken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3134/rewrite-rules-fuer-das-simplemachinesforum-mit-dem-prettyurls-plugin-auf-dem-webserver-nginx/&#34;
    title=&#34;Rewrite Rules für das SimpleMachinesForum mit PrettyUrls-Plugin&#34; 
   &gt;
  Rewrite Rules für das SimpleMachinesForum mit PrettyUrls-Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3147/nginx-rewrite-rules-fuer-mediawiki/&#34;
    title=&#34;Rewrite-Rules für Mediawiki&#34; 
   &gt;
  Rewrite-Rules für Mediawiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/4361/question2answer-mit-nginx-rewrite-rules-fuer-den-webserver/&#34;
    title=&#34;Rewrite-Rules für Question2Answer&#34; 
   &gt;
  Rewrite-Rules für Question2Answer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3149/nginx-umleitung-vom-domainprefix-www-auf-non-www/&#34;
    title=&#34;Rewrite-Rules zur umleitung von &amp;ldquo;www&amp;rdquo; auf &amp;ldquo;non-www&amp;rdquo;&#34; 
   &gt;
  Rewrite-Rules zur umleitung von &amp;ldquo;www&amp;rdquo; auf &amp;ldquo;non-www&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3227/nginx-verweigerung-des-zugriffs-auf-svn-verzeichnisse/&#34;
    title=&#34;Rewrite-Rules zur Verweigerung des Zugriffs auf .svn-Verzeichnisse&#34; 
   &gt;
  Rewrite-Rules zur Verweigerung des Zugriffs auf .svn-Verzeichnisse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3348/bildercache-fuer-den-webserver-nginx-am-beispiel-von-gravatar-icons/&#34;
    title=&#34;Bildercache mit statischer Auslieferung&#34; 
   &gt;
  Bildercache mit statischer Auslieferung&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3385/umleitung-bei-ausschliesslicher-angabe-der-post_id-in-der-url-auf-den-vollen-wordpress-permalink-mittels-nginx/&#34;
    title=&#34;Umleitung von Shortlinks zu Wordpress-Beiträgen&#34; 
   &gt;
  Umleitung von Shortlinks zu Wordpress-Beiträgen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3943/betrieb-von-piwik-auf-dem-webserver-nginx/&#34;
    title=&#34;Betrieb von Piwik&#34; 
   &gt;
  Betrieb von Piwik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3970/aktivierung-von-ipv6-auf-dem-webserver-nginx-unter-debian/&#34;
    title=&#34;Aktivierung von IPv6&#34; 
   &gt;
  Aktivierung von IPv6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;fehlerlösungen&#34;&gt;Fehlerlösungen&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3131/nginx-worker_connections-are-more-than-open-file-resource-limit/&#34;
    title=&#34;worker_connections are more than open file resource limit&#34; 
   &gt;
  worker_connections are more than open file resource limit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wolf-u.li/3575/fehler-invalid-query-name-1-in-der-log-datei-von-php-fpm-unter-nginx-und-apache/&#34;
    title=&#34;PHP-FPM: &amp;ldquo;Invalid query name 1&amp;rdquo;&#34; 
   &gt;
  PHP-FPM: &amp;ldquo;Invalid query name 1&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      
         <content:encoded><![CDATA[<p>Dies ist der Leitartikel zu diversen Anleitungen zu Konfiguration und Installation des Webservers Nginx. Ich habe diesen unter Gentoo installiert, andere Distributionen sind da aber durchaus ähnlich.</p>
<h2 id="installation">Installation</h2>
<ul>
<li><a href="/3130/installation-von-nginx-mit-php-auf-gentoo/"
    title="Installation von nginx mit PHP auf Gentoo" 
   >
  Installation von nginx mit PHP auf Gentoo</a></li>
<li><a href="/3136/installation-von-eaccelerator-in-verbindung-mit-nginx-unter-gentoo/"
    title="Installation von eAccelerator in Verbindung mit nginx unter Gentoo" 
   >
  Installation von eAccelerator in Verbindung mit nginx unter Gentoo</a></li>
</ul>
<h2 id="konfiguration">Konfiguration</h2>
<ul>
<li><a href="/3132/nginx-ausgabe-der-server-version-auf-fehlerseiten-und-header-unterdruecken/"
    title="Ausgabe der Server-Version auf Fehlerseiten und Header unterdrücken" 
   >
  Ausgabe der Server-Version auf Fehlerseiten und Header unterdrücken</a></li>
<li><a href="/3134/rewrite-rules-fuer-das-simplemachinesforum-mit-dem-prettyurls-plugin-auf-dem-webserver-nginx/"
    title="Rewrite Rules für das SimpleMachinesForum mit PrettyUrls-Plugin" 
   >
  Rewrite Rules für das SimpleMachinesForum mit PrettyUrls-Plugin</a></li>
<li><a href="/3147/nginx-rewrite-rules-fuer-mediawiki/"
    title="Rewrite-Rules für Mediawiki" 
   >
  Rewrite-Rules für Mediawiki</a></li>
<li><a href="/4361/question2answer-mit-nginx-rewrite-rules-fuer-den-webserver/"
    title="Rewrite-Rules für Question2Answer" 
   >
  Rewrite-Rules für Question2Answer</a></li>
<li><a href="/3149/nginx-umleitung-vom-domainprefix-www-auf-non-www/"
    title="Rewrite-Rules zur umleitung von &ldquo;www&rdquo; auf &ldquo;non-www&rdquo;" 
   >
  Rewrite-Rules zur umleitung von &ldquo;www&rdquo; auf &ldquo;non-www&rdquo;</a></li>
<li><a href="/3227/nginx-verweigerung-des-zugriffs-auf-svn-verzeichnisse/"
    title="Rewrite-Rules zur Verweigerung des Zugriffs auf .svn-Verzeichnisse" 
   >
  Rewrite-Rules zur Verweigerung des Zugriffs auf .svn-Verzeichnisse</a></li>
<li><a href="/3348/bildercache-fuer-den-webserver-nginx-am-beispiel-von-gravatar-icons/"
    title="Bildercache mit statischer Auslieferung" 
   >
  Bildercache mit statischer Auslieferung</a></li>
<li><a href="/3385/umleitung-bei-ausschliesslicher-angabe-der-post_id-in-der-url-auf-den-vollen-wordpress-permalink-mittels-nginx/"
    title="Umleitung von Shortlinks zu Wordpress-Beiträgen" 
   >
  Umleitung von Shortlinks zu Wordpress-Beiträgen</a></li>
<li><a href="/3943/betrieb-von-piwik-auf-dem-webserver-nginx/"
    title="Betrieb von Piwik" 
   >
  Betrieb von Piwik</a></li>
<li><a href="/3970/aktivierung-von-ipv6-auf-dem-webserver-nginx-unter-debian/"
    title="Aktivierung von IPv6" 
   >
  Aktivierung von IPv6</a></li>
</ul>
<h2 id="fehlerlösungen">Fehlerlösungen</h2>
<ul>
<li><a href="/3131/nginx-worker_connections-are-more-than-open-file-resource-limit/"
    title="worker_connections are more than open file resource limit" 
   >
  worker_connections are more than open file resource limit</a></li>
<li><a href="/3575/fehler-invalid-query-name-1-in-der-log-datei-von-php-fpm-unter-nginx-und-apache/"
    title="PHP-FPM: &ldquo;Invalid query name 1&rdquo;" 
   >
  PHP-FPM: &ldquo;Invalid query name 1&rdquo;</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>apache2: subversion/libsvn_subr/path.c:377: svn_path_basename: Assertion `is_canonical(path, len)&#39; failed.</title>
      
      
      <link>https://wolf-u.li/apache2-subversionlibsvn_subrpathc377-svn_path_basename-assertion-is_canonicalpath-len-failed/</link>
      <pubDate>Thu, 16 Aug 2007 11:37:37 +1600</pubDate>
      <guid>https://wolf-u.li/apache2-subversionlibsvn_subrpathc377-svn_path_basename-assertion-is_canonicalpath-len-failed/</guid>
      <description>&lt;p&gt;Gestern habe ich mich mal wieder an SVN versucht und habe dabei immer folgenden Fehler beim Aufrufen des SVN via mod_dav bekommen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apache2: subversion/libsvn_subr/path.c:377: svn_path_basename: Assertion `is_canonical(path, len)&amp;#39; failed.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[notice] child pid 15181 exit signal Aborted (6)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Eingesetzte Software:
Gentoo: Tagesaktuell
Subversion: 1.4.4
Apache: 2.2.4&lt;/p&gt;
&lt;p&gt;Die eingesetzte Config umfasste ein SVN-Repository, welches per SVNPath angesprochen wurde. Um den obenstehenden Fehler loszuwerden musste ich in der Config-Datei für den Vhost die Zeile mit &lt;code&gt;AuthzSVNAccessFile&lt;/code&gt; auskommentieren. Man kann also keine AuthzSVNAccessFile für genauere Berechtigungen verwenden, wenn man ein einzelnes Repository über SVNPath benützen möchte (gibt ja auch irgendwo Sinn)
Wenn man jedoch SVNParentPath für mehrere Repositorys nutzt, dann kann man auch wieder die AuthzSVNAccessFile nutzen.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Gestern habe ich mich mal wieder an SVN versucht und habe dabei immer folgenden Fehler beim Aufrufen des SVN via mod_dav bekommen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">apache2: subversion/libsvn_subr/path.c:377: svn_path_basename: Assertion `is_canonical(path, len)&#39; failed.
</span></span><span class="line"><span class="cl">[notice] child pid 15181 exit signal Aborted (6)
</span></span></code></pre></td></tr></table>
</div>
</div><p>Eingesetzte Software:
Gentoo: Tagesaktuell
Subversion: 1.4.4
Apache: 2.2.4</p>
<p>Die eingesetzte Config umfasste ein SVN-Repository, welches per SVNPath angesprochen wurde. Um den obenstehenden Fehler loszuwerden musste ich in der Config-Datei für den Vhost die Zeile mit <code>AuthzSVNAccessFile</code> auskommentieren. Man kann also keine AuthzSVNAccessFile für genauere Berechtigungen verwenden, wenn man ein einzelnes Repository über SVNPath benützen möchte (gibt ja auch irgendwo Sinn)
Wenn man jedoch SVNParentPath für mehrere Repositorys nutzt, dann kann man auch wieder die AuthzSVNAccessFile nutzen.</p>
<p>Hat bei mir den Fehler erstmal behoben.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Xdebug als Profiler für eine PHP-Anwendung installieren und dessen Logs auswerten</title>
      
      
      <link>https://wolf-u.li/xdebug-als-profiler-fuer-eine-php-anwendung-installieren-und-dessen-logs-auswerten/</link>
      <pubDate>Sun, 28 Sep 2008 23:23:42 +2800</pubDate>
      <guid>https://wolf-u.li/xdebug-als-profiler-fuer-eine-php-anwendung-installieren-und-dessen-logs-auswerten/</guid>
      <description>&lt;p&gt;Seit ein paar Tagen ging mir die Ladezeit meiner Page (~2,5 Sekunden Generierungszeit) extrem auf den Keks. Auf dem Server konnte ich keine Übeltäter erkennen, da andere Seiten mit deutlich mehr Queries extrem schnell geladen werden konnten.
Daher schaltete ich kurzfristig Xdebug für meinen Webhost frei und zeichnete einen Request zum Zwecke des Profilings von Wordpress auf. Anschließend konnte ich diesen auswerten und ein Plugin namens &amp;ldquo;PHP Speedy WP&amp;rdquo; als den Haupt-Übeltäter indentifizieren. In der Version 0.4.5 benötigte dieses Plugin gut eine Sekunde für eine Prüfung, die eigentlich über einen cache laufen sollte.
Im folgenden möchte ich kurz auf die Installation von Xdebug und die Auswertung der erstellten Logs eingehen.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Seit ein paar Tagen ging mir die Ladezeit meiner Page (~2,5 Sekunden Generierungszeit) extrem auf den Keks. Auf dem Server konnte ich keine Übeltäter erkennen, da andere Seiten mit deutlich mehr Queries extrem schnell geladen werden konnten.
Daher schaltete ich kurzfristig Xdebug für meinen Webhost frei und zeichnete einen Request zum Zwecke des Profilings von Wordpress auf. Anschließend konnte ich diesen auswerten und ein Plugin namens &ldquo;PHP Speedy WP&rdquo; als den Haupt-Übeltäter indentifizieren. In der Version 0.4.5 benötigte dieses Plugin gut eine Sekunde für eine Prüfung, die eigentlich über einen cache laufen sollte.
Im folgenden möchte ich kurz auf die Installation von Xdebug und die Auswertung der erstellten Logs eingehen.</p>
<p>Unter Gentoo gestaltet sich die Installation wie immer extrem einfach:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">emerge -av xdebug
</span></span></code></pre></td></tr></table>
</div>
</div><p>Damit ist xdebug für alle Webhosts installiert! Es ist noch nicht aktiviert! Noch ein Hinweis: Xdebug verträgt sich nicht mit Zend Optimizer, man kann nur eines gleichzeitig einschalten! (Logmeldung: &ldquo;Zend Optimizer 3.3.3 is incompatible with Xdebug 2.0.2&rdquo; kam bei mir)</p>
<p>Ich fahre ein komplexes Setup mit mod_fcgid, was mir erlaubt für jeden Webhost einzelne php.ini-Files anzulegen.
Daher habe ich zunächst die extension wieder deaktiviert:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">rm /etc/php/cgi-php5/ext-active/xdebug.ini
</span></span><span class="line"><span class="cl">rm /etc/php/cli-php5/ext-active/xdebug.ini
</span></span></code></pre></td></tr></table>
</div>
</div><p>Und anschließend die relevanten Daten der Config in der php.ini meines Webhosts eingetragen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-ini" data-lang="ini"><span class="line"><span class="cl"><span class="na">zend_extension</span><span class="o">=</span><span class="s">/usr/lib/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so</span>
</span></span><span class="line"><span class="cl"><span class="na">xdebug.profiler_enable</span><span class="o">=</span><span class="s">&#34;1&#34;</span>
</span></span><span class="line"><span class="cl"><span class="na">xdebug.profiler_output_dir</span><span class="o">=</span><span class="s">&#34;/tmp&#34;</span>
</span></span><span class="line"><span class="cl"><span class="na">xdebug.profiler_output_name</span><span class="o">=</span><span class="s">&#34;cachegrind.out.%u.%p&#34;</span>
</span></span><span class="line"><span class="cl"><span class="na">xdebug.profiler_enable_trigger</span><span class="o">=</span><span class="s">&#34;1&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Was heissen diese Werte?</p>
<ul>
<li><strong>zend_extension</strong>:
Lädt die Erweiterung</li>
<li><strong>xdebug.profiler_enable</strong>
Schaltet den Profiler ein</li>
<li><strong>xdebug.profiler_output_dir</strong>
In diesem Verzeichnis werden die Profiling-Log-Files abgelegt</li>
<li><strong>xdebug.profiler_output_name</strong>
Name der Profiling-Log-Files, folgende Platzhalter existieren:
<ul>
<li>%p Process-Id</li>
<li>%r Zufallszahl</li>
<li>%u Zeitstempel in Microsekunden</li>
<li>%H Wert von $_SERVER[&lsquo;HTTP_HOST&rsquo;]</li>
<li>%R Wert von $_SERVER[&lsquo;REQUEST_URI&rsquo;]</li>
<li>%s Name des Script mit vollem Pfad, Slashes werden in Unterstriche konvertiert</li>
</ul>
</li>
<li><strong>xdebug.profiler_enable_trigger</strong>
Logfiles werden nur über das Auslösen eine Triggers geschrieben. Da diese Logfiles teilweise sehr groß sind, sollte man diesen Schalter einschalten, um nicht jeden Request eines jeden Besuchers aufzuzeichnen. Dieser Trigger lautet: <em>http://url-des-webhosts/?XDEBUG_PROFILE</em></li>
</ul>
<p>Welche weiteren Switches existieren?</p>
<ul>
<li><strong>xdebug.profiler_append</strong>
Kann genutzt werden, um nur ein Logfile mit allen Profiling-Daten zu bekommen (<em>xdebug.profiler_append=1</em>). Neue Einträge werden dann (wenn der xdebug.profiler_output_name immer der gleiche ist) bei der Ausgabedatei einfach angehängt</li>
</ul>
<p>Jetzt erstellen wir ein solches Profiling-Logfile indem wir <em>http://url-des-webhosts/?XDEBUG_PROFILE</em> aufrufen. Dieses hat bei mir für einen Request eine Größe von 17MB.</p>
<p><img src="/upload/2008/09/1952-wincachegrind-1.webp" alt="Übersicht" loading="lazy" title="Übersichtsfenster"></p>
<p>Die Auswertung wird unter Windows mittels <link rel=dns-prefetch href=//sourceforge.net /> <a href="http://sourceforge.net/projects/wincachegrind/"
    title="WinCacheGrind" 
     target="_blank" rel="nofollow noopener noreferrer" >
  WinCacheGrind&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> gemacht. Nach der Installation öffnet man das Programm und lädt die soeben erstellte Datei.</p>
<p><img src="/upload/2008/09/1952-wincachegrind-2.webp" alt="WinCacheGrind" loading="lazy" title="1952-wincachegrind-2"></p>
<p>Mein Tipp: Zuerstmal die schnellen Funktionen (d.h. &lt;1ms) und die PHP-Funktionen ausschalten, denn an diesen hakt es meistens nicht. Das geht über das Menü &ldquo;Profiler&rdquo;.</p>
<p>Nun kann man sich einfach per Doppelklick durch die Funktionen hangeln.</p>
<p>Unter Linux existiert für die KDE-Umgebung ein Tool namens <link rel=dns-prefetch href=//sourceforge.net /> <a href="http://sourceforge.net/projects/kcachegrind/"
    title="KCacheGrind" 
     target="_blank" rel="nofollow noopener noreferrer" >
  KCacheGrind&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, welches deutlich mehr als nur die Funktionalitäten von WinCacheGrind beinhaltet. Es kann auch die Profiling-Daten visualisieren und beispielsweise Aufrufe als Graphen zeichnen. Auf dieser Seite kann man das ein auch ansehen, ich habe es selbst nicht getestet ;)</p>
<p>Übrigens das Ergebnis des Abschaltens des Plugins: 2 Sekunden weniger fürs generieren der Seite! Jetzt könnte ich noch 400ms einsparen, wenn ich mein Template durchgehend auf Deutsch direkt übersetzen würde und keine Sprachdateien verwenden würde (Die Spracheengine ist nicht gerade nen Knaller&hellip;). Problem dabei ist, dass es häufige Updates für dieses Theme gibt und der Aufwand enorm ist&hellip;ne Sekunde für die Startseite ist tolerabel.</p>
]]></content:encoded>
    </item>
    <item>
      <title>SysCP 1.4(.1) ist erschienen</title>
      
      
      <link>https://wolf-u.li/syscp-141-ist-erschienen/</link>
      <pubDate>Thu, 11 Dec 2008 17:28:02 +1100</pubDate>
      <guid>https://wolf-u.li/syscp-141-ist-erschienen/</guid>
      <description>&lt;p&gt;Es ist zwar schon ein paar tage her, dennoch ist es eine Meldung wert: SysCP 1.4.1 ist erschienen. Der Versionssprung von 1.2.19 auf 1.4.1 bringt folgende Neuerungen mit sich:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;APS: Der Application Packaging Standard hat seinen Weg in dieses Relelase gefunden. Kunden können nun Blogs, Gästebücher, Foren mit nur einem Klick installieren.&lt;/li&gt;
&lt;li&gt;Abrechnungs-Modul: Das Modul ermöglicht eine einfache Abrechnung von Kundendienstleistungen und bietet Unterstützung für diverse Vorlagen.&lt;/li&gt;
&lt;li&gt;Autoresponder: Abwesenheitsnotizen werden immer wichtiger in der Geschäftswelt. Dieses Feature wurde nun in SysCP integriert und bietet nun die Möglichkeit einfach solche automatischen Abwesenheitsnachrichten zu erstellen.&lt;/li&gt;
&lt;li&gt;Cronjob: Das Herz von SysCP wurde komplett neu geschrieben. Dabei flossen viele Verbesserungen und Fehlerbehebungen ein.&lt;/li&gt;
&lt;li&gt;Unterstützung für Dovecot.&lt;/li&gt;
&lt;li&gt;E-Mail-Kontingente: Jeder Benutzer kann nur eine bestimmte Menge an Speicherplatz pro Mailbox beanspruchen. Verfügbar für Courier und Dovecot.&lt;/li&gt;
&lt;li&gt;FCGID: PHP-Skripte können in ihrer eigenen Umgebung laufen - jeder Kunde hat seine eigene php.ini.&lt;/li&gt;
&lt;li&gt;IPv6 Verbesserung: SysCP kann nun vollständig mit IPv6-Adressen umgehen.&lt;/li&gt;
&lt;li&gt;Unterstützung für Lighttpd: Oft nachgefragt und nun endlich enthalten: Lighttpd Support für SysCP. Lighttpd ist ein schneller und einfach zu benutzender Webserver und damit eine wertvolle Alternative für Apache 2.&lt;/li&gt;
&lt;li&gt;Logging-System: Alle Aktivitäten im Überblick: Mit diesem Feature werden die Aktionen der Kunden, Reseller, Admins, des Updaters und des Cronjobs protokolliert.&lt;/li&gt;
&lt;li&gt;Sicherheit: Um die Einträge in der Datenbank sicher zu halten nutzt SysCP nun die PHP-Filter-Erweiterung um die eingegebenen Daten auf Gültigkeit zu überprüfen.&lt;/li&gt;
&lt;li&gt;Einstellungsseite: Die neue, überarbeitete Einstellungsseite wurde in verschiedene Kategorien unterteilt und bietet nun An-Aus-Schalter zum schnellen Deaktivieren von Features.&lt;/li&gt;
&lt;li&gt;Traffic-Überblick: Gibt Kunden einen graphischen Überblück über ihren Trafficverbrauch.&lt;/li&gt;
&lt;li&gt;Konfigurationsdateien für Ubuntu 8.04 (Hardy Heron)&lt;/li&gt;
&lt;li&gt;Usability: Viele Interface-Verbesserungen machen die Bedienung von SysCP noch einfacher und benutzerfreundlicher.&lt;/li&gt;
&lt;li&gt;Bugfixes: Sehr viele Bugs, die von Nutzern berichtet wurden&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Insgesamt ein hervorragendes Release, ich freue mich auf das APS-System. Da es kein Security-Release war, ist ein Upgrade nicht sofort erforderlich. Gott sei Dank, denn es sind leider auch verdammt viele Änderungen :P Wird ein kompliziertes Upgrade&amp;hellip;(Ich fahr ja FCGID nicht erst seit 1.2.19&amp;hellip;). &lt;del&gt;Momentan scheint es noch ein Problem mit doppelten Menüeinträgen zu geben, wofür momentan noch kein Fix verfügbar ist.&lt;/del&gt;
Mittlerweile gibt es ein Update auf 1.4.2 mit folgenden Änderungen:&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Es ist zwar schon ein paar tage her, dennoch ist es eine Meldung wert: SysCP 1.4.1 ist erschienen. Der Versionssprung von 1.2.19 auf 1.4.1 bringt folgende Neuerungen mit sich:</p>
<ul>
<li>APS: Der Application Packaging Standard hat seinen Weg in dieses Relelase gefunden. Kunden können nun Blogs, Gästebücher, Foren mit nur einem Klick installieren.</li>
<li>Abrechnungs-Modul: Das Modul ermöglicht eine einfache Abrechnung von Kundendienstleistungen und bietet Unterstützung für diverse Vorlagen.</li>
<li>Autoresponder: Abwesenheitsnotizen werden immer wichtiger in der Geschäftswelt. Dieses Feature wurde nun in SysCP integriert und bietet nun die Möglichkeit einfach solche automatischen Abwesenheitsnachrichten zu erstellen.</li>
<li>Cronjob: Das Herz von SysCP wurde komplett neu geschrieben. Dabei flossen viele Verbesserungen und Fehlerbehebungen ein.</li>
<li>Unterstützung für Dovecot.</li>
<li>E-Mail-Kontingente: Jeder Benutzer kann nur eine bestimmte Menge an Speicherplatz pro Mailbox beanspruchen. Verfügbar für Courier und Dovecot.</li>
<li>FCGID: PHP-Skripte können in ihrer eigenen Umgebung laufen - jeder Kunde hat seine eigene php.ini.</li>
<li>IPv6 Verbesserung: SysCP kann nun vollständig mit IPv6-Adressen umgehen.</li>
<li>Unterstützung für Lighttpd: Oft nachgefragt und nun endlich enthalten: Lighttpd Support für SysCP. Lighttpd ist ein schneller und einfach zu benutzender Webserver und damit eine wertvolle Alternative für Apache 2.</li>
<li>Logging-System: Alle Aktivitäten im Überblick: Mit diesem Feature werden die Aktionen der Kunden, Reseller, Admins, des Updaters und des Cronjobs protokolliert.</li>
<li>Sicherheit: Um die Einträge in der Datenbank sicher zu halten nutzt SysCP nun die PHP-Filter-Erweiterung um die eingegebenen Daten auf Gültigkeit zu überprüfen.</li>
<li>Einstellungsseite: Die neue, überarbeitete Einstellungsseite wurde in verschiedene Kategorien unterteilt und bietet nun An-Aus-Schalter zum schnellen Deaktivieren von Features.</li>
<li>Traffic-Überblick: Gibt Kunden einen graphischen Überblück über ihren Trafficverbrauch.</li>
<li>Konfigurationsdateien für Ubuntu 8.04 (Hardy Heron)</li>
<li>Usability: Viele Interface-Verbesserungen machen die Bedienung von SysCP noch einfacher und benutzerfreundlicher.</li>
<li>Bugfixes: Sehr viele Bugs, die von Nutzern berichtet wurden</li>
</ul>
<p>Insgesamt ein hervorragendes Release, ich freue mich auf das APS-System. Da es kein Security-Release war, ist ein Upgrade nicht sofort erforderlich. Gott sei Dank, denn es sind leider auch verdammt viele Änderungen :P Wird ein kompliziertes Upgrade&hellip;(Ich fahr ja FCGID nicht erst seit 1.2.19&hellip;). <del>Momentan scheint es noch ein Problem mit doppelten Menüeinträgen zu geben, wofür momentan noch kein Fix verfügbar ist.</del>
Mittlerweile gibt es ein Update auf 1.4.2 mit folgenden Änderungen:</p>
<ul>
<li>Doppelte Menüeinträge für das Abrechnungs-Modul wurden entfernt</li>
<li>APS-Menü wird wieder angezeigt</li>
<li>PHPMyAdmin/WebMail/WebFTP-Links werden wieder angezeigt</li>
<li>PHP Konfiguration ist wieder editierbar</li>
<li>Einige Fehler in den Englischen Sprachdateien wurden behoben</li>
<li>Geschützte Bereiche funktionieren wieder mit lighttpd</li>
<li>Awstats-Konfigurationsseite zeigt alle Konfigurationen</li>
<li>Fehlender Zeilenumbruch in der nss-mysql.cnf</li>
<li>Database Query Error bei der Suche nach Tickets auf der Kategorienseite</li>
<li>Resellers konnten Instanzen ihrer Kunden nicht mehr verwalten</li>
<li>Autoresponder cron script lief nicht, wenn short-tags deaktiviert waren</li>
<li>Autoresponder hat nicht das Lockfile deaktiviert, wenn er deaktiviert wurde</li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Spezielle USE-Flags für ein Paket und Demaskierung von Paketen unter Gentoo</title>
      
      
      <link>https://wolf-u.li/spezielle-use-flags-fuer-ein-paket-und-demaskierung-von-paketen-unter-gentoo/</link>
      <pubDate>Sun, 19 Sep 2010 16:24:25 +1900</pubDate>
      <guid>https://wolf-u.li/spezielle-use-flags-fuer-ein-paket-und-demaskierung-von-paketen-unter-gentoo/</guid>
      <description>&lt;h2 id=&#34;spezielle-use-flags-für-ein-paket&#34;&gt;Spezielle USE-Flags für ein Paket&lt;/h2&gt;
&lt;p&gt;Möchte man für ein Paket bestimmte USE-Flags setzen, ohne dass es in der make.conf global gesetzt wird, kann man die Datei &lt;code&gt;/etc/portage/package.use&lt;/code&gt; verwenden.
Beispielsweise möchte ich für das Paket mysql die berkdb deaktivieren. Daher habe ich entsprechend:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dev-db/mysql -berkdb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;in der obenstehenden Datei eingetragen.
Möchte man jedoch USB-Support für apcupsd (Ein Programm zur Steuerung von USV&amp;rsquo;s) haben, so muss man folgendes eintragen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sys-power/apcupsd usb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Jedes Paket beansprucht dabei eine Zeile.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<h2 id="spezielle-use-flags-für-ein-paket">Spezielle USE-Flags für ein Paket</h2>
<p>Möchte man für ein Paket bestimmte USE-Flags setzen, ohne dass es in der make.conf global gesetzt wird, kann man die Datei <code>/etc/portage/package.use</code> verwenden.
Beispielsweise möchte ich für das Paket mysql die berkdb deaktivieren. Daher habe ich entsprechend:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dev-db/mysql -berkdb
</span></span></code></pre></td></tr></table>
</div>
</div><p>in der obenstehenden Datei eingetragen.
Möchte man jedoch USB-Support für apcupsd (Ein Programm zur Steuerung von USV&rsquo;s) haben, so muss man folgendes eintragen:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sys-power/apcupsd usb
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jedes Paket beansprucht dabei eine Zeile.</p>
<h2 id="spezielle-pakete-demaskieren">Spezielle Pakete demaskieren</h2>
<p>Oft kommt es vor, dass man bestimmte Pakete installieren möchte, es aber von Portage mit dem Hinweis &ldquo;<em>All ebuilds that could satisfy &ldquo;XXXX&rdquo; have been masked.</em>&rdquo;. Dies ist beispielsweise beim Paket &ldquo;dev-php5/ZendOptimizer&rdquo; der Fall. Dieses Paket wurde für die Plattform x86 leider noch nicht stabilized, was man aber selbst in der Datei <code>/etc/portage/package.keywords</code> lösen kann. Das sollte man sich natürlich gut überlegen, manche Pakete werden jedoch &ldquo;nie&rdquo; stabilisiert, weshalb man diesen Schritt schon mal gehen kann. Eine andere Möglichkeit ist beispielsweise bei Paketen, wo noch keine Version freigegeben wurde, eine Freigabe zu erzielen.</p>
<p>Dazu fügt man:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dev-php5/ZendOptimizer ~x86
</span></span></code></pre></td></tr></table>
</div>
</div><p>hinzu, und schon wird die Maskierung für die Plattform x86 entfernt. Will man es für alle Plattformen freigeben, so genügt ein:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">dev-php5/ZendOptimizer
</span></span></code></pre></td></tr></table>
</div>
</div><p>Jedes Paket beansprucht dabei eine Zeile.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Gentoo: Can&#39;t run java-config --help</title>
      
      
      <link>https://wolf-u.li/gentoo-cant-run-java-config-help/</link>
      <pubDate>Sun, 19 Sep 2010 16:04:28 +1900</pubDate>
      <guid>https://wolf-u.li/gentoo-cant-run-java-config-help/</guid>
      <description>&lt;p&gt;Auf meinem Gentoo-Server ist mal wieder ein Fehler aufgetreten, der wie folgt aussieht:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;~# &lt;strong&gt;java-config &amp;ndash;help&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;`Traceback (most recent call last):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;File &amp;#34;/usr/bin/java-config-2&amp;#34;, line 8, in
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;from java_config_2 import __version__
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ImportError: No module named java_config_2`
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Lösung: &lt;strong&gt;java-config&lt;/strong&gt; neu emergen.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Auf meinem Gentoo-Server ist mal wieder ein Fehler aufgetreten, der wie folgt aussieht:</p>
<blockquote>
<p>~# <strong>java-config &ndash;help</strong></p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">`Traceback (most recent call last):
</span></span><span class="line"><span class="cl">File &#34;/usr/bin/java-config-2&#34;, line 8, in
</span></span><span class="line"><span class="cl">from java_config_2 import __version__
</span></span><span class="line"><span class="cl">ImportError: No module named java_config_2`
</span></span></code></pre></td></tr></table>
</div>
</div><p>Lösung: <strong>java-config</strong> neu emergen.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ProFTPd: unknown configuration directive &#39;AuthUserFile&#39;</title>
      
      
      <link>https://wolf-u.li/proftpd-unknown-configuration-directive-authuserfile/</link>
      <pubDate>Sun, 25 Apr 2010 17:37:02 +2500</pubDate>
      <guid>https://wolf-u.li/proftpd-unknown-configuration-directive-authuserfile/</guid>
      <description>&lt;p&gt;Soeben habe ich einen ProFTPd-Server unter Gentoo mit der Direktive &lt;em&gt;&lt;link rel=dns-prefetch href=//www.proftpd.org /&gt; &lt;a href=&#34;http://www.proftpd.org/docs/directives/linked/config_ref_AuthUserFile.html&#34;
    title=&#34;AuthUserFile&#34; 
     target=&#34;_blank&#34; rel=&#34;nofollow noopener noreferrer&#34; &gt;
  AuthUserFile&amp;nbsp;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;icon&#34; aria-hidden=&#34;true&#34; focusable=&#34;false&#34; viewBox=&#34;0 -128 512 640&#34;&gt;
    &lt;path d=&#34;M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z&#34;/&gt;
  &lt;/svg&gt;&lt;/a&gt;&lt;/em&gt; konfigurieren wollen.
Dieser quittierte meinen Versuch mit der folgenden Meldung:&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Soeben habe ich einen ProFTPd-Server unter Gentoo mit der Direktive <em><link rel=dns-prefetch href=//www.proftpd.org /> <a href="http://www.proftpd.org/docs/directives/linked/config_ref_AuthUserFile.html"
    title="AuthUserFile" 
     target="_blank" rel="nofollow noopener noreferrer" >
  AuthUserFile&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a></em> konfigurieren wollen.
Dieser quittierte meinen Versuch mit der folgenden Meldung:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">* Checking proftpd configuration ...
</span></span><span class="line"><span class="cl">Checking syntax of configuration file
</span></span><span class="line"><span class="cl">- Fatal: unknown configuration directive <span class="s1">&#39;AuthUserFile&#39;</span> on line <span class="m">44</span> of <span class="s1">&#39;/etc/proftpd/proftpd.conf&#39;</span>
</span></span><span class="line"><span class="cl">* Configuration error: please fix your configuration file <span class="o">(</span>/etc/proftpd/proftpd.conf<span class="o">)</span>. <span class="o">[</span> !! <span class="o">]</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Eine kurze Suche im Web brachte mich auf die Idee die USE-Flags zu überprüfen, was die Lösung brachte: Zu den USE-Flags muss <strong>authfile</strong> hinzugefügt werden.</p>
]]></content:encoded>
    </item>
    <item>
      <title>All ebuilds that could satisfy &#34;dev-java/sun-jdk&#34; have been masked: dlj-1.1 license(s)</title>
      
      
      <link>https://wolf-u.li/all-ebuilds-that-could-satisfy-dev-javasun-jdk-have-been-masked-dlj-1-1-licenses/</link>
      <pubDate>Mon, 22 Feb 2010 18:10:03 +2200</pubDate>
      <guid>https://wolf-u.li/all-ebuilds-that-could-satisfy-dev-javasun-jdk-have-been-masked-dlj-1-1-licenses/</guid>
      <description>&lt;p&gt;Vor einigen Tagen ist mir beim Update der Java-Version meines Servers der folgende Fehler untergekommen:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;`!!! The following installed packages are masked:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;dev-java/sun-jdk-1.6.0.17 (masked by: dlj-1.1 license(s))
A copy of the &amp;lsquo;dlj-1.1&amp;rsquo; license is located at &amp;lsquo;/usr/portage/licenses/dlj-1.1&amp;rsquo;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;dev-java/sun-jdk-1.5.0.22 (masked by: dlj-1.1 license(s))
For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;!!! All ebuilds that could satisfy &amp;ldquo;dev-java/sun-jdk&amp;rdquo; have been masked.
!!! One of the following masked packages is required to complete your request:&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Vor einigen Tagen ist mir beim Update der Java-Version meines Servers der folgende Fehler untergekommen:</p>
<blockquote>
<p>`!!! The following installed packages are masked:</p>
<ul>
<li>
<p>dev-java/sun-jdk-1.6.0.17 (masked by: dlj-1.1 license(s))
A copy of the &lsquo;dlj-1.1&rsquo; license is located at &lsquo;/usr/portage/licenses/dlj-1.1&rsquo;.</p>
</li>
<li>
<p>dev-java/sun-jdk-1.5.0.22 (masked by: dlj-1.1 license(s))
For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.</p>
</li>
</ul>
<p>!!! All ebuilds that could satisfy &ldquo;dev-java/sun-jdk&rdquo; have been masked.
!!! One of the following masked packages is required to complete your request:</p>
<ul>
<li>
<p>dev-java/sun-jdk-1.6.0.18-r1 (masked by: dlj-1.1 license(s), ~x86 keyword)
A copy of the &lsquo;dlj-1.1&rsquo; license is located at &lsquo;/usr/portage/licenses/dlj-1.1&rsquo;.</p>
</li>
<li>
<p>dev-java/sun-jdk-1.6.0.18 (masked by: dlj-1.1 license(s), ~x86 keyword)</p>
</li>
<li>
<p>dev-java/sun-jdk-1.6.0.17 (masked by: dlj-1.1 license(s))</p>
</li>
<li>
<p>dev-java/sun-jdk-1.5.0.22 (masked by: dlj-1.1 license(s))`</p>
</li>
</ul>
</blockquote>
<p>Die Lösung war das akzeptieren der Lizenz, wie bereits schon in der Meldung gesagt. Jedoch gibt es da verschiedene Möglichkeiten:</p>
<ol>
<li>Systemweites akzeptieren aller Lizenzen:
Füge in der Datei <code>/etc/make.conf</code> die folgende Zeile hinzu:</li>
<li>Systemweites akzeptieren einer oder mehrer spezifischer Lizenzen:
Füge in der Datei <code>/etc/make.conf</code> die folgende Zeile hinzu:</li>
<li>Akzeptieren einer Lizenz für ein Paket:
Füge in der Datei <code>/etc/portage/package.license</code> die folgende Zeile hinzu:
<code>dev-java/sun-jdk dlj-1.1</code></li>
</ol>
<p>Ich habe mich für letzteres entschieden:</p>
<blockquote>
<p><code>echo &quot;dev-java/sun-jdk dlj-1.1&quot; &gt;&gt; /etc/portage/package.license</code></p>
</blockquote>
<p>Und schon war das Problem gelöst :)</p>
]]></content:encoded>
    </item>
    <item>
      <title>Gentoo Linux: sys-fs/device-mapper is blocking sys-fs/udev-146</title>
      
      
      <link>https://wolf-u.li/gentoo-linux-sys-fsdevice-mapper-is-blocking-sys-fsudev-146/</link>
      <pubDate>Wed, 11 Nov 2009 14:05:30 +1100</pubDate>
      <guid>https://wolf-u.li/gentoo-linux-sys-fsdevice-mapper-is-blocking-sys-fsudev-146/</guid>
      <description>&lt;p&gt;Heute kam die Meldung:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;sys-fs/device-mapper is blocking sys-fs/udev-146&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;auf einem Server beim emerge hoch. Lösung war einfach:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;emerge --unmerge sys-fs/device-mapper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;emerge -av sys-fs/lvm2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;sys-fs/device-mapper ist nun in lvm2 integriert worden / übergegangen, weshalb es nicht mehr benötigt wird.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Heute kam die Meldung:</p>
<blockquote>
<p><code>sys-fs/device-mapper is blocking sys-fs/udev-146</code></p>
</blockquote>
<p>auf einem Server beim emerge hoch. Lösung war einfach:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">emerge --unmerge sys-fs/device-mapper
</span></span><span class="line"><span class="cl">emerge -av sys-fs/lvm2
</span></span></code></pre></td></tr></table>
</div>
</div><p>sys-fs/device-mapper ist nun in lvm2 integriert worden / übergegangen, weshalb es nicht mehr benötigt wird.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
