4

I'm running a dedicated server separating accounts for my clients with WHM and CentOS 5. One of my clients has asked me to install subversion, and have the repository stored beneath the webroot.

  • repo's true folder will be in "/home/theirfolder/svn"
  • repo will be accessed through a subdomain on "svn.theirdomain.com"

I know that the regular way to do this is to set up a virtual host in Apache that handles the redirect. The problem is that WHM seems to overtake the whole virtual hosting process, forcing me to bake changes into external files that don't even seem to work for me. When retaining the folder beneath the webroot, I could not get virtual hosting to recognize the path to this folder at all.

The closest I've gotten was instead moving the subversion folder onto the webroot, but even then, my instructions for using Authentication are not followed, so that's not a good solution, security-wise. It also appeared that in this setting pages were being generated by Apache and not by Subversion.

Can anyone here point me in the direction of a tutorial that can guide me through this type of setup, or give me a clear, step-by-step guide on what I need to do? I've tried a lot of things but nothing has really gotten me there. I already have Subversion and all of its dependencies downloaded and installed correctly.

Thanks in advance!

Edward Coyle
  • 85
  • 1
  • 1
  • 6

2 Answers2

10

One way to accomplish this is to use one of WHM's custom include files, and add your custom <virtualhost> directives there the "regular way". Changes made in these files will survive an automatic rebuild of the Apache configuration files by WHM, while any changes made directly to /etc/httpd/conf/httpd.conf might not.

There are three custom include files that are included by the main httpd.conf at different points. These files (if running Apache 2.x) are located at:

  • /usr/local/apache/conf/includes/pre_virtualhost_2.conf, included before the automatically generated <virtualhost> directives
  • /usr/local/apache/conf/includes/post_virtualhost_2.conf, included after the automatically generated <virtualhost> directives
  • /usr/local/apache/conf/includes/pre_main_2.conf, included at the top of httpd.conf

You can edit these files directly, or via the WHM admin panel (Service Configuration -> Apache Configuration, Include Editor, on WHM 11.30).

I've used post_virtualhost_2.conf to setup additional vhosts for client accounts when WHM/cpanel won't do what I want it to via other configuration methods. Any valid Apache configuration directives can go in the file - it's simply included in its entirety in the main httpd.conf.

Cesar Bielich
  • 4,754
  • 9
  • 39
  • 81
zlovelady
  • 4,037
  • 4
  • 32
  • 33
  • Editing `/usr/local/apache/conf/includes/post_virtualhost_2.conf` worked for me. – Muhammad Reda Jan 26 '15 at 14:31
  • 1
    Thanks for this, it's easy to confuse this capability for adding completely new virtual hosts from the WHM/cPanel facility for modifying existing virtual hosts known already to WHM by using the subtle include file patterns described here: https://documentation.cpanel.net/display/EA/Modify+Virtualhost+Containers+With+Include+Files – Webel IT Australia - upvoter Aug 30 '15 at 10:44
3

The instructions above are not what you would use on a per account basis. Anything placed in the apache includes are server wide. You would want to use the apache includes to include the mod dav and mod authz shared object. You probably already have it set but here are instructions just in case. In WHM go to Service Configuration->Apache Configuration->Include Editor Place this in the Pre Main Include:

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

Next you want to make a .conf file and place it in

/usr/local/apache/conf/userdata/std/2/<user account name>/svn.conf

If you want SSL do the same in

/usr/local/apache/conf/userdata/ssl/2/<user account name>/svn.conf

If the directories above are not already present then you will need to create them.

file would contain:

<IfModule mod_dav_svn.c>
<Location /svn>
DAV svn
SVNPath /home/<user account>/svn
AuthType Basic
AuthName "My Repo"
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>
</IfModule> 

Username and password can be set with:

htpasswd -cm /etc/svn-auth-conf myusername

Then to commit file changes execute:

/scripts/ensure_vhost_includes --user=<user account>
/scripts/rebuildhttpdconf
/scripts/restartsrv_httpd

You should be able to browse to

yourdomain.com/svn 

and it will be pulling from

/home/<user account>/svn
Tom
  • 31
  • 2
  • It seems that this only works for customizing one of the VirtualHost that cpanel/whm produces by default, but not for creating an additional VirtualHost for a user. Or am I missing something? – zlovelady Sep 13 '11 at 07:44
  • @zlovelady You're correct. The instructions here will only work to edit configurations of an existing virtualhost created by cpanel. You can't use it to create a new one, Your answer above is more suited for new virtual hosts – Kudehinbu Oluwaponle Sep 07 '17 at 11:51