This is a bit old. From 2008 to be exact. But, I am putting it out there for reference anyway.
1. Install packages:
sudo apt-get install subversion libapache2-svn libapache-mod-dav apache2
Note: libapache-mod-dav is included in libapache2.2-common, so it may be unavailable or you do not need it.
2. Enable SSL:
sudo a2enmod ssl
check the ports.conf file, if ssl is already enabled we do not need to do the following:
sudo sh -c “echo ‘Listen 443’ >> /etc/apache2/ports.conf”
3. Generate Certificate:
Ubuntu < Feisty:
sudo apache2-ssl-certificate
Use the server name to be used for access the web server.
Ubuntu >= Feisty:
sudo apt-get install ssl-cert
sudo mkdir /etc/apache2/ssl
sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
4. Create Virtual Host:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/$SITENAME
sudo vim /etc/apache2/sites-available/$SITENAME
change:
NameVirtualHost *:443
<VirtualHost *:443>
add:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
5. Enable the site:
sudo a2ensite $SITENAME
sudo /etc/init.d/apache2 restart
A warning that complaints about failure of server name determination can be fixed by adding ServerName $SERVERNAME to the main Apache config /etc/apache2/apache2.conf
6. Adding repository(ies):
The following setup assumes we want to host multiple repositories.
$REPOS is “nbty” currently
sudo mkdir /var/svn/repositories
sudo svnadmin create /var/svn/repositories/$REPOS
sudo chown -R www-data:www-data /var/svn/repositories/$REPOS
sudo chmod -R g+ws /var/svn/$REPOS
7. Adding Basic Authentication:
$AUTH_USER is svn with password mypassword
sudo htpasswd -c -m /etc/apache2/dav_svn.passwd $AUTH_USER
8. Enable and configure WebDAV and SVN:
Add to /etc/apache2/mods-available/dav_svn.conf
DAV svn
SVNParentPath /var/svn/repositories
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
and for non-anonymous access comment out:
#<LimitExcept GET PROPFIND OPTIONS REPORT>
#</LimitExcept>
(optionally the same configuration can be set for particular virtual host only, i.e. /etc/apache2/sites-available/$SITENAME)
$SITENAME is svn (ssl on svn01 and svn02)
Add to $SITENAME in /etc/apache2/sites-available:
# Specially log any Subversion operations.
CustomLog /var/log/apache2/svn.log “%t %u %{SVN-ACTION}e” env=SVN-ACTION
<Location /svn/company>
DAV svn
SVNPath /var/svn/repositories/company
SVNReposName “Companies Main Subversion Repository”
</Location>
9. Finalization:
sudo /etc/init.d/apache2 restart
Testing:
$REPOS = company
Web access:
lynx https://svn01/svn/$REPOS exposes the repository.
lynx http://localhost/svn/$REPOS says: eat my shorts , i.e. 403-forbidden.
Now the sync:
- cd /var
- sudo mkdir svn
- sudo mkdir svn/repositories
- sudo svnadmin create /var/svn/repositories/company
- sudo adduser svn
- yourpassword is pwd
- sudo vipw
- change svn line from /bin/bash to /bin/false….we don’t want this user to log in to shell
Need to
An initial import:
svn import –username $AUTH_USER $A_FILE https://localhost/svn/$REPOS/testdir -m “Testing”
… and check-out:
svn co –username $AUTH_USER https://localhost/svn/$REPOS
To add a new repository just repeat the step 6 (without making the root directory of course).
If you wish to configure a single repository only, instead of point 6:
sudo svnadmin create /var/svn
sudo chown -R www-data:www-data /var/svn
sudo chmod -R g+ws /var/svn
and in /etc/apache2/mods-available/dav_svn.conf (step 8) use this instead of SVNParentPath:
SVNPath /var/svn
sudo svnsync initialize file:///var/svn/repositories/nbty https://svn01/svn/company –username svn –password yourpassword
sudo svnsync synchronize file:///var/svn/repositories/company –username svn –password yourpassword