This tutorial will cover the step by step instructions necessary to install SVN on CentOS and configure it to work with Apache.
Install mod_dav_svn
right away which is required to make SVN work with Apache.
$ yum install mod_dav_svn subversion
Once we have installed svn we want to create a repository somewhere.
$ svnadmin create /path/to/<repo_name>
Since we will be accessing the repository through Apache, we need to make sure the Apache user has proper permissions to access the repository.
$ chown -R apache:apache /path/to/<repo_name>
We are going to make some simple modifications to the configuration file for the repository to allow users access to it.
$ vi /path/to/<repo_name>/conf/svnserve.conf
Uncomment the lines like so:
auth-access = write
password-db = passwd
Create a htpasswd
file which will contain usernames and passwords that your users will use to gain access to the repository.
$ htpasswd -c /path/to/<repo_name>/conf/passwd <username>
New password:
Re-type new password:
Adding password for user <username>
~~~
You can continue to add more users to the file with the following command:
$ htpasswd /path/to/<repo_name>/conf/passwd
### Configure Apache
Here is where the mod_dav_svn module will come into play. We are going to setup an Apache config file specifically for subversion that will give us `http` access to the repository. Typically your Apache configuration will have a line like the following that includes all configuration files in the `conf.d` folder, if not just add the following line:
Include conf.d/*.conf
Once that is taken care of create the following file:
$ vi /etc/httpd/conf.d/subversion.conf
Add the following into the configuration, note that the path `/svn` is where the repository will be served out of:
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn> DAV svn SVNPath /path/to/<repo_name> Authtype Basic AuthName "My Repository" AuthUserFile /path/to/<repo_name>/conf/passwd Require valid-user </Location>
Restart apache for the new configuration to take affect:
$ service httpd restart
### Access the Repository
Now we simply type the address of where we are hosting the repository into our browser and we should be all set.
http://<domain>/svn
### Multiple Repositories
Note that this process can be repeated for multiple repositories on the same server, just make sure the paths in your `<Location>` directive are different. So for instance our `subversion.conf` could look something like this:
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn> DAV svn SVNPath /path/to/<repo_name> Authtype Basic AuthName "My Repository" AuthUserFile /path/to/<repo_name>/conf/passwd Require valid-user </Location>
<Location /svn2> DAV svn SVNPath /path/to/<repo_name2> Authtype Basic AuthName "My Repository 2" AuthUserFile /path/to/<repo_name>/conf/passwd Require valid-user </Location>
Note that we are using the same `passwd` file from the first repository, there is no need to create a separate set of users if you don't have to.