Subversion
From KevinWiki
| Line 129: | Line 129: | ||
| ==Access via WebDAV protocol with SSL encryption (<code>https://</code>)== | ==Access via WebDAV protocol with SSL encryption (<code>https://</code>)== | ||
| - | + | *Enable SSL in your Apache server. | |
| - | + | *Create <code>/etc/apache2/sites-available/svn</code> file and add the following lines. | |
|   <VirtualHost *:443>                                         |   <VirtualHost *:443>                                         | ||
| - |       ServerAdmin  | + |       ServerAdmin webmaster@yoursite.com           | 
|       SSLEngine on |       SSLEngine on | ||
| Line 148: | Line 148: | ||
|   #        SVNParentPath /opt/svn/ |   #        SVNParentPath /opt/svn/ | ||
|           AuthType Basic |           AuthType Basic | ||
| - |           AuthName " | + |           AuthName "svn.yoursite.com subversion repository" | 
| - |           AuthUserFile /etc/subversion/. | + |           AuthUserFile /etc/subversion/.filename.htpasswd | 
|   #        <LimitExcept GET PROPFIND OPTIONS REPORT> |   #        <LimitExcept GET PROPFIND OPTIONS REPORT> | ||
|               Require valid-user |               Require valid-user | ||
| Line 157: | Line 157: | ||
| - | -Enable site and restart apache2 | + | *To use htdigest as an authentication method instead of htpasswd, modify the <code>/etc/apache2/sites-available/svn</code> file like: | 
| + |  <VirtualHost *:443>                                        | ||
| + |      ServerAdmin webmaster@yoursite.com | ||
| + | |||
| + |      SSLEngine on | ||
| + | |||
| + |      SSLOptions +StrictRequire | ||
| + | |||
| + |      SSLCertificateFile /etc/ssl/certs/server.crt | ||
| + |      SSLCertificateKeyFile /etc/ssl/private/server.key | ||
| + | |||
| + |      '''ServerName svn.yoursite.com''' | ||
| + | |||
| + |      <Location /myproject> | ||
| + |          DAV svn | ||
| + |          SVNPath /opt/svn/myproject | ||
| + |  #        SVNParentPath /opt/svn/ | ||
| + |          '''AuthType Digest''' | ||
| + |          '''AuthName mclicker''' | ||
| + |          '''AuthUserFile /etc/subversion/.filename.htdigest''' | ||
| + |  #        <LimitExcept GET PROPFIND OPTIONS REPORT> | ||
| + |              Require valid-user | ||
| + |  #        </LimitExcept> | ||
| + |      </Location> | ||
| + |  </VirtualHost> | ||
| + | |||
| + | *To create htdigest file, use the command below and type the password for the user. | ||
| + | <pre> | ||
| + | $ htdigest -c passwordfile realm username  | ||
| + | </pre> | ||
| + | *To add more users to the existing realm | ||
| + | <pre> | ||
| + | $ htdigest passwordfile realm another_username  | ||
| + | </pre> | ||
| + | |||
| + | |||
| + | *Enable site and restart apache2 | ||
|   $ sudo a2ensite svn   |   $ sudo a2ensite svn   | ||
| + |  $ sudo /etc/init.d/apache2 restart  | ||
| + | |||
| + | |||
| + | * If there it shows an error message like this | ||
| + | <pre> | ||
| + | Invalid command 'AuthUserFile', perhaps misspelled or defined by a module not included in the server configuration | ||
| + |    ...fail! | ||
| + | </pre> | ||
| + | * Enable <code>auth_digest</code> module. | ||
| + | <pre> | ||
| + | $ a2enmod auth_digest  | ||
| + | </pre> | ||
| + | |||
| + | * Restart the server again. | ||
|   $ sudo /etc/init.d/apache2 restart   |   $ sudo /etc/init.d/apache2 restart   | ||
Revision as of 06:22, 11 April 2009
| Contents | 
Subversion (SVN)
Installation
-Install Subversion from the repository
$ sudo apt-get install subversion
-Add group subversion
$ sudo addgroup subversion Adding group `subversion' (GID ****) ... Done.
-Add yourself and www-data (the Apache user) as users to this group 
$ sudo adduser username subversion Adding user `username' to group `subversion' ... Adding user username to group subversion Done. $ sudo adduser www-data subversion Adding user `www-data' to group `subversion' ... Adding user www-data to group subversion Done.
Create SVN Home
-Create SVN home
$ sudo mkdir /opt/svn $ cd /opt/svn $ sudo mkdir myproject $ sudo chown -R www-data myproject $ sudo chgrp -R subversion myproject $ sudo chmod -R g+rws myproject
-Create repository
$ sudo svnadmin create /opt/svn/myproject
or
$ sudo svnadmin create --fs-type fsfs /opt/svn/myproject
-to use WebDAV, repeat the chmod -R g+rws myproject command again as because svnadmin will create directories and files without group write access.
 Access via WebDAV protocol (http://)
-Install libapache2-svn
$ sudo apt-get install libapache2-svn ... Enabling module dav. Enabling module dav_svn. Run '/etc/init.d/apache2 restart' to activate new configuration!
-Edit /etc/apache2/mods-enabled/dav_svn.conf file
<Location /svn/myproject>
    DAV svn
    SVNPath /opt/svn/myproject
#    SVNParentPath /opt/svn/
    AuthType Basic
    AuthName "lckymn.com subversion repository"
    AuthUserFile /etc/subversion/.passwd
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
</Location>
This <LimitExcept GET PROPFIND OPTIONS REPORT></LimitExcept> block gives read-only access to anyone, yet write permission to only authenticated users in the file /etc/subversion/.passwd.
-To set up with multiple virtual hosts create /etc/apache2/sites-available/svn file instead of editing /etc/apache2/mods-enabled/dav_svn.conf file.
<Location /svn/myproject>
    DAV svn
    SVNPath /opt/svn/myproject
#    SVNParentPath /opt/svn/
    AuthType Basic
    AuthName "lckymn.com subversion repository"
    AuthUserFile /etc/subversion/.passwd
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
	SSLRequireSSL
</Location>
$ cd /etc/apache2/sites-available $ sudo a2ensite svn
-SSLRequireSSL is added to use SSL when accessing svn.
-To limit any connection to the SVN-Server (private SVN) so only authenticated user can have read and write permissions, remove the lines <LimitExcept GET PROPFIND OPTIONS REPORT> and </LimitExcept>.
<Location /svn/myproject>
    DAV svn
    SVNPath /opt/svn/myproject
#    SVNParentPath /opt/svn/
    AuthType Basic
    AuthName "lckymn.com subversion repository"
    AuthUserFile /etc/subversion/.passwd
#    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
#    </LimitExcept>
</Location>
-use SVNParentPath if there are multiple repositories under a single directory (e.g. /opt/svn/project1, /opt/svn/projec2, /opt/svn/project3)
<Location /svn>
    DAV svn
#    SVNPath /opt/svn/myproject
    SVNParentPath /opt/svn/
    AuthType Basic
    AuthName "lckymn.com subversion repository"
    AuthUserFile /etc/subversion/.passwd
#    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
#    </LimitExcept>
</Location>
-Create user and password
$ sudo htpasswd -c /etc/subversion/.passwd user_name
-Restart Apache server
$ sudo /etc/init.d/apache2 restart
 Access via WebDAV protocol with SSL encryption (https://)
- Enable SSL in your Apache server.
- Create /etc/apache2/sites-available/svnfile and add the following lines.
<VirtualHost *:443>                                       
    ServerAdmin webmaster@yoursite.com          
    SSLEngine on
    SSLOptions +StrictRequire
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
    ServerName svn.yoursite.com
    <Location /myproject>
        DAV svn
        SVNPath /opt/svn/myproject
#        SVNParentPath /opt/svn/
        AuthType Basic
        AuthName "svn.yoursite.com subversion repository"
        AuthUserFile /etc/subversion/.filename.htpasswd
#        <LimitExcept GET PROPFIND OPTIONS REPORT>
            Require valid-user
#        </LimitExcept>
    </Location>
</VirtualHost>
- To use htdigest as an authentication method instead of htpasswd, modify the /etc/apache2/sites-available/svnfile like:
<VirtualHost *:443>                                       
    ServerAdmin webmaster@yoursite.com
    SSLEngine on
    SSLOptions +StrictRequire
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
    ServerName svn.yoursite.com
    <Location /myproject>
        DAV svn
        SVNPath /opt/svn/myproject
#        SVNParentPath /opt/svn/
        AuthType Digest
        AuthName mclicker
        AuthUserFile /etc/subversion/.filename.htdigest
#        <LimitExcept GET PROPFIND OPTIONS REPORT>
            Require valid-user
#        </LimitExcept>
    </Location>
</VirtualHost>
- To create htdigest file, use the command below and type the password for the user.
$ htdigest -c passwordfile realm username
- To add more users to the existing realm
$ htdigest passwordfile realm another_username
- Enable site and restart apache2
$ sudo a2ensite svn $ sudo /etc/init.d/apache2 restart
- If there it shows an error message like this
Invalid command 'AuthUserFile', perhaps misspelled or defined by a module not included in the server configuration ...fail!
-  Enable auth_digestmodule.
$ a2enmod auth_digest
- Restart the server again.
$ sudo /etc/init.d/apache2 restart
-If you have another virtual host using 443 port, make sure you default (or mysite) site file has the following line.
NameVirtualHost *:443
-Now the SVN is accessible through this URL
https://svn.yoursite.com/test

