Apache Subversion oder SVN ist eine von der Apache Software Foundation entwickelte Open-Source-Versionierungs- und Revisionskontrollsoftware. Es wird verwendet, um die aktuellen und historischen Versionen von Quellcode, Dokumenten und Webseiten zu verwalten.
Subversion wird von vielen Softwareentwicklern und Open-Source-Projekten wie Apache Software Foundation, FreeBSD, GCC und SourceForge verwendet.
In diesem Artikel zeigen wir Ihnen, wie Sie Apache Subversion auf dem neuesten CentOS 7-Server einrichten. Wir installieren und konfigurieren die svn-Software mit Apache als Webserver, sichern sie mit Let's encrypt und aktivieren "Basic Authentication" für Benutzer.
Voraussetzungen
- CentOS 7-Server
- Root-Rechte
Was wir tun werden
- Installieren Sie Apache Httpd auf CentOS 7
- Subversion installieren
- Konfigurieren Sie das Subversion-Repository
- Generieren Sie SSL Letsencrypt für CentOS Apache Httpd
- Konfigurieren Sie den virtuellen Subversion-Host auf Apache Httpd
- Testen
Schritt 1 – Installieren Sie Apache Httpd auf CentOS 7
Der erste Schritt in dieser Anleitung besteht darin, die Apache httpd-Pakete auf Ihrem System zu installieren.
Installieren Sie Apache httpd mit dem folgenden yum-Befehl.
yum -y install httpd httpd-tools mod_ssl
Und nachdem die Installation abgeschlossen ist, müssen wir den HTTP-Dienst zu den Firewalld-Dienstlisten hinzufügen.
Führen Sie die folgenden Firewall-cmd-Befehle aus.
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
Starten Sie nun den httpd-Dienst und fügen Sie ihn hinzu, damit er beim Booten gestartet wird.
systemctl start httpd
systemctl enable httpd
Der Apache httpd läuft auf dem Server.
Schritt 2 – Apache Subversion (SVN) installieren
In diesem Tutorial installieren wir die Subversion-Pakete aus dem Basis-Repository von CentOS 7.
Installieren Sie Subversion und alle erforderlichen Pakete mit dem untenstehenden yum-Befehl.
yum -y install subversion subversion-tools mod_dav_svn
Warten Sie, bis alle Pakete installiert sind, und überprüfen Sie dann die SVN-Version.
svn --version
Schritt 3 - Konfigurieren Sie das Subversion (SVN)-Repository
Nach der Subversion-Installation konfigurieren wir das Master-Subversion-Repository-Verzeichnis. Wir werden ein neues 'svn'-Verzeichnis erstellen, in dem der gesamte Quellcode und die Repositories gespeichert werden.
Erstellen Sie ein neues '/svn' Hauptverzeichnis.
mkdir /svn
Und erstellen Sie ein neues Beispiel-Repository namens „hakase-project“ mit dem untenstehenden svnadmin-Befehl.
svnadmin create /svn/hakase-project
Ändern Sie nun den Eigentümer des Verzeichnisses „/svn/hakase-project“ auf den Benutzer und die Gruppe „apache“.
sudo chown -R apache:apache /svn/hakase-project
Und das SVN-Repository wurde erstellt.
Hinweis:
Führen Sie zusätzlich für SELinux-Benutzer die folgenden Befehle aus.
chcon -R -t httpd_sys_content_t /svn/hakase-project
chcon -R -t httpd_sys_rw_content_t /svn/hakase-project
Schritt 4 – Let’s encrypt SSL-Zertifikat für Apache generieren
In diesem Tutorial konfigurieren wir den svn-Server so, dass er die HTTPS-Verbindung mit einer Domain namens ‚svn.hakase-labs.io‘ verwendet. Wir verwenden ein kostenloses SSL-Zertifikat von Let's encrypt, das mit dem certbot-Tool generiert werden kann.
Installieren Sie certbot auf dem CentOS-Server mit dem folgenden yum-Befehl.
yum -y install certbot
Wenn die Installation abgeschlossen ist, müssen wir den HTTPS-Dienst zur Liste der Firewalld-Dienste hinzufügen.
Führen Sie die folgenden Firewalld-Befehle aus.
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --reload
Stoppen Sie jetzt den httpd-Dienst, damit wir das SSL-Letsencrypt mit dem temporären „eigenständigen“ Webserver generieren können.
systemctl stop httpd
Generieren Sie das Letsencrypt-SSL-Zertifikat für den Domänennamen „svn.hakase-labs.io“ mit dem Befehl certbot unten.
certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d svn.hakase-labs.io
Jetzt erhalten Sie die Zertifikatsdateien im Verzeichnis ‚/etc/letsencrypt/live‘.
Schritt 5 – Virtuellen Subversion-Host auf Apache Httpd konfigurieren
In diesem Schritt erstellen wir eine neue Apache-httpd-Konfiguration für den svn-Zugriff. Wir werden das SVN-Repository mit einem Domänennamen „svn.hakase-labs.io“ konfigurieren und es wird nur für registrierte Benutzer mit der HTTP-Basisauthentifizierung zugänglich sein.
Gehen Sie in das Verzeichnis ‚/etc/httpd/conf.d‘ und erstellen Sie eine neue SVN-Konfiguration ‚svn.conf‘.
cd /etc/httpd/conf.d/
vim svn.conf
Konfigurationen unten einfügen.
<VirtualHost svn.hakase-labs.io:80> ServerName svn.hakase-labs.io DocumentRoot /var/www/html Redirect permanent / https://svn.hakase-labs.io </VirtualHost> <VirtualHost svn.hakase-labs.io:443> DocumentRoot /var/www/html ServerName svn.hakase-labs.io SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/letsencrypt/live/svn.hakase-labs.io/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/svn.hakase-labs.io/privkey.pem ErrorLog logs/svn_error_log TransferLog logs/svn_access_log LogLevel warn <location /repo> DAV svn SVNParentPath /svn/ AuthType Basic AuthName "Authorization Realm" AuthUserFile /etc/subversion/svn.users Require valid-user </location> <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
Speichern Sie die Datei und verlassen Sie den Editor.
Als Nächstes müssen wir eine neue Liste von Benutzern erstellen, die Dateien anzeigen und in das Repository übertragen können.
Erstellen Sie mit dem untenstehenden htpasswd-Befehl einen neuen Benutzer namens „hakase“.
sudo htpasswd -cm /etc/subversion/svn.users hakase
Starten Sie nun die Apache httpd-Dienste neu.
systemctl restart httpd
Der 'hakase'-Benutzer hat jetzt Zugriff auf den Quellcode zum 'hakase-project'-Repository.
Schritt 6 – Testen
Repository anzeigen
Öffnen Sie Ihren Webbrowser und geben Sie die Server-URL ein, meine ist diese: https://svn.hakase-labs.io/repo/hakase-project/
Und Ihnen wird die Eingabeaufforderung für die grundlegende Benutzerauthentifizierung angezeigt.
Melden Sie sich mit dem Benutzer und Passwort „hakase“ an, und das Folgende ist das Ergebnis.
Importieren Sie ein Projekt in das Repository
Jetzt werden wir die SVN-Beispielprojektvorlagen in das Repository „hakase-project“ importieren.
Erstellen Sie ein neues svn-templates-Projektverzeichnis.
mkdir -p ~/svn-templates/{trunk,branches,tags}
Fügen Sie alle Vorlagenverzeichnisse zum ‚hakase-project‘-Repository hinzu, indem Sie den folgenden svn-Befehl verwenden.
svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase
Nun werden Sie nach folgenden Dingen gefragt.
- Geben Sie 'p' ein, um das Letsencrypt-Zertifikat dauerhaft hinzuzufügen.
- Geben Sie den 'hakase'-Benutzer und das Passwort ein.
- Und geben Sie „Ja“ ein, um das Speichern des unverschlüsselten Passworts zu bestätigen.
Überprüfen Sie das 'hakase-Projekt' im Webbrowser, und Sie erhalten alle Vorlagenverzeichnisse darin.
Klonen Sie das Repository
Nachdem wir das Verzeichnis svn templates erstellt und hochgeladen haben, wollen wir das Repository klonen oder in die lokale Umgebung kopieren.
Erstellen Sie einen neuen normalen Benutzer und melden Sie sich beim Benutzer an.
useradd -m -s /bin/bash misaka
su - misaka
Klonen Sie das Repository „hakase-project“ in das lokale Verzeichnis mit dem Namen „myproject“ als „hakase“-Benutzer.
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
Und Sie werden weiter unten noch einmal nach diesen Dingen gefragt.
- Geben Sie 'p' ein, um das Letsencrypt-Zertifikat dauerhaft hinzuzufügen.
- Geben Sie den 'hakase'-Benutzer und das Passwort ein.
- Und geben Sie „Ja“ ein, um das Speichern des unverschlüsselten Passworts zu bestätigen.
Und wenn es fertig ist, überprüfen Sie das neue 'myproject'-Verzeichnis und Sie erhalten alle svn-Vorlagen.
tree ~/myproject
Commit The Code or Documents
Wechseln Sie in das Verzeichnis „myproject“.
cd myproject/
Erstellen Sie einige Dateien im 'trunk'-Verzeichnis.
echo 'this is my repo' > trunk/test-hakase.txt
echo 'this is my repo01' > trunk/test-hakase01.txt
echo 'this is my repo02' > trunk/test-hakase02.txt
Hinzufügen und übernehmen.
svn add trunk/* --username hakase
svn commit -m 'new file added' --username hakase
Überprüfen Sie das Repository im Webbrowser und Sie werden sehen, dass alle Dateien zum Repository hinzugefügt wurden.
Die Installation und Konfiguration von Apache Subversion mit HTTPS Letsencrypt auf CentOS 7 wurde erfolgreich abgeschlossen.