Installation Of Redmine With SVN On A cPanel/CentOS 5.6 Server

This tutorial explains how to install Redmine with SVN on a cPanel/CentOS 5.6 server. Redmine is a flexible project management web application. Written using the Ruby on Rails framework, it is cross-platform and cross-database.

All steps are executed as ‘root’.

Prior to installation check if ImageMagick is installed:

# /scripts/checkimagemagick
ok

If it is not then install it:

# /scripts/installimagemagick

It will take few minutes so prepare a coffee. ;)

After ImageMagick is installed let's start with mod_dav.

Check if mod_dav is enabled:

# httpd -M | grep dav
dav_module (static)
dav_fs_module (static)

If nothing displayed then recompile Apache using:

# /scripts/easyapache
  • Simple CLI will be loaded:
  • Move with 'Tab' between buttons.
  • Load default - "Previously Saved Config"
  • Start customizing based on profile.
  • Choose latest Apache version (e.g.: 2.2.22).
  • Choose latest stable PHP version (e.g.: 5.3.15).
  • Move with 'Tab' key to "Exhaustive Options List".
  • Under "Apache Built-in Module" mark Dav and DAVFs
  • Move down with down arrow to "Preferences".
  • Mark "Archive Backup (this session only)" - obviously to create a backup of working Apache :)
  • "Next step" > "Save and build" > confirm everything if asked... AND the build is running.

Now you can have 20-30 minutes break - drink previously prepared coffee :D

After it is successfully finished check again if dav is enabled now:

# httpd -M | grep dav
dav_module (static)
dav_fs_module (static)

Next we need to install/enable subversion.

# cd /usr/local/src/

Check latest package of rpmforge repo rpm on http://pkgs.repoforge.org/rpmforge-release/ according to architecture of your system (uname -p) and download and install it:

# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# rpm -K rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# rpm -i rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Install latest subversion from rpmforge:

# yum --enablerepo=rpmforge install subversion

Get sources of the same subversion release you just installed (e.g. 1.6.11):

# svn --version
svn, version 1.6.11 (r934486)
compiled May 14 2012, 05:36:18
# yum list subversion
Installed Packages
subversion.i386 1.6.11-10.el5_8 installed
subversion.x86_64 1.6.11-10.el5_8 installed
# wget http://subversion.tigris.org/downloads/subversion-1.6.11.tar.bz2

Check latest SQLite Amalgamation package on http://www.sqlite.org/download.html and download it (e.g.: 3.7.13):

# wget http://www.sqlite.org/sqlite-amalgamation-3071300.zip

Unpack everything and prepare for configuration:

# tar xjf subversion-1.6.11.tar.bz2
# unzip sqlite-amalgamation-3071300.zip
# mkdir -p subversion-1.6.11/sqlite-amalgamation/
# cp sqlite-amalgamation-3071300/sqlite3.c subversion-1.6.11/sqlite-amalgamation/sqlite3.c
# ls -lad /usr/local/apache/bin/apxs /home/cpeasyapache/src/httpd*/srclib/apr /home/cpeasyapache/src/httpd*/srclib/apr-util
drwxr-xr-x 26 root root 4096 Aug 11 05:36 /home/cpeasyapache/src/httpd-2.2.22/srclib/apr/
drwxr-xr-x 20 root root 4096 Aug 11 05:37 /home/cpeasyapache/src/httpd-2.2.22/srclib/apr-util/
-rwxr-xr-x 1 root root 22652 Aug 11 05:36 /usr/local/apache/bin/apxs*

^^^^^^^^^^^^^^
Notice the paths - will be needed for next step.

Configure, build and install subversion:

# cd subversion-1.6.11
# ./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/home/cpeasyapache/src/httpd-2.2.22/srclib/apr --with-apr-util=/home/cpeasyapache/src/httpd-2.2.22/srclib/apr-util
# make clean
# make && make install

Again - take a short break...

After successful installation of subversion let's configure it.

Create include folder for EA3 config file:

# mkdir -p /usr/local/apache/conf/userdata/std/2/[USERNAME]/[DOMAIN]
# vi /usr/local/apache/conf/userdata/std/2/[USERNAME]/[DOMAIN]/svn.conf

Add following lines:

<IfModule mod_dav_svn.c>
   <Location /svn>
     DAV svn
     SVNPath /home/[USERNAME]/svn
     AuthType Basic
     AuthName "Subversion"
     AuthUserFile /home/[USERNAME]/.svn.htpasswd
     Require valid-user
   </Location>
</IfModule>

Find the location of modules:

# updatedb
# locate mod_dav_svn.so mod_authz_svn.so

/usr/local/apache/modules/mod_authz_svn.so
/usr/local/apache/modules/mod_dav_svn.so
^^^^^^^^^^^^^^

Notice the paths - will be needed for next step.

# vi /etc/httpd/conf/includes/pre_main_global.conf

Add following lines:

   LoadModule dav_svn_module /usr/local/apache/modules/mod_dav_svn.so
   LoadModule authz_svn_module /usr/local/apache/modules/mod_authz_svn.so

Create svn repository:

# cd /home/[USERNAME]
# svnadmin create svn
# chown -R [USERNAME]:nobody svn

Check if htpasswd is present:

# locate htpasswd
.
.
/usr/local/apache/bin/htpasswd
.
.
# /usr/local/apache/bin/htpasswd -cm /home/[USERNAME]/.svn.htpasswd [USERNAME_FOR_SVN]

You will be prompted to set up a new password.

Finally do:

# ln -s /home/[USERNAME]/svn /svn

Set up of subversion is done, now let's make it permanent and make some adjustments...

Create startup script:

# vi /etc/init.d/subversion

Insert following lines:

#!/bin/bash
   #
   #   /etc/rc.d/init.d/subversion
   #
   # Starts the Subversion Daemon
   #
   # chkconfig: 345 90 10
   # description: Subversion Daemon 
   # processname: svnserve

source /etc/rc.d/init.d/functions

[ -x /usr/bin/svnserve ] || exit 1

# To pass additional options (for instace, -r root of directory to server) to
   # the svnserve binary at startup, set OPTIONS here.
   #
   OPTIONS="-r /svn"
 

RETVAL=0
   prog="svnserve"
   desc="Subversion Daemon"

start() {
   echo -n $"Starting $desc ($prog): "
   daemon $prog -d $OPTIONS
   RETVAL=$?
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
   echo
   }

stop() {
   echo -n $"Shutting down $desc ($prog): "
   killproc $prog
   RETVAL=$?
   [ $RETVAL -eq 0 ] && success || failure
   echo
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
   return $RETVAL
   }

case "$1" in
   start)
   start
   ;;
   stop)
   stop
   ;;
   restart)
   stop
   start
   RETVAL=$?
   ;;
   condrestart)
   [ -e /var/lock/subsys/$prog ] && restart
   RETVAL=$?
   ;;
   *)
   echo $"Usage: $0 {start|stop|restart|condrestart}"
   RETVAL=1
   esac

exit $RETVAL

Now check if the startup script is working:

# service subversion status
Usage: /etc/init.d/subversion {start|stop|restart|condrestart}

Great! :)
Enable it to start at server boot:

# chkconfig subversion on
# chkconfig --list subversion
subversion 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Now check if all is configured correctly and apply changes:

# /scripts/verify_vhost_includes
Testing /usr/local/apache/conf/userdata/std/2/[USERNAME]/[DOMAIN]/svn.conf...ok
^^^^^^^^^^^^^^

Do NOT continue if there are errors! Examine and double check where is the mistake!

# /scripts/ensure_vhost_includes --user=[USERNAME]
info [safeapacherestart] Forced restart elapsed seconds: 2
Apache successfully restarted.
# /scripts/rebuildhttpdconf
Built /usr/local/apache/conf/httpd.conf OK
# /scripts/restartsrv_httpd
# service subversion restart

Final check:

Go to www.yoursite.com/svn

If all is working well you should be prompted for username/password.

Share this page:

0 Comment(s)