Learn How To Setup an Apache Subversion (SVN) Server on CentOS 7
Table of Contents
- Prerequisites
- Step 1: Update the system
- Step 2: Install Apache
- Step 3: Install SVN and the mod_dav_svn module
- Step 4: Configure SVN
- Step 5: Start Apache and modify firewall rules
Apache Subversion (SVN) is a widely used version control solution which helps in storing files of various versions, like source code and documents.
In this article, I will show you how to use Apache Subversion and Apache to build an SVN server on An ITWeb.Services CentOS 7 server instance.
Prerequisites
- VM running CentOS 7 (minimal install preferred, but not required).
https://www.itweb.services/tutorials/linux-guides/how-to-use-sudo-on-debian-centos-and-freebsd”>Another IT Web Services article describes the details about how to setup a sudo user.
Step 1: Update the system
sudo yum update
sudo shutdown -r now
After the reboot, log into the system again using the same sudo user.
Step 2: Install Apache
Install Apache using YUM:
sudo yum install httpd
Remove Apache’s default welcome page:
sudo sed -i 's/^/#&/g' /etc/httpd/conf.d/welcome.conf
Prevent Apache from displaying files in the “/var/www/html” directory:
sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/httpd/conf/httpd.conf
Step 3: Install SVN and the mod_dav_svn module
To make SVN work with Apache, you need to install an Apache module “moddavsvn” in addition to SVN:
sudo yum install subversion mod_dav_svn
Step 4: Configure SVN
1) Modify the SVN configuration file
sudo vi /etc/httpd/conf.modules.d/10-subversion.conf
The file should read:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule dontdothat_module modules/mod_dontdothat.so
Append the following segment:
<Location /svn>
DAV svn
SVNParentPath /svn
AuthName "SVN Repos"
AuthType Basic
AuthUserFile /etc/svn/svn-auth
AuthzSVNAccessFile /svn/authz
Require valid-user
</Location>
Save and quit:
:wq!
Note: In this configuration, we specified an HTTP access authentication file “/etc/svn/svn-auth” and a user permission control file “/svn/authz”. Both of them will be created later.
2) Create an SVN repo
sudo mkdir /svn
cd /svn
sudo svnadmin create repo1
sudo chown -R apache:apache repo1
3) Setup SVN user accounts
Use the following commands to create an HTTP access authentication file “/svn/svn-auth” and an SVN user account “user001”:
sudo mkdir /etc/svn
sudo htpasswd -cm /etc/svn/svn-auth user001
sudo chown root:apache /etc/svn/svn-auth
sudo chmod 640 /etc/svn/svn-auth
If you want to create more SVN user accounts, refer to the following commands:
sudo htpasswd -m /etc/svn/svn-auth user002
sudo htpasswd -m /etc/svn/svn-auth user003
Warning: Do not use the “-c” flag from now on, or you will rebuild the authentication file and erase all the user accounts you setup earlier.
4) Setup permissions for users
sudo cp /svn/repo1/conf/authz /svn/authz
sudo vi /svn/authz
Assume that:
- User “user001” is the administrator.
- User “user002” is a qualified user who owns read and write permissions to the SVN repo “repo1”.
- User “user003” is a trainee who can only read the contents of SVN repo “repo1”.
Then you can modify the settings within as below:
[groups]
admin=user001
repo1_user=user002
repo1_trainee=user003
[/]
@admin=rw
[repo1:/]
@repo1_user=rw
@repo1_trainee=r
Save and quit:
:wq!
Step 5: Start Apache and modify firewall rules
Start Apache:
sudo systemctl start httpd.service
sudo systemctl enable httpd.service
Open the HTTP service port:
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
Finally, use the following path to access the SVN repo “repo1” on your server from an SVN client:
http://<your-server-ip>/svn/repo1/
That concludes our tutorial. Thank you for reading.
Need help?
Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!