Het aanmaken van een subdomein (svn.davidvandertuijn.nl) is vrij eenvoudig in het Plesk Control Panel:
yum install subversion
Het WebDAV-protocol maakt het mogelijk om op afstand documenten aan te maken, te veranderen en te verplaatsen op de server.
yum install mod_dav_svn
# nano /etc/httpd/conf/httpd.conf
Controleer of de volgende modules zijn toegevoegd:
LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
# nano /var/www/vhosts/svn.davidvandertuijn.nl/conf/vhost.conf
<Location /> DAV svn SVNParentPath /var/www/vhosts/davidvandertuijn.nl/subdomains/svn AuthzSVNAccessFile /var/www/vhosts/svn.davidvandertuijn.nl/svn-acl-conf <LimitExcept GET PROPFIND OPTIONS REPORT> SSLRequireSSL AuthType Basic AuthName "Subversion" AuthUserFile "/var/www/vhosts/svn.davidvandertuijn.nl/.htpasswd" Require valid-user </LimitExcept> </Location>
Opmerking:
SVNPath: Een repository.
SVNParentPath : Meerdere repositories.
Configuratie toepassen:
# /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=svn.davidvandertuijn.nl
Herstart de webserver:
# service httpd restart
Creer een .htpasswd bestand:
# htpasswd -cm /var/www/vhosts/svn.davidvandertuijn.nl/.htpasswd davidvandertuijn
# nano /var/www/vhosts/svn.davidvandertuijn.nl/svn-acl-conf
Een gebruiker toevoegen:
[reponame:repopath] user = access
Standaard heeft een gebruiker geen toegang, access kan zijn lezen (r) of lezen en schrijven (rw).
[test:/] davidvandertuijn = r
Om voor alle gebruikers lezen privileges te geven voor elke repository:
[/] * = r
Een groep toevoegen:
[groups] beheerder = davidvandertuijn[test:/] @beheerder = rw
# svnadmin create /var/www/vhosts/davidvandertuijn.nl/subdomains/svn/test
chown -R apache.apache test
Authenticatie / Authorizatie toevoegen:
# nano /var/www/vhosts/davidvandertuijn.nl/subdomains/svn/test/conf/svnserve.conf
anon-access = none auth-access = write password-db = passwd authz-db = authz
Je zal de bestanden passwd en authz moeten wijzigen, dit wijst zich vanzelf.
Controleren of een HTTP verzoek wordt geweigerd:
Controleren of een HTTPS verzoek wordt geaccepteerd
Een zelfondertekend rootcertificaat kan niet worden gevalideerd maar dat is geen probleem, het belangrijkste is dat de data over SSL wordt verstuurd.
Controleren of de Authenticatie werkt.
Controleren of de Subversion Revision wordt getoond.
Indien er een Directory Index wordt getoond zou het kunnen dat de Virtual Host configuratie niet geaccepteerd wordt, mijn work-arround is om de deze te plaatsen in '/etc/httpd/conf.d/subversion.conf'.
# nano /var/www/vhosts/svn.davidvandertuijn.nl/conf/vhost.conf
<Directory /var/www/vhosts/davidvandertuijn.nl/subdomains/svn> DAV svn SVNParentPath /var/www/vhosts/davidvandertuijn.nl/subdomains/svn AuthzSVNAccessFile /var/www/vhosts/svn.davidvandertuijn.nl/svn-acl-conf <LimitExcept GET PROPFIND OPTIONS REPORT> SSLRequireSSL AuthType Basic AuthName "Subversion" AuthUserFile "/var/www/vhosts/svn.davidvandertuijn.nl/.htpasswd" Require valid-user </LimitExcept> </Directory>
Controleren of een Subversion project kan worden uitgechecked en ge-commit.
cd /var/www/vhosts/davidvandertuijn.nl/subdomains/devsvn checkout svn://svn.davidvandertuijn.nl/test
Checked out revision 0.
svn add index.php
A index.php
svn commit . -m "Dit is een test commit"
Adding index.php Transmitting file data . Committed revision 1.
Let op: Er is een verschil tussen het path /var/www/vhosts/davidvandertuijn.nl/subdomains/svn en /var/www/vhosts/svn.davidvandertuijn.nl
De authenticatie / autorisatie verloopt nog niet helemaal soepel, ik zal dit artikel daar later nog op bijwerken.
Meer informatie:
HowTos/Subversion - CentOS Wiki