Website-Suche

Der ultimative Leitfaden zum Einrichten von Apache Subversion SVN und TortoiseSVN für die Versionskontrolle


Wenn Ihre Arbeit den Umgang mit Dokumenten, Webseiten und anderen Dateitypen erfordert, die regelmäßig aktualisiert werden, möchten Sie möglicherweise einen Versionskontrollmechanismus verwenden, sofern Sie dies nicht bereits tun.

Dies ermöglicht Ihnen (und auch einer Gruppe potenzieller Mitarbeiter) unter anderem, an einer bestimmten Datei vorgenommene Änderungen zu verfolgen und auf eine frühere Version zurückzugreifen, wenn ein Problem auftritt oder ein Update nicht das erwartete Ergebnis erbracht hat .

Im Ökosystem der freien Software heißt das am weitesten verbreitete Versionskontrollsystem Apache Subversion (oder kurz SVN). Mit Hilfe von mod_dav_svn (Apaches Modul für Subversion) können Sie über HTTP und einen Webserver auf ein Subversion-Repository zugreifen.

Das heißt, krempeln wir die Ärmel hoch und installieren diese Tools auf einem RHEL/CentOS 7, Fedora 22-24, Debian 8/7 und Ubuntu 16.04-15.04-Server. Für unsere Tests verwenden wir einen CentOS 7-Server mit der IP 192.168.0.100.

Auf der Client-Seite (einem Windows 7-Computer) werden wir TortoiseSVN (das auf Apache Subversion basiert) als Schnittstelle zu SVN installieren und verwenden.

Unsere Testumgebung


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

Schritt 1 – SVN unter Linux installieren und konfigurieren

Wie bereits erwähnt, werden wir uns auf Apache verlassen, um über eine Webschnittstelle auf das SVN-Repository zuzugreifen. Wenn es noch nicht installiert ist, fügen Sie es unbedingt zur Liste der Pakete hinzu, wie unten gezeigt:


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

Während der Installation unter CentOS 7 wird eine Apache-Konfigurationsdatei für SVN als /etc/httpd/conf.modules.d/10-subversion.conf erstellt. Öffnen Sie die Datei und fügen Sie den folgenden Konfigurationsblock hinzu:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

Hinweis: Unter Debian/Ubuntu müssen Sie die folgenden Zeilen zu /etc/apache2/mods-enabled/dav_svn.conf hinzufügen -Datei.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Unter Debian/Ubuntu müssen Sie das Modul dav_svn Apache aktivieren:


a2enmod dav_svn

Ein paar Klarstellungen:

  1. Die SVNParentPath-Direktive gibt das Verzeichnis an, in dem unsere Repositorys später erstellt werden. Wenn dieses Verzeichnis nicht existiert (was höchstwahrscheinlich der Fall ist), erstellen Sie es mit:

    
    mkdir -p /websrv/svn
    

    Es ist wichtig zu beachten, dass sich dieses Verzeichnis NICHT im DocumentRoot eines virtuellen Hosts befinden darf, der derzeit von Apache bedient wird, oder diesen überlappen darf. Das ist ein Hingucker!

  2. Die AuthUserFile-Direktive gibt die Datei an, in der die Anmeldeinformationen eines gültigen Benutzers gespeichert werden. Wenn Sie jedem den Zugriff auf SVN ohne Authentifizierung ermöglichen möchten, entfernen Sie die letzten vier Zeilen im Standortblock. Wenn dies der Fall ist, überspringen Sie Schritt 2 und fahren Sie direkt mit Schritt 3 fort.
  3. Auch wenn Sie versucht sein könnten, Apache neu zu starten, um diese jüngsten Änderungen zu übernehmen, tun Sie dies noch nicht, da wir noch die Authentifizierungsdatei mit gültigen Benutzern für SVN und das Repository selbst erstellen müssen.

Schritt 2 – Zugelassene Benutzer für den Zugriff auf SVN hinzufügen

Wir werden nun htpasswd verwenden, um ein Passwort für Konten zu erstellen, die auf SVN zugreifen dürfen. Nur für den ersten Benutzer benötigen wir die Option -c.

Zulässige Konten und bcrypt-verschlüsselte Passwörter (-B) werden in /etc/httpd/subversion-auth in Schlüssel-Wert-Paaren gespeichert. Beachten Sie, dass die von htpasswd verwendete Standard-MD5- oder SHA-Verschlüsselung nach heutigen Maßstäben als unsicher gilt.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

Vergessen Sie nicht, den richtigen Besitz und die richtigen Berechtigungen für die Authentifizierungsdatei festzulegen:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

Schritt 3 – Sicherheit hinzufügen und SVN-Repository erstellen

Da Sie über eine Webschnittstelle auf SVN zugreifen, müssen Sie HTTP- (und optional HTTPS)-Verkehr durch Ihre Firewall zulassen.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

Durch das Neuladen der Firewall-Konfiguration mit --reload werden die permanenten Einstellungen sofort wirksam.

Erstellen Sie ein erstes SVN-Repository mit dem Namen tecmint:


svnadmin create /websrv/svn/tecmint

Ändern Sie den Eigentümer und Gruppeneigentümer rekursiv in Apache:


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

Abschließend müssen Sie den Sicherheitskontext von /websrv/svn/tecmint ändern (beachten Sie, dass Sie diesen Schritt wiederholen müssen, wenn Sie später weitere Repositorys erstellen möchten):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

Hinweis: Die letzten beiden Befehle gelten möglicherweise nicht, wenn Sie SVN auf einem VPS mit deaktiviertem SELinux installieren.

Empfohlene Lektüre: Erfahren Sie, wie Sie SELinux unter Linux vorübergehend oder dauerhaft deaktivieren

Starten Sie Apache neu und überprüfen Sie, ob das Repository verfügbar ist.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

Starten Sie dann einen Webbrowser und verweisen Sie auf http://192.168.0.100/svn/tecmint. Nach Eingabe der Anmeldeinformationen für den gültigen Benutzer, den wir in Schritt 1 erstellt haben, sollte die Ausgabe etwa so aussehen:

Zu diesem Zeitpunkt haben wir unserem Repository noch keinen Code hinzugefügt. Aber das werden wir gleich erledigen.

Schritt 4 – Installieren Sie TortoiseSVN im Windows 7-Client

Wie wir in der Einleitung erwähnt haben, ist TortoiseSVN eine benutzerfreundliche Schnittstelle zu Apache Subversion. Es handelt sich um freie Software, die unter der GPL lizenziert ist und von https://tortoisesvn.net/downloads.html heruntergeladen werden kann.

Wählen Sie die Architektur (32 oder 64-Bit), die Ihrem Computer entspricht, und installieren Sie das Programm, bevor Sie fortfahren.

Schritt 5 – SVN-Repository auf dem Client-Rechner einrichten

In diesem Schritt verwenden wir einen Ordner namens webapp innerhalb von Dokumente. Dieser Ordner enthält eine HTML-Datei und zwei Ordner namens „scripts“ und „styles“ mit einer Javascript- und einer CSS-Datei (script.js bzw. styles.css), die wir verwenden möchten Zur Versionskontrolle hinzufügen.

Klicken Sie mit der rechten Maustaste auf webapp und wählen Sie SVN Checkout. Dadurch wird eine lokale Kopie des Remote-Repositorys erstellt (das derzeit leer ist) und der Ordner für die Versionskontrolle initialisiert:

Geben Sie in der URL des Repositorys http://192.168.0.100/svn/tecmint ein und stellen Sie sicher, dass das lokale Checkout-Verzeichnis dasselbe bleibt. Klicken Sie dann auf OK:

Geben Sie den Benutzernamen und das Passwort ein (siehe Schritt 2) und klicken Sie auf OK:

Sie werden gefragt, ob Sie in ein nicht leeres Verzeichnis auschecken möchten. Bestätigen, um mit dem Bezahlen fortzufahren. Sobald der Vorgang abgeschlossen ist, wird neben dem Ordnernamen ein grünes Häkchen angezeigt:

Schritt 6 – Änderungen übernehmen und Dateien im Remote-SVN-Repository bereitstellen

Klicken Sie erneut mit der rechten Maustaste auf webapp und wählen Sie dieses Mal Commit. Schreiben Sie als Nächstes einen beschreibenden Kommentar, um diesen Commit später zu identifizieren, und überprüfen Sie die Dateien und Ordner, die Sie im Repository bereitstellen möchten. Klicken Sie abschließend auf OK:

Abhängig von der Größe der Dateien sollte der Commit nicht länger als eine Minute dauern. Wenn es fertig ist, werden Sie sehen, dass wir uns jetzt bei Revision 1 befinden, was mit der Version und den Dateien übereinstimmt, die in der Weboberfläche aufgeführt sind:

Wenn mehrere Personen an denselben Dateien arbeiten, sollten Sie Ihre lokale Kopie aktualisieren, um die neueste Version für die Bearbeitung zur Verfügung zu haben. Sie können dies tun, indem Sie mit der rechten Maustaste auf webapp klicken und im Kontextmenü Aktualisieren auswählen.

Herzlichen Glückwunsch! Sie haben erfolgreich einen SVN-Server eingerichtet und ein einfaches Projekt unter Versionskontrolle übergeben/aktualisiert.

Zusammenfassung

In diesem Artikel haben wir erklärt, wie man einen Apache Subversion-Repository-Server auf einem CentOS 7-Server installiert und konfiguriert und wie man mit TortoiseSVN< Änderungen an diesem Repository festschreibt.

Bitte beachten Sie, dass es zu SVN und TortoiseSVN viel mehr gibt, als wir hier ausreichend behandeln können (insbesondere, wie Sie zu früheren Revisionen zurückkehren können), daher sollten Sie sich am besten an die offizielle Seite wenden docs (SVN und TortoiseSVN) für weitere Informationen und Konfigurationsfälle.

Zögern Sie wie immer nicht, uns zu kontaktieren, wenn Sie Fragen haben! Nutzen Sie gerne das Kommentarformular unten, um uns jederzeit zu erreichen.