Apache Subversion instellen met HTTPS Letsencrypt op CentOS 7

Apache Subversion of SVN is open bron software voor versiebeheer en revisiebeheer, ontwikkeld door de Apache Software Foundation. Het wordt gebruikt om de huidige en historische versies van broncode, documenten en webpagina’s bij te houden.

Subversion wordt gebruikt door veel software ontwikkelaars en open bron projecten zoals Apache Software Foundation, FreeBSD, GCC en SourceForge.

In dit artikel laten we je zien hoe je Apache Subversion kunt instellen op de nieuwste CentOS 7 server. We installeren en configureren de svn software met Apache als webserver, beveiligen het met Let’s encrypt en activeren “Basic Authentication” voor gebruikers.

Vereisten

  • CentOS 7 server
  • Root rechten

Wat we zullen doen

  1. Installeer Apache Httpd op CentOS 7
  2. Subversion installeren
  3. De Subversion Repository configureren
  4. Genereer SSL Letsencrypt voor CentOS Apache Httpd
  5. Configureer Subversion Virtuele Host op Apache Httpd
  6. Testen van

Stap 1 – Installeer Apache Httpd op CentOS 7

De eerste stap in deze gids is het installeren van de Apache httpd pakketten op je systeem.

Installeer Apache httpd met het onderstaande yum commando.

yum -y install httpd httpd-tools mod_ssl

En nadat de installatie voltooid is, moeten we de HTTP dienst toevoegen aan de firewalld dienstenlijsten.

Voer onderstaande firewall-cmd commando’s uit.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

Start nu de httpd dienst en voeg toe dat die bij het opstarten gestart moet worden.

systemctl start httpd
systemctl enable httpd

De Apache httpd is up and running op de server.

Installeer en start Apache webserver

Stap 2 – Installeer Apache Subversion (SVN)

In deze handleiding installeren we de subversion pakketten uit de basis CentOS 7 repository.

Installeer Subversion en alle vereiste pakketten met het yum commando hieronder.

yum -y install subversion subversion-tools mod_dav_svn

Wacht tot alle pakketten geïnstalleerd zijn en controleer dan de svn versie.

svn --version

Installeer Apache Subversion

Stap 3 – Configureer de Subversion (SVN) Repository

Na de Subversion installatie configureren we de master subversion repository directory. We maken een nieuwe ‘svn’ map aan waarin alle broncode en repositories zullen worden opgeslagen.

Maak een nieuwe ‘/svn’ hoofdmap.

mkdir /svn

En maak een nieuwe voorbeeld repository met de naam ‘hakase-project’ met het onderstaande svnadmin commando.

svnadmin create /svn/hakase-project

Verander nu de eigenaar van de ‘/svn/hakase-project’ directory in de ‘apache’ gebruiker en groep.

sudo chown -R apache:apache /svn/hakase-project

En de svn repository is gemaakt.

SVN repository configureren

Opmerking:

Extra voor SELinux gebruikers, voer onderstaande commando’s uit.

chcon -R -t httpd_sys_content_t /svn/hakase-project
chcon -R -t httpd_sys_rw_content_t /svn/hakase-project

Stap 4 – Genereer Let’s encrypt SSL Certificaat voor Apache

In deze handleiding configureren we de svn server om de HTTPS verbinding te gebruiken met een domein genaamd ‘svn.hakase-labs.io’. We zullen een gratis Let’s encrypt SSL certificaat gebruiken dat met het certbot gereedschap kan worden gegenereerd.

Installeer certbot op de CentOS server met het onderstaande yum commando.

yum -y install certbot

Als de installatie voltooid is, moeten we de HTTPS dienst aan de firewalld dienstenlijst toevoegen.

Voer onderstaande firewalld commando’s uit.

firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --reload

Stop nu de httpd dienst, zodat we de SSL Letsencrypt kunnen genereren met de ‘standalone’ tijdelijke webserver.

systemctl stop httpd

Genereer LE SSL cert

Genereer het Letsencrypt SSL Cert voor de domeinnaam ‘svn.hakase-labs.io’ met het onderstaande certbot commando.

certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d svn.hakase-labs.io

Nu krijg je de certificaat bestanden in de ‘/etc/letsencrypt/live’ directory.

Gebruik certbot software

Stap 5 – Configureer Subversion Virtuele Host op Apache Httpd

In deze stap maken we een nieuwe Apache httpd configuratie voor de svn toegang. We zullen de svn repository configureren met een domeinnaam ‘svn.hakase-labs.io’, en hij zal alleen toegankelijk zijn voor de geregistreerde gebruikers die de HTTP basic auth gebruiken.

Ga naar de ‘/etc/httpd/conf.d’ directory en maak een nieuwe svn configuratie ‘svn.conf’.

cd /etc/httpd/conf.d/
vim svn.conf

Plak de configuraties hieronder.

<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>

Bewaar het bestand en sluit de editor af.

Nu moeten we een nieuwe lijst van gebruikers aanmaken die bestanden in het archief kunnen bekijken en vastleggen.

Maak een nieuwe gebruiker aan met de naam ‘hakase’ met het onderstaande htpasswd commando.

sudo htpasswd -cm /etc/subversion/svn.users hakase

Herstart nu de Apache httpd diensten.

systemctl restart httpd

De ‘hakase’ gebruiker heeft nu toegang om de broncode in het ‘hakase-project’ depot te bekijken en vast te leggen.

Configureer svn.conf bestand

Stap 6 – Testen

Repository bekijken

Open je web browser en typ de URL van de server in, de mijne is deze: https://svn.hakase-labs.io/repo/hakase-project/

En je krijgt de basis gebruikersauthenticatie prompt te zien.

Meld je aan bij web-svn

Log in met de ‘hakase’ gebruiker en wachtwoord, en het volgende is het resultaat.

SVN Repository in web browser

Importeer een Project naar de Repository

Nu zullen we de svn voorbeeld project sjablonen importeren in het ‘hakase-project’ depot.

Maak een nieuwe svn-templates project map.

mkdir -p ~/svn-templates/{trunk,branches,tags}

Voeg alle sjablonen map toe aan de ‘hakase-project’ repository met het onderstaande svn commando.

svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase

Nu wordt je het volgende gevraagd.

  • Typ ‘p’ om het Letsencrypt certificaat permanent toe te voegen.
  • Typ de ‘hakase’ gebruiker en wachtwoord.
  • En type ‘yes’ om te bevestigen over het bewaren van het onversleutelde wachtwoord.

Importeer een Project naar de Repository

Bekijk het ‘hakase-project’ vanuit de web browser, en je krijgt er alle sjablonen-map op.

Project getoond in web browser

Kloon de Repository

Na het aanmaken en uploaden van de svn sjablonen map, willen we de repository klonen of kopiëren naar de lokale omgeving.

Maak een nieuwe gewone gebruiker aan en log in op de gebruiker.

useradd -m -s /bin/bash misaka
su - misaka

Kloon de ‘hakase-project’ repository de lokale map met de naam ‘myproject’ als ‘hakase’ gebruiker.

svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase

En je wordt opnieuw gevraagd naar die dingen hieronder.

  • Type ‘p’ om het Letsencrypt certificaat permanent toe te voegen.
  • Typ de ‘hakase’ gebruiker en het wachtwoord.
  • En type ‘yes’ om te bevestigen over het bewaren van het onversleutelde wachtwoord.

Kloon SVN repository

En als dat klaar is, kijk dan in de nieuwe ‘myproject’ directory en je krijgt alle svn sjablonen te zien.

tree ~/myproject

Boomstructuur van het project

De code of documenten vastleggen

Ga naar de ‘myproject’ directory.

cd myproject/

Maak enkele bestanden aan op de ’trunk’ directory.

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

Voeg toe en commit.

svn add trunk/* --username hakase
svn commit -m 'new file added' --username hakase

Documenten naar svn vastleggen

Bekijk de repository vanuit de web browser, en je ziet dat alle bestanden aan de repository zijn toegevoegd.

Documenten in browser

De Apache Subversion installatie en configuratie met HTTPS Letsencrypt op CentOS 7 is met succes voltooid.

Referentie