GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So richten Sie einen SVN-Server unter CentOS ein

Dieses Tutorial erklärt, wie man einen SVN-Repository-Server unter CentOS einrichtet und verwendet. Bevor ich anfange, lassen Sie mich erklären, was eigentlich SVN darstellt und wofür es verwendet wird. SVN ist eigentlich eine Abkürzung für SubVersion, die vom Apache-Softwareentwickler erstellt wurde. Es ermöglicht Ihnen, Ihr eigenes Repository zu erstellen und zu pflegen, und gibt einem dedizierten Benutzer fein abgestufte Zugriffsrechte.

Es ist sehr effektiv, um die Versionierung von Dateien, Dokumenten oder Ordnern zu steuern. Es ist sehr nützlich für Gruppen oder Teams, die ihre eigenen Softwareprojekte starten möchten.

1. Vorbemerkung

Für dieses Tutorial verwende ich CentOS 6.4 in der 32-Bit-Version. Das Endergebnis zeigt Ihnen, wie ein dedizierter Client mit jeder Art von Betriebssystemplattform auf das SVN-Repository zugreifen kann.


2. SVN-Installation

Um mit einem frischen SVN-Server zu beginnen, müssen wir bestimmte Pakete installieren. Die zugehörigen Pakete sind Apache httpd, mod_dav_svn und Subversion. Für diesen Vorgang wird das HTTPD-Paket als Webserver-Dienst benötigt.

Da dieses Tutorial das CentOS-Betriebssystem verwendet, nehmen wir die Pakete aus dem Yum-Repository. Sie können andere Pakete wie nginx, lighttpd oder einen beliebigen bekannten Webserverdienst verwenden, um httpd zu ersetzen, wenn Sie möchten. Unten sind die Schritte:

ifconfig
[[email protected] ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:192.168.43.101 Bcast:192.168.43.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4640 errors:0 dropped:0 overruns:0 frame:0
TX packets:6845 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:444461 (434.0 KiB) TX bytes:549473 (536.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2125 errors:0 dropped:0 overruns:0 frame:0
TX packets:2125 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:186888 (182.5 KiB) TX bytes:186888 (182.5 KiB)
yum install -y httpd
[[email protected] ~]# yum install -y httpd
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.i686 0:2.2.15-26.0.1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
httpd i686 2.2.15-26.0.1.el6 OEL64 825 k
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 825 k
Installed size: 2.8 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : httpd-2.2.15-26.0.1.el6.i686 1/1
Verifying : httpd-2.2.15-26.0.1.el6.i686 1/1
Installed:
httpd.i686 0:2.2.15-26.0.1.el6
Complete!
yum install -y subversion
[[email protected] ~]# yum install -y subversion
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package subversion.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
subversion i686 1.6.11-7.el6 OEL64 2.2 M
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 2.2 M
Installed size: 11 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : subversion-1.6.11-7.el6.i686 1/1
Verifying : subversion-1.6.11-7.el6.i686 1/1
Installed:
subversion.i686 0:1.6.11-7.el6
Complete!
yum install -y mod_dav_svn
[[email protected] ~]# yum install -y mod_dav_svn
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_dav_svn.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
mod_dav_svn i686 1.6.11-7.el6 OEL64 79 k
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 79 k
Installed size: 161 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : mod_dav_svn-1.6.11-7.el6.i686 1/1
Verifying : mod_dav_svn-1.6.11-7.el6.i686 1/1
Installed:
mod_dav_svn.i686 0:1.6.11-7.el6
Complete!


3. SVN-Konfiguration

Großartig, jetzt ist der Installationsteil fertig. Als nächstes werden wir mit dem Konfigurationsteil fortfahren. Lassen Sie uns zunächst ein dediziertes Verzeichnis für die Verwendung des SVN-Repositorys erstellen. Dies ist ein optionaler Prozess, aber es ist eine bewährte Vorgehensweise bei der Implementierung für eine größere Gruppe. Unten sind die Schritte:

mkdir /data/svn

Jetzt erstellen wir unser erstes Repository-Verzeichnis, ich nenne es repo1 . Da ein Client später über Browser oder SVN-Client-Tools auf das Repository zugreifen kann, übertragen wir Apache den Besitz für das Verzeichnis, da er der Besitzer des Webserverdienstes ist. Unten sind die Schritte:

svnadmin create /data/svn/repo1
chown -R apache:apache /data/svn/repo1

Sobald Sie fertig sind, werden Sie feststellen, dass mehrere zugehörige Ordner und Dateien standardmäßig in unserem neuen Repository-Verzeichnis erstellt werden.

cd /data/svn/repo1
ls
[[email protected] repo1]# ls
conf db format hooks locks README.txt


Jetzt bearbeiten wir die Konfigurationsdatei, um sie unseren Anforderungen anzupassen. Zuerst werden wir die Konfigurationsdatei svnserver.conf bearbeiten, um die zugehörigen Privilegien zu akzeptieren, die wir dem gewährten Benutzer zuweisen werden. Unten sind die Schritte:

cd conf/
ls
[[email protected] conf]# ls
authz passwd svnserve.conf
vi svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

Erstellen Sie dann eine neue Datei namens passwd die eine Liste von Benutzern für das SVN-Repository enthält. Unten sind die Schritte:

htpasswd -c /data/svn/repo1/conf/passwd jay
[[email protected] conf]# htpasswd -c /data/svn/repo1/conf/passwd jay
New password:
Re-type new password:
Adding password for user jay
[[email protected] conf]# cat passwd
jay:14hCNCmBZY/qA

Fertig, wir haben erfolgreich einen Benutzer für die Verwendung des SVN-Repositorys erstellt. Lassen Sie uns 2 weitere Benutzer erstellen, um auf das SVN-Repository zuzugreifen. Unten sind die Schritte:

htpasswd /data/svn/repo1/conf/passwd fikri
[[email protected] conf]# htpasswd /data/svn/repo1/conf/passwd fikri
New password:
Re-type new password:
Adding password for user fikri
htpasswd /data/svn/repo1/conf/passwd farid
[[email protected] conf]# htpasswd /data/svn/repo1/conf/passwd farid
New password:
Re-type new password:
Adding password for user farid
[[email protected] conf]# cat passwd
jay:14hCNCmBZY/qA
fikri:/hlooqJMfYLkw
farid:P7Zvu6B3HyFGo


Fertig, jetzt sind 3 Benutzer für die Verwendung des SVN-Repository aufgelistet. Für diese Übung möchte ich zeigen, wie wir die Berechtigungen eines Nutzers einschränken können. Lassen Sie uns die Berechtigung für den Zugriff auf das repo1-Repository zuweisen. Dazu müssen wir die authz-Konfigurationsdatei bearbeiten. Unten sind die Schritte:

vi authz
[repo1:/]
farid = r
fikri = rw
* =

Basierend auf der obigen Konfiguration haben wir unterschiedliche Berechtigungen für die 3 Benutzer festgelegt, die wir zuvor erstellt haben. Wir haben dem Benutzer FARID die Berechtigung NUR LESEN zugewiesen, FIKRI die Berechtigung LESEN SCHREIBEN und JAY oder anderen keine Berechtigung. Bedeutet, dass ich Ihnen später beim Testen zeigen werde, dass Benutzer JAY keine Dateien im Repo1-Repository anzeigen kann.

Bearbeiten wir nun die Konfigurationsdatei des HTTPD-Dienstes.

vi /etc/httpd/conf/httpd.conf

Überprüfen Sie, ob die folgende Zeile vorhanden ist, um externe Konfigurationsdateien in die Datei httpd.conf aufzunehmen. Wenn es nicht existiert, fügen Sie es am Ende der Datei hinzu.

[.....]
Include conf.d/*.conf
[.....]

Als nächstes gehen wir in das Verzeichnis conf.d, um einige Änderungen in den zugehörigen Konfigurationsdateien vorzunehmen. Sie werden feststellen, dass es bereits eine Datei subversion.conf gibt. Bearbeiten Sie die Datei, um das Repository für die Anzeige im Browser verfügbar zu machen. Nachfolgend sind die Schritte aufgeführt:-

cd /etc/httpd/conf.d/
ls
[[email protected] conf.d]# ls
mod_dnssd.conf README subversion.conf welcome.conf
vi subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /repo1>
DAV svn
SVNPath /data/svn/repo1
Authtype Basic
AuthName "My Repository"
AuthzSVNAccessFile /data/svn/repo1/conf/authz
AuthUserFile /data/svn/repo1/conf/passwd
Require valid-user
</Location>

Die ersten beiden Zeilen laden das Apache SVN-Modul, die nächsten Zeilen definieren, dass die URL /repo1 auf unser erstelltes Repository verweist.

Wir legen auch fest, dass bestimmte Benutzer Lese-/Schreibrechte für bestimmte Elemente innerhalb des Repositorys haben, indem wir AuthzSVNAccessFile verwenden. Die Liste der Benutzer wird der Datei /data/svn/repo1/conf/passwd entnommen.

Starten Sie nun den HTTPD-Server neu, um die vorgenommenen Konfigurationsänderungen zu laden.

service httpd restart
[[email protected] conf.d]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]


4. SVN-Testphase

Lassen Sie uns prüfen, ob die von uns vorgenommene Konfiguration den Zweck erfüllt oder nicht. Für die Testphase verwende ich 2 verschiedene Client-Rechner. Ich werde Microsoft Windows und einen Linux CentOS 6.4-Desktop verwenden.

Zuerst gehe ich zum Linux CentOS 6.4-Computer und checke das Repository im lokalen System aus. Als Linux-Client müssen wir das Subversion-Paket installieren, um eine Verbindung zum SVN-Repository herzustellen.

yum install -y subversion 
[[email protected] ~]# yum install -y subversion 
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package subversion.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
subversion i686 1.6.11-7.el6 OEL64 2.2 M
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 2.2 M
Installed size: 11 M
Downloading Packages:
--------------------------------------------------------------------------------------------------------------
Total 70 MB/s | 2.2 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : subversion-1.6.11-7.el6.i686 1/2
Verifying : subversion-1.6.11-7.el6.i686 2/2
Installed:
subversion.i686 0:1.6.11-7.el6
Complete!

mkdir repo_client
svn co http://192.168.43.101/repo1 repo_client
[[email protected] ~]# mkdir repo_client
[[email protected] ~]# svn co http://192.168.43.101/repo1 repo_client
Authentication realm: <http://192.168.43.101:80> My Repository
Password for 'fikri':
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<http://192.168.43.101:80> My Repository
can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Checked out revision 0.
[[email protected] ~]# cd repo_client/
[[email protected] repo_client]# ls -a
. .. .svn

Exzellent! Wir haben es geschafft, das Repository von unserem SVN-Server mit dem Benutzer fikri auszuchecken. Um nun zu überprüfen, ob dieser Benutzer Lese- und Schreibrechte hat, erstellen wir einen Ordner im Repository-Verzeichnis.

cd repo_client/
svn mkdir first_dir

Und übertragen Sie dann die Änderung zurück in das Repository:

svn commit -m "My first folder"

Sie werden Folgendes sehen:

Committed revision 1.

Das bedeutet, dass unser Commit erfolgreich war.


Tolle Arbeit! Wir haben es geschafft, einen Ordner im Repository-Verzeichnis zu erstellen und zu übergeben.

Lassen Sie uns dies nun auf einem Microsoft Windows-Computer testen. Durchsuchen Sie die Repository-URL über den Firefox-Browser. Sie können jeden Ihrer bevorzugten Browser verwenden, um es zu testen. Sobald die URL http://192.168.43.101/repo1 in das Browserfeld eingegeben wurde, wird ein Autorisierungsfenster wie das folgende angezeigt:

Melden Sie sich mit dem Benutzer JAY an. Ich gehe davon aus, dass dieser Benutzer nicht auf die Seite zugreifen kann, da er kein Mitglied der privilegierten Gruppe ist.

Schön, jetzt machen wir einen letzten Test für dieses Tutorial. Lassen Sie uns den Microsoft Windows-Rechner als SVN-Client verwenden. Dazu müssen wir eine SVN-Client-Software installieren, für diese Fälle verwende ich TortoiseSVN . Sie können es hier herunterladen oder einen Ihrer vertrauten SVN-Clients verwenden.

Erstellen Sie nach der Installation einen neuen Ordner auf Ihrem Windows-Computer und nennen Sie ihn testSVN.


Klicken Sie dann mit der rechten Maustaste auf den Ordner, Sie werden feststellen, dass es jetzt Links für SVN CheckOut gibt (wenn Sie die Links nicht sehen, starten Sie Windows neu). Klicken Sie auf "SVN Checkout", um fortzufahren.

Nachdem Sie darauf geklickt haben, wird ein Pop-up-Fenster wie das folgende angezeigt. Geben Sie das SVN-Server-Repository unter dem URL-Feld ein und klicken Sie dann auf OK.

Es wird ein Popup-Fenster angezeigt, in dem Sie aufgefordert werden, einen Nutzernamen und ein Passwort zur Authentifizierung einzugeben. In diesen Fällen verwenden wir den Benutzer FARID, um fortzufahren.

Sobald dies erledigt ist, zeigt ein Popup-Fenster an, dass das Auschecken des SVN-Repositorys abgeschlossen ist. Daraus können wir schließen, dass der Benutzer FARID das Recht hat, aus dem Repository zu LESEN.

Sie werden feststellen, dass der Ordner, der zuvor vom Benutzer FIKRI erstellt wurde, in Ihrem testSVN-Verzeichnis vorhanden ist.

Um den Test zu beenden. Lassen Sie uns testen, ob der Benutzer FARID NUR-LESEN-Zugriff haben sollte. Gehen wir dazu in den Ordner FIRST_DIR und erstellen einen weiteren Ordner, ich nenne ihn SECOND_DIR

Klicken Sie nach der Erstellung mit der rechten Maustaste auf den Ordner und bewegen Sie den Mauszeiger auf TortoiseSVN. Sie werden sehen, dass dort mehrere Auswahlmöglichkeiten aufgeführt sind. Klicken Sie zum Fortfahren auf Hinzufügen Taste. Diese Schaltfläche fügt den von uns erstellten Ordner zum lokalen SVN-Repository hinzu.

Ein Popup-Fenster wie das folgende wird angezeigt, klicken Sie auf OK, um fortzufahren.

Anschließend wird eine Popup-Meldung wie unten angezeigt. Jetzt haben Sie erfolgreich einen Ordner in Ihrem Client-Repository erstellt.

Obwohl der Ordner erfolgreich erstellt und lokal hinzugefügt wurde, ist er noch nicht mit dem SVN-Server synchronisiert. Daher können andere Benutzer von anderen Computern den Ordner, den wir gerade erstellt haben, nicht sehen. Speichern und übergeben Sie den Ordner jetzt. Klicken Sie dazu mit der rechten Maustaste auf den Ordner und klicken Sie auf SVN Commit wie im Screenshot unten.


Ein Pop-up-Fenster wie unten wird angezeigt, um Sie aufzufordern, mehrere Details zu bestätigen. Geben Sie einen optionalen Kommentar ein und klicken Sie dann auf OK, um fortzufahren.

Ein Autorisierungsfeld wird angezeigt, um einen Benutzernamen für die Anmeldung anzufordern. Geben Sie als Benutzer FARID ein und fahren Sie fort.

Sobald Sie fertig sind, wird Ihnen ein Fehler angezeigt, der besagt, dass Sie die Änderungen nicht vornehmen dürfen. Das, was wir erwartet haben, da der Benutzer farid nur Leserechte hat.

Herzliche Glückwünsche! Jetzt haben wir unseren ersten SVN-Server eingerichtet und die richtigen Berechtigungen für bestimmte Benutzerbeschränkungen erfolgreich konfiguriert.


Cent OS
  1. So richten Sie einen SFTP-Server unter CentOS ein

  2. So richten Sie einen SysLog-Server unter CentOS 7 / RHEL 7 ein

  3. So richten Sie den NFS-Server unter CentOS 7 / RHEL 7 ein

  4. So richten Sie den SVN-Server unter CentOS, RHEL und Fedora ein

  5. So richten Sie die MySQL-Replikation unter CentOS ein

So richten Sie den Samba-Druckserver unter CentOS ein

So richten Sie den Zimbra-E-Mail-Server unter CentOS 7 ein

So richten Sie einen zentralen Sicherungsserver mit Amanda unter CentOS 7 ein

So richten Sie einen zentralisierten SysLog-Server unter CentOS 8 / RHEL 8 ein

Anleitung zum erstmaligen Einrichten des CentOS 7-Servers

So richten Sie HAProxy unter CentOS 8 ein