{"id":197,"date":"2008-03-02T12:42:13","date_gmt":"2008-03-02T11:42:13","guid":{"rendered":"http:\/\/beetroot.de\/wordpress\/2008\/03\/02\/subversion-unter-suse-linux-10-apache2-und-plesk-installieren\/"},"modified":"2015-10-02T14:56:12","modified_gmt":"2015-10-02T13:56:12","slug":"subversion-unter-suse-linux-10-apache2-und-plesk-installieren","status":"publish","type":"post","link":"https:\/\/beetroot.de\/wordpress\/2008\/03\/02\/subversion-unter-suse-linux-10-apache2-und-plesk-installieren\/","title":{"rendered":"Subversion unter SUSE Linux 10, Apache2 und Plesk installieren"},"content":{"rendered":"<p>Ich habe heute beschlossen, einen Subversion-Server auf meinem VPS zu installieren, den ich bei Host Europe angemietet habe. Mein Server l\u00c3\u00a4uft unter SUSE Linux 10, Apache2 mit Plesk.<\/p>\n<p>[Update 2008-06-01: Plesk Version ist 8.3]<\/p>\n<p>Mein Ziel war, Subversion so zu installieren, dass es mit Plesk nicht ins Gehege kommt. Nach einiger Recherche habe ich auf verschiedenen Seiten und in Foren Informationen gefunden, die beschreiben, was ungef\u00c3\u00a4hr getan werden muss. Allerdings habe ich nirgends eine zusammenh\u00c3\u00a4ngende Anleitung gefunden, in der die komplette Einrichtung beschrieben ist.<\/p>\n<p>Bevor jetzt irgendjemand anf\u00c3\u00a4ngt und das nachmacht, was ich hier beschreibe ein wichtiger Hinweis:<\/p>\n<p>Ich habe keine Ahnung, ob das was ich hier beschreibe auf jedem System funktioniert. Bitte macht auf jeden Fall ein Backup, bevor Ihr anfangt und lest Euch im Zweifel die verlinkte <a href=\"#Dokumentation\">Dokumentation<\/a> durch. Pr\u00c3\u00bcft, ob die von mir verwendeten Pfade und Benutzer bei Euch Sinn geben.<\/p>\n<p>Vor allem macht mich nicht daf\u00c3\u00bcr verantwortlich, sollte etwas schief gehen&#8230;<\/p>\n<p>Ihr braucht auf jeden Fall die Root-Rechte f\u00c3\u00bcr Euren Server. Soweit nicht anders beschrieben, werden alle folgenden Schritte als Benutzer <em>root<\/em> ausgef\u00c3\u00bchrt.<\/p>\n<p>Ich gehe davon aus, dass Ihr auf Eurem lokalen Rechner schon einen Subversion-Client installiert habt.<\/p>\n<p>Schritte, die auf dem VPS ausgef\u00c3\u00bchrt werden m\u00c3\u00bcssen, sind mit<\/p>\n<p><tt>remote:~#<\/tt><\/p>\n<p>gekennzeichnet. Schritte, die Ihr auf Eurem lokalen Rechner ausf\u00c3\u00bchrt, sind mit<\/p>\n<p><tt>local:~#<\/tt><\/p>\n<p>gekennzeichnet.<\/p>\n<p>Hier eine Liste der Schritte, die f\u00c3\u00bcr die Installation notwendig sind:<br \/>\n<a name=\"toc\"><\/a><\/p>\n<ul>\n<li><a href=\"#schritt1\">1. Subversion und Subversion-Server installieren<\/a><\/li>\n<li><a href=\"#schritt2\">2. Subversion-Repository anlegen<\/a><\/li>\n<li><a href=\"#schritt3\">3. Den Subversion-Server konfigurieren<\/a><\/li>\n<li><a href=\"#schritt4\">4. Benutzer f\u00c3\u00bcr das Repository anlegen<\/a><\/li>\n<li><a href=\"#schritt5\">5. Der erste Zugriff auf den Server<\/a><\/li>\n<li><a href=\"#schritt6\">6. Ein Projekt importieren<\/a><\/li>\n<\/ul>\n<p>Dar\u00c3\u00bcber hinaus enth\u00c3\u00a4lt der Artikel noch folgende Informationen:<\/p>\n<ul>\n<li><a href=\"#schritt7\">Ich m\u00c3\u00b6chte noch einmal mit einem <em>frischen<\/em> Repository starten<\/a><\/li>\n<li><a href=\"#schritt8\">Unsch\u00c3\u00b6nheiten<\/a><\/li>\n<li><a href=\"#Dokumentation\">Weiterf\u00c3\u00bchrende Dokumentation<\/a><\/li>\n<\/ul>\n<p>Los geht&#8217;s!<br \/>\n<strong><a name=\"schritt1\"><\/a>1. Subversion und Subversion-Server installieren<\/strong><br \/>\nAls erstes m\u00c3\u00bcssen die Software-Pakete <em>subversion<\/em> und <em>subversion-server<\/em> installiert werden. Hierzu in ein Terminal wechseln und als <em>root<\/em>-Benutzer folgendes Kommando absetzen:<\/p>\n<p><tt>remote:~# rug install subversion subversion-server<\/tt><\/p>\n<p>Falls Subversion schon installiert sein sollte, kommt folgende Fehlermeldung:<\/p>\n<p><tt>ERROR: 'subversion' is not available, or is fully up-to-date.<\/tt><\/p>\n<p>Ihr k\u00c3\u00b6nnt pr\u00c3\u00bcfen, ob Subversion installiert ist, in dem Ihr folgendes Kommando abschickt:<\/p>\n<p><tt>remote:~# rug info subversion subversion-server<\/tt><\/p>\n<p>In der Ausgabe gibt es f\u00c3\u00bcr jedes der beiden Pakete einen Abschnitt. In beiden Abschnitten m\u00c3\u00bcssen die Texte <em>Installed: Yes<\/em> und <em>Status: up-to-date<\/em> vorkommen.<\/p>\n<p>Falls auf Eurem Server Subversion schon installiert war, kann das nat\u00c3\u00bcrlich bedeuten, dass die im Folgenden beschriebenen Schritte eventuell nicht mehr funktionieren.<\/p>\n<p><strong><a name=\"schritt2\"><\/a>2. Subversion-Repository anlegen<\/strong><\/p>\n<p>Nachdem uns nun die Software zur Verf\u00c3\u00bcgung steht, k\u00c3\u00b6nnen wir weiter machen. Damit wir unseren Subversion-Server testen k\u00c3\u00b6nnen, brauchen wir ein Repository. Als Speicherort f\u00c3\u00bcr das Repository habe ich mir <em>\/srv\/svn\/<\/em> ausgesucht. Das Repository habe ich einfach mal <em>repos<\/em> genannt.<\/p>\n<p>Das Anlegen des Repositories erfolgt ebenfalls im Terminal:<\/p>\n<p><tt>remote:~# svnadmin create \/srv\/svn\/repos<\/tt><\/p>\n<p>Damit der Apache das Repository lesen und beschreiben kann, m\u00c3\u00bcssen wir im die Rechte dazu geben:<\/p>\n<p><tt>remote:~# chown -R wwwrun:www \/srv\/svn\/repos<\/tt><\/p>\n<p><strong><a name=\"schritt3\"><\/a>3. Den Subversion-Server konfigurieren<\/strong><\/p>\n<p>Ich gehe im Folgenden davon aus, dass Ihr auf Eurem VPS eine Domain (im Beispiel <em>example.com<\/em>) liegen habt, \u00c3\u00bcber die der Zugriff auf Subversion erfolgen soll. F\u00c3\u00bcr den Zugriff auf die Repositories m\u00c3\u00b6chte ich die URL <em>http:\/\/example.com\/svn\/repos<\/em> nutzen.<\/p>\n<p>Wechselt in das Verzeichnis, in dem die Konfigurationsdateien f\u00c3\u00bcr Eure Domain liegen:<\/p>\n<p><tt>remote:~# cd \/srv\/www\/vhost\/example.com\/conf<\/tt><\/p>\n<p>In diesem Verzeichnis m\u00c3\u00bcsst Ihr die Datei <em>vhost.conf<\/em> bearbeiten. Falls die Datei noch nicht existiert, k\u00c3\u00b6nnt Ihr sie einfach anlegen.<\/p>\n<p>In diese Datei m\u00c3\u00bcsst Ihr folgende Zeilen kopieren (falls Ihr auf 64bit-Systemen lauft, m\u00c3\u00bcsst Ihr statt \/usr\/lib den Pfad \/usr\/lib64 nehmen):<\/p>\n<pre><tt>LoadModule dav_module \/usr\/lib\/apache2-prefork\/mod_dav.so\r\nLoadModule dav_svn_module \/usr\/lib\/apache2\/mod_dav_svn.so\r\n\r\n&lt;Location \/svn&gt;\r\n DAV svn\r\n SVNParentPath \/srv\/svn\r\n\r\n AuthType Basic\r\n AuthName \"Authorization Realm\"\r\n AuthUserFile \/srv\/svn\/user_access\/repos_passwdfile\r\n Require valid-user\r\n&lt;\/Location&gt;\r\n<\/tt><\/pre>\n<p>Damit die Konfiguration aus der <em>vhost<\/em>-Datei auch aktiv wird, muss die Konfiguration f\u00c3\u00bcr den Webserver neu geschrieben und der Webserver durchgestartet werden. Dies wird mit folgendem Kommando durchgef\u00c3\u00bchrt:<\/p>\n<p><tt>remote:~# \/usr\/local\/psa\/admin\/sbin\/websrvmng \u00e2\u02c6\u2019\u00e2\u02c6\u2019reconfigure-vhost \u00e2\u02c6\u2019\u00e2\u02c6\u2019vhost-name=example.com \u00e2\u02c6\u2019\u00e2\u02c6\u2019restart<\/tt><\/p>\n<p>[Update 2008-03-05: Sollte sp\u00c3\u00a4ter beim Aufruf der Repository-URL ein 404 auftreten, versucht es mal mit <tt>websrvmng -a -v<\/tt> und danach noch mal den reconfigure. Ich habe es nicht getestet, der Tipp stammt aus dem Kommentar von Micha (siehe unten)]<\/p>\n<p><strong><a name=\"schritt4\"><\/a>4. Benutzer f\u00c3\u00bcr das Repository anlegen<\/strong><br \/>\nDamit nicht jeder auf unser Repository zugreifen kann, habe ich einen Passwortschutz auf den Server gelegt. Die Benutzer und ihre Passworte werden in der Datei<\/p>\n<p><em>\/srv\/svn\/user_access\/repos_passwdfile<\/em><\/p>\n<p>gesucht. Um den ersten Benutzer <em>test<\/em> anzulegen verwendet Ihr folgenden Befehl:<\/p>\n<p><tt>remote:~# htpasswd2 -c \/srv\/svn\/user_access\/repos_passwdfile test<\/tt><\/p>\n<p>Ihr werdet nun nach dem Kennwort gefragt, das Ihr f\u00c3\u00bcr den Benutzer test verwenden wollt. Das Kennwort m\u00c3\u00bcsst Ihr danach noch einmal best\u00c3\u00a4tigen. Beim Anlegen weiterer Benutzer m\u00c3\u00bcsst Ihr den Schalter <em>-c<\/em> weglassen:<\/p>\n<p><tt>remote:~# htpasswd2 \/srv\/svn\/user_access\/repos_passwdfile noch_n_test<\/tt><\/p>\n<p><strong><a name=\"schritt5\"><\/a>5. Der erste Zugriff auf den Server<br \/>\n<\/strong><\/p>\n<p>Jetzt solltet Ihr schon in der Lage sein, auf Euer &#8211; noch leeres &#8211; Repository zuzugreifen. Ruft im Browser folgende URL auf:<\/p>\n<p>http:\/\/example.com\/svn\/repos<\/p>\n<p>Ihr werdet nach einem Benutzer und einem Kennwort gefragt. Hier gebt Ihr <em>test<\/em> und Euer Passwort an.<\/p>\n<p>Wenn Ihr alles richtig gemacht habt, m\u00c3\u00bcsstet Ihr Euer leeres Repository sehen.<\/p>\n<p><strong><a name=\"schritt6\"><\/a>6. Ein Projekt importieren<\/strong><br \/>\nWir machen ein kleines Test-Projekt, das wir in das Repository legen wollen. Dazu baut Ihr Euch auf Eurem lokalen Rechner folgenden Verzeichnissbaum auf (dies m\u00c3\u00bcsst Ihr nun nicht mehr als <em>root<\/em> machen):<\/p>\n<pre><tt>.\/test\/branches\/\r\n.\/test\/tags\/\r\n.\/test\/trunk\/\r\n.\/test\/trunk\/README\r\n<\/tt><\/pre>\n<p>In die Datei <em>README<\/em> k\u00c3\u00b6nnt Ihr irgendetwas x-beliebiges reinschreiben.<\/p>\n<p>Importiert das Test-Projekt von Eurem lokalen Rechner in das Repository:<\/p>\n<p><tt>local:~# svn import test http:\/\/example.com\/svn\/repos\/test<\/tt><\/p>\n<p>Wenn Ihr nun erneut \u00c3\u00bcber den Browser auf Euren Server schaut, seht Ihr Euer Test-Projekt mit den Unterverzeichnissen und der Datei README.<\/p>\n<p>Ab jetzt k\u00c3\u00b6nnt Ihr mit Eurem Repository spielen, testen, etc.<\/p>\n<p><strong><a name=\"schritt7\"><\/a>Ich m\u00c3\u00b6chte noch einmal mit einem <em>frischen<\/em> Repository starten<\/strong><br \/>\nWenn Ihr Euer Repository noch einmal frisch anlegen wollt, l\u00c3\u00b6scht einfach das Verzeichnis <em>\/srv\/svn\/repos<\/em> samt Inhalt und f\u00c3\u00bchrt danach den <a href=\"#schritt2\">Schritt 2<\/a> noch einmal aus.<\/p>\n<p><strong><a name=\"schritt8\"><\/a>Unsch\u00c3\u00b6nheiten<\/strong><br \/>\nEin kleines Problem hat die oben beschriebene Vorgehensweise: Da ich die <em>LoadModule<\/em>-Direktiven in die <em>vhost<\/em>-Datei geschrieben habe, l\u00c3\u00a4sst sich auf einem VPS nur genau ein Subversion-Server f\u00c3\u00bcr genau eine Domain betreiben. Wenn ein zweites Repository auf einer weiteren Domain genutzt werden soll, w\u00c3\u00bcrden die <em>LoadModule<\/em>-Direktiven Fehlermeldungen ausl\u00c3\u00b6sen.<\/p>\n<p>Es w\u00c3\u00a4re eventuell auch m\u00c3\u00b6glich die LoadModule-Direktiven in die Datei <em>\/etc\/apache2\/sysconfig.d\/loadmodule.conf<\/em> zu legen &#8211; ich wollte aber keine direkten Ver\u00c3\u00a4nderungen am Apachen vornehmen&#8230;<\/p>\n<p><strong><a name=\"Dokumentation\"><\/a>Weiterf\u00c3\u00bchrende Dokumentation<\/strong><br \/>\nUm tiefer in die Materie zu kommen, empfehle ich folgende Dokumente und Webseiten:<\/p>\n<dl>\n<dt>Subversion<\/dt>\n<dd><a href=\"http:\/\/subversion.tigris.org\">http:\/\/subversion.tigris.org<\/a> &#8211; die offizielle Homepage von Subversion<\/dd>\n<dd><a href=\"http:\/\/svnbook.red-bean.com\/\">Version Control with Subversion<\/a> &#8211; das Buch \u00c3\u00bcber Subversion<\/dd>\n<dt>Plesk<\/dt>\n<dd><a href=\"http:\/\/www.parallels.com\/en\/products\/plesk\/docs\/\">Dokumentation zu Plesk<\/a> &#8211; hier insbesondere der Administrator&#8217;s Guide<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe heute beschlossen, einen Subversion-Server auf meinem VPS zu installieren, den ich bei Host Europe angemietet habe. Mein Server l\u00c3\u00a4uft unter SUSE Linux 10, Apache2 mit Plesk. [Update 2008-06-01: Plesk Version ist 8.3] Mein Ziel war, Subversion so zu installieren, dass es mit Plesk nicht ins Gehege kommt. Nach einiger Recherche habe ich auf [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-197","post","type-post","status-publish","format-standard","hentry","category-rechnerisches"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9k0JZ-3b","_links":{"self":[{"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/posts\/197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/comments?post=197"}],"version-history":[{"count":1,"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/posts\/197\/revisions"}],"predecessor-version":[{"id":228,"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/posts\/197\/revisions\/228"}],"wp:attachment":[{"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/media?parent=197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/categories?post=197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beetroot.de\/wordpress\/wp-json\/wp\/v2\/tags?post=197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}