Setting Up Apache Subversion on Windows

Installing Subversion

  1. Download Microsoft Visual C++Download
  2. Download TortoiseSVN Download
  3. Install Microsoft Visual C++
  4. Install TortoiseSVN, making sure to enable the command line client tools option

Installing and Configuring Apache HTTPD

  1. Download Apache HTTPD Download
  2. Download Subversion Apache Modules Download
  3. Extract the downloaded .zip files
  4. Copy the extracted Subversion files to the desired location, for example C:\Program Files\Subversion
  5. Click the Start button > Search Control > Click Control Panel
  6. Click on System > Advanced system settings
  7. Click the Environment Variables...
  8. Edit the System Path variable
  9. Add the Subversion /bin path
  10. Click OK
  11. Open a command prompt and run svn --version to confirm the Subversion executables are configured in the system path correctly
  12. Copy the following files from the extracted Subversion directory to the Apache installation directory specified below:

    Apache /modules
          mod_dav_svn.so
          mod_authz_svn.so
          deps/brotlicommon.dll
          deps/brotlidec.dll
          deps/brotlienc.dll
          deps/libapr-1.dll
          deps/libapriconv-1.dll
          deps/libaprutil-1.dll
          deps/libcrypto-1_1-x64.dll
          deps/libexpat.dll
          deps/libhttpd.dll
          deps/libserf-2.dll
          deps/libssl-1_1-x64.dll
          deps/zlib1.dll
    Apache /bin
          libsvnjavahl-1.dll
          libsvn_client-1.dll
          libsvn_delta-1.dll
          libsvn_diff-1.dll
          libsvn_fs-1.dll
          libsvn_fs_fs-1.dll
          libsvn_fs_util-1.dll
          libsvn_fs_x-1.dll
          libsvn_ra-1.dll
          libsvn_repos-1.dll
          libsvn_subr-1.dll
          libsvn_wc-1.dll

  13. Inside the extracted Apache file structure, navigate to /conf/httpd.conf and edit it with a text editor
  14. Find the following lines LoadModule dav_module modules/mod_dav.so and uncomment them by removing the # at the beginning

    LoadModule access_compat_module modules/mod_access_compat.so
    LoadModule dav_module modules/mod_dav.so

  15. Add the following block to the file:

    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

    <VirtualHost svn.i12bretro.local:80>
        ServerName svn.i12bretro.local
        ServerAlias i12bretro.local
        DocumentRoot E:\SVN_Repos
        
        <Location />
            DAV svn
            SVNListParentPath On
            SVNParentPath E:\SVN_Repos
            
            Order allow,deny
            Allow from all
        </Location>
    </VirtualHost>

  16. Save the changes
  17. To just start Apache and have it run, double click the httpd.exe in the Apache /bin directory
  18. To run Apache as a Windows server, hold the shift key and right click in the Apache /bin directory > Open command window here
  19. Enter the following command to create the Apache service:
    httpd.exe -k install -n "Apache HTTPD"
  20. Open a web browser and navigate to http://svn.i12bretro.local
  21. A bare bones directory listing of the "Collection of Repositories" should be displayed

Setting Up LDAP Authentication

  1. Navigate to the Apache install directory/conf in Explorer
  2. Edit httpd.conf in a text editor
  3. Find both the authnz_ldap_module and ldap_module and make sure it is enabled by removing the # at the start of the line

    LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
    LoadModule ldap_module modules/mod_ldap.so

  4. Add the following to the Location block created earlier for svn.i12bretro.local to enable LDAP authentication

        Order deny,allow
        # Basic authentication with LDAP against MS AD
        AuthType Basic
        AuthBasicProvider ldap

        # AuthLDAPURL specifies the LDAP server IP, port, base DN, scope and filter
        # using this format: ldap://host:port/basedn?attribute?scope?filter
        AuthLDAPURL "ldap://i12bretro.local:389/DC=i12bretro,DC=local?sAMAccountName?sub?(objectClass=user)" NONE

        # The LDAP bind username and password
        AuthLDAPBindDN "readonly_svc@i12bretro.local"
        AuthLDAPBindPassword "Read0nly!!"
        LDAPReferrals Off
        AuthUserFile /dev/null

        AuthName "Restricted Area [i12bretro.local]"
        # to authenticate a domain group, specify the full DN
        AuthLDAPGroupAttributeIsDN on
        require ldap-group CN=WebAuthAccess,CN=Users,DC=i12bretro,DC=local

  5. Save httpd.conf
  6. Restart the Apache service
  7. Open a web browser and navigate back to http://svn.i12bretro.local
  8. An authentication prompt should be displayed
  9. Enter a valid username and password for a user belonging to the group specified above
  10. A bare bones directory listing of the Subversion repositories should be displayed