**************************************************************** * Description: Install SVN server and repository on RHEL server * Date: 05:50 PM EST, 04/27/2018 **************************************************************** <1> Apache Subversion is a software versioning and revision control system distributed as open source under the Apache License: | |__ o. Install Apache as web server, since SVN needs web console. | |__ o. Install SVN software, and setup SVN server. | |__ o. Create SVN repository. <2> In RHEL, the httpd package provides the Apache HTTP Server. Run below command as sudo to verify if httpd package is installed: | |__ $ rpm -q httpd >> package httpd is not installed <3> Install Apache by following command as sudo: | |__ $ yum install httpd Loaded plugins: downloadonly, security Bad id for repo: root@m1crh226 adm-nnassif, byte = @ 4 mahc_rhel5-els_repo | 951 B 00:00 mahc_rhel5-i386_repo | 951 B 00:00 mahc_rhel5_repo | 1.2 kB 00:00 rhel5s-x86_64-epel | 2.5 kB 00:00 rhel5s-x86_64-optional | 2.5 kB 00:00 rhel5s-x86_64-rhn-updates | 2.5 kB 00:00 rhel5s-x86_64-rpmfusion-free-updates | 2.5 kB 00:00 rhel5s-x86_64-rpmfusion-nonfree-updates | 2.5 kB 00:00 rhel5s-x86_64-spacewalk | 2.5 kB 00:00 rhel5s-x86_64-spacewalk-client | 2.5 kB 00:00 rhel5s-x86_64-supplementary | 2.5 kB 00:00 rhel5s-x86_64-virtualization | 2.5 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package httpd.i386 0:2.2.3-92.el5_11 set to be updated mahc_rhel5-els_repo/filelists | 3.8 MB 00:00 mahc_rhel5-i386_repo/filelists | 3.0 MB 00:00 mahc_rhel5_repo/filelists | 34 MB 00:01 rhel5s-x86_64-epel/filelists_db | 3.7 MB 00:00 rhel5s-x86_64-optional/filelists_db | 2.1 MB 00:00 rhel5s-x86_64-rhn-updates/filelists_db | 26 MB 00:01 rhel5s-x86_64-rpmfusion-free-updates/filelists_db | 54 kB 00:00 rhel5s-x86_64-rpmfusion-nonfree-updates/filelists_db | 11 kB 00:00 rhel5s-x86_64-spacewalk/filelists_db | 13 kB 00:00 rhel5s-x86_64-spacewalk-client/filelists_db | 13 kB 00:00 rhel5s-x86_64-supplementary/filelists_db | 2.1 MB 00:00 rhel5s-x86_64-virtualization/filelists_db | 209 kB 00:00 --> Processing Dependency: libpcre.so.0 for package: httpd ---> Package httpd.x86_64 0:2.2.3-92.el5_11 set to be updated --> Running transaction check ---> Package pcre.i386 0:6.6-9.el5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: httpd i386 2.2.3-92.el5_11 mahc_rhel5-i386_repo 1.2 M httpd x86_64 2.2.3-92.el5_11 mahc_rhel5-els_repo 1.3 M Installing for dependencies: pcre i386 6.6-9.el5 mahc_rhel5_repo 118 k Transaction Summary ======================================================================================================================================================================== Install 3 Package(s) Upgrade 0 Package(s) Total download size: 2.6 M Is this ok [y/N]: y Downloading Packages: (1/3): pcre-6.6-9.el5.i386.rpm | 118 kB 00:00 (2/3): httpd-2.2.3-92.el5_11.i386.rpm | 1.2 MB 00:00 (3/3): httpd-2.2.3-92.el5_11.x86_64.rpm | 1.3 MB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 6.5 MB/s | 2.6 MB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : pcre 1/3 Installing : httpd 2/3 Installing : httpd 3/3 Installed: httpd.i386 0:2.2.3-92.el5_11 httpd.x86_64 0:2.2.3-92.el5_11 Dependency Installed: pcre.i386 0:6.6-9.el5 Complete! <4> After Apache package installed, run below command to verify: | |__ $ rpm -q httpd >> httpd-2.2.3-92.el5_11 <5> Checking if Apache server up and running by either of the command: | |__ $ /etc/init.d/httpd status | |__ $ service httpd status >> httpd is stopped <6> Some of the RHEL system enables SELinux[Security Enhanced]. If the feature turned on, before starting Apache , please take reference for addition step: | |__ $ sestatus >> SELinux status: disabled <7> Start Apache server: | |__ $ service httpd start | | >> Starting httpd: [ OK ] | | |__ $ service httpd status >> httpd (pid 987) is running... <8> The URL of Apache landing page is https:localhost: | |__ o. The default html file is /var/www/index.html <9> Install SVN software and module mod_dav_svn. The purpose of "mod_dav_svn" is communicating SVN with Apache to display the repository directory on Web GUI: | |__ $ yum install mod_dav_svn subversion Loaded plugins: downloadonly, security Bad id for repo: root@m1crh226 adm-nnassif, byte = @ 4 Setting up Install Process Package subversion-1.6.11-12.el5_10.x86_64 already installed and latest version Package subversion-1.6.11-12.el5_10.i386 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package mod_dav_svn.i386 0:1.6.11-12.el5_10 set to be updated ---> Package mod_dav_svn.x86_64 0:1.6.11-12.el5_10 set to be updated --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: mod_dav_svn i386 1.6.11-12.el5_10 mahc_rhel5-i386_repo 79 k mod_dav_svn x86_64 1.6.11-12.el5_10 mahc_rhel5-els_repo 79 k Transaction Summary ======================================================================================================================================================================== Install 2 Package(s) Upgrade 0 Package(s) Total download size: 158 k Is this ok [y/N]: y Downloading Packages: (1/2): mod_dav_svn-1.6.11-12.el5_10.i386.rpm | 79 kB 00:00 (2/2): mod_dav_svn-1.6.11-12.el5_10.x86_64.rpm | 79 kB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 571 kB/s | 158 kB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : mod_dav_svn 1/2 Installing : mod_dav_svn 2/2 Installed: mod_dav_svn.i386 0:1.6.11-12.el5_10 mod_dav_svn.x86_64 0:1.6.11-12.el5_10 Complete! <10> After SVN package installed, then starting config SVN server. Firstly, creating SVN parent folder, which is equal to root volume of a system: | |__ $ mkdir /var/www/svn chmod 755 /var/www/svn <11> Under Apache server folder, there is configuration file for SVN. By which, telling the SVN metadata to Apache: | |__ $ vi /etc/httpd/conf.d/subversion.conf #========== Original ============= # LoadModule dav_svn_module modules/mod_dav_svn.so # LoadModule authz_svn_module modules/mod_authz_svn.so # # <Location /svn> # DAV svn # SVNParentPath /var/www/svn # # Limit write permission to list of valid users. # <LimitExcept GET PROPFIND OPTIONS REPORT> # # Require SSL connection for password protection. # # SSLRequireSSL # # AuthType Basic # AuthName "Subversion repositories" # AuthUserFile /etc/svn-auth-users # Require valid-user # </LimitExcept> # </Location> #=========== After re-configurion ========== <Location /svn> DAV svn SVNParentPath /var/www/svn <LimitExcept GET PROPFIND OPTIONS REPORT> AuthType Basic AuthName "Subversion repositories" # Create repository username/password, and saving the credential enclosed this file: AuthUserFile /etc/svn-auth-users # Saving repository user permission enclosed this access control file: AuthzSVNAccessFile /etc/svn-access-control Require valid-user </LimitExcept> </Location> #=========== Create SVN repository on a regular volume ========== <Location /repo_name> DAV svn SVNPath /u01/repo_name <LimitExcept GET PROPFIND OPTIONS REPORT> AuthType Basic AuthName "Subversion repositories" AuthUserFile /etc/svn-auth-users AuthzSVNAccessFile /etc/svn-access-control Require valid-user </LimitExcept> </Location> <12> Creating repository username. For example, "test_user" is the username: | |__ $ htpasswd -m /etc/svn-auth-users test_user | | New password: <typeing in password> | Re-type new password: <typeing in password again> | Adding password for user test_user | | | | |_ $ cat /etc/svn-auth-users test_user:$apr1$opiTm...$RxRjzf.tj.q/cQBvcba/y0 <13> Creating SVN repository: | |__ $ pwd | | /var/www/svn | | |__ $ svnadmin create testrepo | | |__ $ ls -ltr | | drwx------ 6 root root 4096 Apr 12 12:38 testrepo | | |__ $ chown -R apache.apache testrepo | | |__ $ ls -ltr | | drwx------ 6 apache apache 4096 Apr 12 12:38 testrepo | | |__ $ service httpd restart <14> Assigning permission to repository users/roles by copying following content within repo access control file: | |__ $ cp /var/www/svn/testrepo/conf/authz /etc/svn-access-control | | |__ $ vi /etc/svn-access-control [groups] admin=test_user [/] @admin=rw [testrepo:/] test_user=rw <15> Modify SVN repository config file to limit anonymous control by uncommenting below 2 parameters: | |__ $ vi /var/www/svn/testrepo/conf/svnserve.conf ## Disable anonymous access ## anon-access = none ## Enable access control ## authz-db = authz <16> Restart Apache: | |__ $ service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] <17> Create trunk, branches and tags structure under testrepo: | |__ o. Create “template” directories with following command: | | | |__ $ mkdir -p /tmp/svn-structure-template/{trunk,branches,tags} | | | | |__ o. Then import template to project repository using “svn import” command: | |__ $ svn import -m 'Initial import' /tmp/svn-structure-template/ http://10.234.92.21/svn/testrepo/ Adding /tmp/svn-structure-template/trunk Adding /tmp/svn-structure-template/branches Adding /tmp/svn-structure-template/tags Committed revision 1. <18> Now, the SVN parent folders should be hooked with Web GUI on browser - http://10.234.92.21/svn/testrepo/, or use TortoiseSVN repo-brower: <19> Reference: | |__ o. SVN Installation - https://www.if-not-true-then-false.com/2010/install-svn-subversion-server-on-fedora-centos-red-hat-rhel/ | |__ o. SELinux Status Verification - https://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-selinux-status-viewing.html | |__ o. REHL Apache - https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/managing_confined_services/chap-managing_confined_services-the_apache_http_server | |__ o. SVN Permission - http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html
Your Comments