Apache Subversion oder SVN ist ein von der Apache Software Foundation entwickeltes Open-Source-Software-Versionierungs- und Revisionskontrollsystem. Es wird verwendet, um die aktuellen und historischen Versionen von Quellcode, Dokumenten und Webseiten zu verwalten.
Die Subversion oder SVN, die häufig für große Projekte und die Open-Source-Community wie Apache Software Foundation, FreeBSD, GCC, SourceForge usw. verwendet wird.
In diesem Artikel zeige ich Ihnen, wie Sie die Apache Subversion mit dem Ubuntu 18.04 LTS-Server einrichten. Wir werden die SVN-Software mit Apache als Webserver installieren und konfigurieren, die „Basisauthentifizierung“ für Benutzer aktivieren und den Zugriff durch die Verwendung von Letsencrypt SSL für den Repository-Zugriff sichern.
Und für diejenigen, die GIT bevorzugen, ist das Ubuntu 18.04 GIT-Tutorial hier.
Voraussetzungen
- Ubuntu 18.04
- Root-Rechte
Was wir tun werden
- Installieren Sie den Apache2-Webserver auf Ubuntu 18.04
- Installieren Sie Apache Subversion (SVN)
- Konfigurieren Sie das Subversion-Repository
- SSL Letsencrypt für Ubuntu Apache2 generieren
- Konfigurieren Sie den virtuellen Subversion-Host auf Apache2
- Testen
Schritt 1 – Installieren Sie den Apache2-Webserver auf Ubuntu 18.04 LTS
In diesem ersten Schritt installieren wir den Apache2-Webserver und fügen der ufw-Firewallkonfiguration neue Dienste ssh und HTTP hinzu.
Installieren Sie den Apache2-Webserver mit dem folgenden apt-Befehl.
sudo apt install apache2 apache2-utils -y
Fügen Sie nach Abschluss der Installation die SSH- und HTTP-Dienste zur ufw-Firewall-Konfiguration hinzu.
Führen Sie die folgenden ufw-Befehle aus.
ufw allow ssh
ufw allow http
Aktivieren Sie die Firewall.
ufw enable
Starten Sie nun den Apache2-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.
systemctl start apache2
systemctl enable apache2
Der Apache2-Webserver ist eingerichtet und läuft, und die SSH- und HTTP-Dienste wurden zur Liste der Firewall-Dienste hinzugefügt.
Schritt 2 – Apache Subversion (SVN) installieren
In diesem Tutorial werden wir die Subversion- und die svn-libapache-Pakete aus dem offiziellen Ubuntu-Repository installieren.
Installieren Sie Subversion mit dem folgenden apt-Befehl.
sudo apt install subversion subversion-tools libapache2-mod-svn -y
Prüfen Sie nun den svn-Befehl.
svn --version
Die Apache Subversion (SVN) wurde auf Ubuntu 18.04 Server installiert.
Schritt 3 - Konfigurieren Sie ein Subversion-Repository
Nach der Subversion-Installation konfigurieren wir das Master-Subversion-Repository-Verzeichnis. Wir werden ein neues 'svn'-Verzeichnis erstellen, das zum Speichern des gesamten Quellcodes und der Repositories verwendet wird.
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.
Schritt 4 - Letsencrypt-SSL-Zertifikat generieren
In diesem Tutorial werden wir den SVN-Server so konfigurieren, dass er die HTTPS-Verbindung mit einer Domain namens ‚svn.hakase-labs.io‘ verwendet. Wir verwenden das kostenlose SSL Letsencrypt, das mit dem certbot-Tool generiert werden kann.
Installieren Sie certbot auf dem Ubuntu-Server mit dem folgenden yum-Befehl.
sudo apt install certbot -y
Nachdem die Installation abgeschlossen ist, müssen wir den HTTPS-Dienst zu den ufw-Firewall-Dienstlisten hinzufügen.
Führen Sie die folgenden ufw-Befehle aus.
ufw allow https
ufw reload
Stoppen Sie jetzt den httpd-Dienst, damit wir das SSL-Letsencrypt mit dem temporären „eigenständigen“ Webserver generieren können.
systemctl stop apache2
Generieren Sie die SSL-Letsencrypt für den Domainnamen „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
Und nachdem es abgeschlossen ist, erhalten Sie die Zertifikatsdateien im Verzeichnis „/etc/letsencrypt/live“.
Schritt 5 – Virtuellen Subversion-Host auf Apache2 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.
Wechseln Sie in das Konfigurationsverzeichnis „/etc/apache2“.
cd /etc/apache2/
Erstellen Sie eine neue virtuelle Subversion-Hostkonfiguration 'svn.conf' im 'sites-available'-Verzeichnis.
cd sites-available/
vim svn.conf
Fügen Sie die Konfiguration unten ein.
<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 /var/log/apache2/svn_error_log TransferLog /var/log/apache2/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 /var/log/apache2/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
Speichern und beenden.
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 Befehl htpasswd einen neuen Benutzer namens „hakase“.
sudo htpasswd -cm /etc/subversion/svn.users hakase
Aktivieren Sie das SSL-Modul auf Apache und aktivieren Sie den virtuellen SVN-Host, indem Sie die folgenden Befehle ausführen.
sudo a2enmod ssl
sudo a2ensite svn
Starten Sie den Apache2-Dienst neu.
systemctl restart apache2
Die Konfiguration des virtuellen Hosts für Subversion wurde erstellt, und der „hakase“-Benutzer hat jetzt Zugang zum Anzeigen und Übertragen des Quellcodes in das „hakase-project“-Repository.
Schritt 6 – Testen
Repository anzeigen
Öffnen Sie Ihren Webbrowser und geben Sie die Server-URL ein, meine ist die untenstehende).
https://svn.hakase-labs.io/repo/hakase-project/
Und Ihnen wird die grundlegende Benutzerauthentifizierung angezeigt.
Melden Sie sich mit dem Benutzer und Passwort „hakase“ an, und Sie erhalten das Repository für leere Seiten wie unten beschrieben.
Projekt in das SVN-Repository importieren
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 das Template-Verzeichnis mit dem untenstehenden svn-Befehl zum ‚hakase-project‘-Repository hinzu.
svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase
Sie werden nach einigen Dingen gefragt, gehen Sie wie folgt vor.
- 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
Nach dem Erstellen und Hochladen des SVN-Vorlagenverzeichnisses werden wir versuchen, das Repository in die lokale Umgebung zu klonen.
Melden Sie sich als nicht-root/normaler Benutzer an.
useradd -m -s /bin/bash misaka
su - misaka
Klonen Sie das lokale Verzeichnis mit dem Namen „myproject“ als „hakase“-Benutzer in das „hakase-project“-Repository.
svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase
Überprüfen Sie das neue 'myproject'-Verzeichnis und Sie erhalten alle SVN-Vorlagen.
tree ~/myproject
Commit-Quellcode
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 auf Ubuntu 18.04 LTS Server wurde erfolgreich abgeschlossen.