[svnbook commit] r3347 - trunk/src/de/book

khmarbaise noreply at red-bean.com
Wed Nov 12 13:39:32 CST 2008


Author: khmarbaise
Date: Wed Nov 12 13:39:31 2008
New Revision: 3347

Log:
* src/de/book/ch06-server-configuration.xml
  - integrated patch of Dirk Abe
    Ticket #189-#193 (www.svnbook.de)


Modified:
   trunk/src/de/book/ch06-server-configuration.xml

Modified: trunk/src/de/book/ch06-server-configuration.xml
==============================================================================
--- trunk/src/de/book/ch06-server-configuration.xml	(original)
+++ trunk/src/de/book/ch06-server-configuration.xml	Wed Nov 12 13:39:31 2008
@@ -861,6 +861,8 @@
 
     <!-- =============================================================== -->
     <sect2 id="svn.serverconfig.svnserve.invoking">
+ 
+<!--
       <title>Invoking the Server</title>
 
       <para>There are a few different ways to run the
@@ -879,9 +881,31 @@
         <listitem><para>Run <command>svnserve</command> as a Microsoft
             Windows service.</para></listitem>
       </itemizedlist>
+-->
+
+	<title>Der Serverstart</title>
+
+      <para>Es gibt mehrere Möglichkeiten einen <command>svnserve</command>
+      zu starten:
+      </para>
+
+      <itemizedlist>
+        <listitem><para>Den <command>svnserve</command> als eigenständigen Dienst (engl. daemon)
+        starten und auf Anfragen von Clients reagieren lassen.</para></listitem>
+        <listitem><para>Den <command>svnserve</command> bei Bedarf mit Hilfe
+        des Unix Dienstes <command>inetd</command> starten, wenn auf einem 
+        festgelegten Port Anfragen eines SVN-Clients ankommen.</para></listitem>
+        <listitem><para>Einen SSH-Server verwenden um <command>svnserve</command>
+        fallweise über einen SSH-Tunnel zu betreiben. </para></listitem>
+        <listitem><para><command>svnserve</command> als Microsoft Windows Dienst laufen lassen.</para></listitem>
+      </itemizedlist>
+
+
 
       <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       <sect3 id="svn.serverconfig.svnserve.invoking.daemon">
+      
+<!--
         <title>svnserve as daemon</title>
 
         <para>The easiest option is to run <command>svnserve</command>
@@ -927,10 +951,61 @@
 …
 </screen>
 
+-->
+
+
+<title>svnserve als Unix-Dienst</title>
+
+        <para>Die einfachste Variante ist, den <command>svnserve</comma als
+          eigenständigen (Unix-)Dienst laufen zu lassen. Verwenden Sie hierfür
+          die <option>-d</option> Option beim Aufruf:
+          </para>
+
+        <screen>
+$ svnserve -d
+$               # svnserve läuft nun als Dienst und lauscht auf Port 3690
+</screen>
+
+        <para>Wird der <command>svnserve</command> als Dienst betrieben, 
+          können Sie mit den Optionen  <option>--listen-port</option> und
+          <option>--listen-host</option> festlegen auf welchem Port und unter 
+          welchem Hostnamen er lauschen soll.</para>
+
+      <para>Wurde der <command>svnserve</command> auf diese Weise erfolgreich gestartet,
+        stehen nun alle Repositorys auf dem Server für Nutzer im Netzwerk zur Verfügung.
+        Für einen Zugriff muss ein Client den <emphasis>absoluten</emphasis> Pfad zum
+        Repository in der URL angeben. Ist das Repository beispielsweise im Verzeichnis
+        <filename>/var/svn/project1</filename> gespeichert, so sieht eine entsprechende URL
+        für den Zugriff folgendermaßen aus: <uri>svn://host.example.com/var/svn/project1</uri>
+        Um die Sicherheit zu erhöhen kann der <command>svnserve</command> beim Start mit Hilfe
+        der  <option>-r</option> an ein bestimmtes Verzeichnis gebunden werden - so das nur noch
+        die darin liegenden Repositorys im Netz verfügbar sind. Ein Beispiel:</para>
+      
+      <screen>
+$ svnserve -d -r /var/svn
+…
+</screen>
+
+      <para>Mit der <option>-r</option> - Option wird festgelegt welches
+        Verzeichnis vom <command>svnserve</command> bei Anfragen als
+        Wurzelverzeichnis (engl. root) verwendet wird. Ein Client muss
+        nun in seiner URL nur noch den Pfad relativ zum neuen Wurzelverzeichnis
+        des <command>svnserve</command> angeben, was die URL erheblich verkürzt und
+        die Verzeichnisstruktur etwas verschleiert:</para>
+
+      <screen>
+$ svn checkout svn://host.example.com/project1
+…
+</screen>
+
+
       </sect3>
 
+
       <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       <sect3 id="svn.serverconfig.svnserve.invoking.inetd">
+      
+<!--
         <title>svnserve via inetd</title>
 
         <para>If you want <command>inetd</command> to launch the
@@ -981,9 +1056,63 @@
         exported.</para>
 
       </sect3>
+-->
+
+
+<title>svnserve über inetd starten</title>
+
+        <para>Wenn Sie den <command>inetd</command> zum Start des 
+          <command>svnserve</command>-Prozesses verwenden wollen,
+          so übergeben Sie dem <command>svnserve</command> beim Aufruf
+          die Option <option>-i</option> (<option>--inetd</option>). Im folgenden Beispiel sehen
+          wir die Ausgaben beim Aufruf von <literal>svnserve -i</literal>
+          auf der Kommandozeile. Beachten Sie aber bitte das dies nicht
+          der Weg ist wie der Dienst normalerweise gestartet wird - eine genaue
+          Beschreibung wie der <command>svnserve</command> mittels des <command>inetd</command> gestartet
+          wird folgt anschließend.</para>
+
+      <screen>
+$ svnserve -i
+( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline ) ) )
+</screen>
+
+      <para>Mit der <option>--inetd</option>-Option versucht der <command>svnserve</command>
+        mit dem Subversion-Client unter Verwendung eines Standardprotokolls via   
+       <filename>stdin</filename> und <filename>stdout</filename> zu sprechen.
+       Dies ist der normale Weg für ein Programm welches mit Hilfe des  <command>inetd</command>
+       gestartet wurde. Die IANA (Internet Assigned Numbers Authority) hat für das 
+       Subversionsprotokoll den Port 3690 reserviert - auf einem Unix-ähnlichem System
+       fügen Sie einfach folgende Zeilen (wenn noch nicht vorhanden) in die Datei 
+       <filename>/etc/services</filename> ein:</para>
+
+      <screen>
+svn           3690/tcp   # Subversion
+svn           3690/udp   # Subversion
+</screen>
+
+      <para>Wenn Sie den klassischen Unix-<command>inetd</command>
+        verwenden, fügen Sie bitte folgende Zeile in die Datei <filename>/etc/inetd.conf</filename> ein:</para>
+
+      <screen>
+svn stream tcp nowait svnowner /usr/bin/svnserve svnserve -i
+</screen>
+
+      <para>Stellen Sie sicher das <quote>svnowner</quote> der Nutzer ist
+        welcher alle notwendigen Zugriffsrechte auf ihre Repositories hat.
+        Kommt nun eine Anfrage eines Subversionsclient auf Port 3690 rein,
+        so wird der  <command>inetd</command> einen <command>svnserve</command>-
+        Prozess starten um die Anfrage zu bedienen. Wahrscheinlich möchten Sie
+        noch die <option>-r</option>-Option zur oben genannten Zeile hinzu fügen,
+        um festzulegen welche Repositories exportiert werden.</para>
+
+      </sect3>
+
+
 
       <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       <sect3 id="svn.serverconfig.svnserve.invoking.tunnel">
+      
+<!--
         <title>svnserve over a tunnel</title>
 
         <para>A third way to invoke <command>svnserve</command> is in
@@ -1012,9 +1141,37 @@
           linkend="svn.serverconfig.svnserve.sshauth"/>.</para>
 
       </sect3>
+-->
+
+
+<title>svnserve über eine Tunnel verwenden</title>
+
+        <para>Eine dritte Möglichkeit ist den <command>svnserve</command> mittels
+          der <option>-t</option> - Option im Tunnel-Modus aufzurufen.
+          Bei diesem Aufruf wird vorausgesetzt das ein anderes Programm für
+          den Remote-Zugriff - etwa <command>rsh</command> oder <command>ssh</command> -
+          den Nutzer bereits erfolgreich authentifiziert hat, um nun einen privaten
+          <command>svnserve</command>-Prozess unter <emphasis>diesem Nutzer</emphasis>
+          zu starten. (Beachten Sie das für Sie, als Nutzer, selten bis nie die
+          Notwendigkeit bestehen wird den <command>svnserve</command> mit der 
+          <option>-t</option> - Option von Hand auf der Kommandozeile aufzurufen - 
+          der SSH-Dienst wird dies in der Regel für Sie machen.) Der <command>svnserve</command>
+          wird sich nun normal verhalten (abwickeln der Kommunikation via <filename>stdin</filename>
+          und <filename>stdout</filename>) und davon ausgehen das alle Daten mit Hilfe des Tunnels
+          zum Client weiter geleitet werden. Wird der <command>svnserve</command> wie in diesem Fall
+          durch ein Tunnel-Programm aufgerufen, ist es notwendig das der aufrufende Nutzer volle Lese-
+          und Schreibrechte  auf die Dateien der Repository-Datenbank hat.
+          Es verhält sich dabei im Grunde genommen so, als wenn der Nutzer mit der  
+          <literal>file://</literal>-URL auf ein Repository zugreifen würde.</para>
+
+        <para>Wir werden diese Option noch genau in diesem Kapitel behandeln und zwar in <xref
+          linkend="svn.serverconfig.svnserve.sshauth"/>.</para>
+
+      </sect3>
 
       <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       <sect3 id="svn.serverconfig.svnserve.invoking.winservice">
+<!--
         <title>svnserve as Windows service</title>
 
         <para>If your Windows system is a descendant of Windows NT
@@ -1104,6 +1261,90 @@
       </sect3>
 
     </sect2>
+ -->
+    
+ <title>svnserve als Dienst unter Windows</title>
+
+        <para>Gehört ihr Windows zur NT-Familie (2000, 2003, XP oder Vista),
+          so können Sie den <command>svnserve</command> auch als normalen
+          Windows-Dienst laufen lassen. Dies ist wesentlich sinnvoller als
+          die <option>--daemon (-d)</option> - Option zu verwenden und ihn
+          als Standalone-Dienst zu betreiben. Sie müssten dann immer eine
+          Konsole (cmd) öffnen, den passenden Befehl aufrufen und die Konsole
+          anschließend die ganze Zeit geöffnet lassen. Ein Windows-Dienst dagegen
+          läuft im Hintergrund, kann bereits beim Hochfahren des Servers 
+          automatisch starten und läßt sich wie jeder andere Windows-Dienst auch
+          mit dem selben Administrationsprogramm starten und stoppen.</para>
+
+        <para>Es ist notwendig den neuen Windows-Dienst unter Verwendung des
+          Kommandozeilenprogramms <command>SC.EXE</command> einzurichten.
+          Ähnlich der <command>inetd</command>-Konfigurationszeile
+          müssen Sie den genauen Aufruf für den Start des
+          <command>svnserve</command> festlegen:</para>
+
+        <screen>
+C:\> sc create svn
+        binpath= "C:\svn\bin\svnserve.exe --service -r C:\repos"
+        displayname= "Subversion Server"
+        depend= Tcpip
+        start= auto
+</screen>
+
+        <para>Hiermit erzeugen Sie einen neuen Windows-Dienst mit dem
+          Namen <quote>svn</quote>, welcher jedes mal das Programm
+          <command>svnserve.exe</command> startet (und in diesem Fall
+          <filename>C:\repos</filename> als Wurzelverzeichnis verwendet).
+          In diesem Beispiel müssen einige wichtige Punkte beachtet werden.</para>
+
+        <para>Als erstes ist es wichtig, dass das Programm <command>svnserve.exe</command>
+          immer mit der Option <option>--service</option> aufgerufen wird.
+          Alle weiteren Optionen müssen in der selben Zeile folgen, allerdings
+          dürfen sich widersprechende Option nicht verwendet werden - wie etwa
+          <option>--daemon (-d)</option>, <option>--tunnel</option> oder <option>--inetd (-i)</option>.
+          Optionen wie <option>-r</option> oder <option>--listen-port</option> sind 
+          hingegen in Ordnung. Zweitens, seien Sie beim Aufruf von <command>SC.EXE</command>
+          mit Leerzeichen vorsichtig: Beim Schreiben der <literal>Schlüssel= Wert</literal> - Zeile
+          darf zwischen dem <literal>Schlüssel</literal> und dem <literal>=</literal> kein 
+          Leerzeichen stehen, danach dann ein Leerzeichen und dann der <literal>Wert</literal>.
+          Seien Sie zuletzt auch bei der Verwendung von Leerzeichen innerhalb ihres 
+          Kommandozeilenaufrufes vorsichtig. Sollten Verzeichnisangaben etwa Leerzeichen
+          (oder andere zu schützende Zeichen) enthalten, so umschließen Sie sie mit
+          zusätzlichen doppelten Anführungszeichen:</para>
+
+        <screen>
+C:\> sc create svn
+        binpath= "\"C:\program files\svn\bin\svnserve.exe\" --service -r C:\repos"
+        displayname= "Subversion Server"
+        depend= Tcpip
+        start= auto
+</screen>
+
+        <para>Beachten Sie bitte auch, dass das Wort <literal>binpath</literal>
+          etwas irreführend ist - sein Wert ist eine <emphasis>Kommandozeile</emphasis>
+          und nicht der Pfad zu einem Programm. Dies ist der Grund warum
+          Sie vorhandene Leerzeichen mit doppelten Anführungszeichen schützen müssen.</para>
+
+        <para>Ist der Dienst erstmal eingerichtet, können Sie ihn mit Hilfe
+          von grafischen Programmen (etwa der Microsoft Management Console)
+          stoppen, starten oder seinen Status abfragen. Alternativ steht ihnen
+          auch die Kommandozeile zur Verfügung:</para>
+
+        <screen>
+C:\> net stop svn
+C:\> net start svn
+</screen>
+
+        <para>Der Dienst kann natürlich auch wieder deinstalliert werden indem
+          Sie den Befehl <userinput>sc delete svn</userinput> aufrufen.
+          Stoppen Sie den Dienst aber vorher!
+          Das Programm <command>SC.EXE</command> kennt noch etliche andere nützliche
+          Optionen und Parameter, ein Aufruf von <userinput>sc /?</userinput> verrät
+          ihnen welche das sind.</para>
+
+      </sect3>
+
+    </sect2>
+ 
 
     <!-- =============================================================== -->
     <sect2 id="svn.serverconfig.svnserve.auth">




More information about the svnbook-dev mailing list