Note that this NOT guaranteed to work. Proceed with care ! You may break your serverI wanted to try and install trac on my v8 server.
The version from through-ip.com is old and is for EL4. I've no experience of making RPMs so decided to just try and install it manually.
My notes follow - I can do a HowTo if need be but would like it tested first if possible. I am also using the tracd server rather than apache as I wasn't sure how the hell to make it work with Apache !
This site
http://recursive-design.com/blog/2008/07/27/installing-trac-on-centos/ started me in the right direction, along with reading the trac documentation.
I decided to use a MySQL database. I also decided to use an ibay and set it to local network access only and then run tracd. It would undoubtedly be more secure to install it into /var/somewhere or /opt/somewhere and forget the ibay. I used an ibay for convenience.
I presume subversion is already installed
Make a new MySQL db called trac with user trac - I used phpmyadmin. You MUST USE UTF8 collation.
I made an ibay called trac
I think you need the following packages :
yum install python-mysqldb MySQL-python
Latest setuptools/ez_setup
wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg#md5=bd639f9b0eac4c42497034dec2ec0c2b
sh setuptools-0.6c11-py2.4.egg --prefix=/usr
Believe we need this :
easy_install -Z Genshi==0.6
This gets the latest 0.12 release (1.0 will only run on python 2.5+) - I originally got a 0.12.3 release by mistake which has a bug relating to the daemon and creating a pid file which took me hours to figure out ! :
easy_install http://svn.edgewall.org/repos/trac/branches/0.12-stable
This gets the account manager which helps to maintain accounts and logins :
easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk
Now to setup trac :
trac-admin /home/e-smith/files/ibays/trac/html/ initenv
Use the following for the database location :
mysql://user:password#@localhost:3306/database
edit trac.ini
Make sure we are using UTF8 :
[trac]
default_charset = UTF-8
Use this Components section to enable the account manager and disable the trac web login :
[components]
acct_mgr.admin.* = enabled
acct_mgr.api.* = enabled
acct_mgr.db.sessionstore = enabled
acct_mgr.htfile.htdigeststore = disabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.http.httpauthstore = disabled
acct_mgr.notification.* = enabled
acct_mgr.pwhash.htdigesthashmethod = enabled
acct_mgr.pwhash.htpasswdhashmethod = disabled
acct_mgr.register.* = enabled
acct_mgr.svnserve.* = enabled
acct_mgr.svnserve.svnservepasswordstore = disabled
acct_mgr.web_ui.* = enabled
trac.web.auth.loginmodule = disabled
Setup email in :
[notification]
admit_domains = mydomain.com
always_notify_owner = false
always_notify_reporter = false
always_notify_updater = true
ambiguous_char_width = single
email_sender = SmtpEmailSender
ignore_domains =
mime_encoding = none
sendmail_path = sendmail
smtp_always_bcc =
smtp_always_cc =
smtp_default_domain = mydomain.com
smtp_enabled = true
smtp_from = trac@mydomain.com
smtp_from_name =
smtp_password =
smtp_port = 25
smtp_replyto = trac@localhost
smtp_server = localhost
smtp_subject_prefix = __default__
smtp_user =
ticket_subject_template = $prefix #$ticket.id: $summary
use_public_cc = False
use_short_addr = false
use_tls = false
Add an admin user :
trac-admin /home/e-smith/files/ibays/trac/html permission add username TRAC_ADMIN
test run tracd :
/usr/bin/tracd --port 8000 /home/e-smith/files/ibays/trac/html/your_project
You should now be able to create a new username account which should have admin privileges. You should also be able to add in your repos via the Account Manager.
If that works, you can create /etc/init.d/tracd as follows - note there is no 'restart' and you need to add start and stops in etc/rc.d/rc7.d etc :
#! /bin/bash
#
# chkconfig: - 85 15
# description: tracd
# processname: tracd
# pidfile: /var/run/tracd.pid
# Source function library.
. /etc/rc.d/init.d/functions
## Options you should probably change ##
# If you only want to serve one project keep this variable
# empty and set the PROJECT_ENV variable
ENV_PARENT_DIR=
PROJECT_ENV=/home/e-smith/files/ibays/trac/html/reetp/
PORT=9090
# add any additional options (such as authentication) here. If you only have one
# project you should probably add -s here
# ADDITIONAL_OPTS="--basic-auth *,/myproject/trac/htpasswd,/myproject/trac /myproject/trac"
# I only use one project and authentication to the MySQL db so use this.
ADDITIONAL_OPTS="-s"
DAEMON=/usr/bin/tracd
NAME=tracd
DESC="web server"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
test -x $DAEMON || exit 1
set -e
DAEMON_OPTS="--daemonize --pidfile=$PIDFILE --port=$PORT $ADDITIONAL_OPTS"
if [ -n "$ENV_PARENT_DIR" ]; then
DAEMON_OPTS="$DAEMON_OPTS --env-parent-dir=$ENV_PARENT_DIR"
else
DAEMON_OPTS="$DAEMON_OPTS $PROJECT_ENV"
fi
LOCKFILE=${LOCKFILE-/var/lock/subsys/tracd}
RETVAL=0
start() {
if [ -a $LOCKFILE ];
then
echo "tracd appears to be running, or has crashed, or was not stopped properly."
echo "check $PIDFILE, and remove $LOCKFILE to start again."
return -1;
fi
echo -n $"Starting $NAME: "
LANG=$TRACD_LANG $DAEMON $DAEMON_OPTS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${LOCKFILE}
return $RETVAL
}
stop() {
if [ -a $PIDFILE ]
then
echo -n $"Stopping $NAME: "
kill -9 `cat ${PIDFILE}`
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${LOCKFILE} ${PIDFILE}
else
echo "tracd appears not to be running."
fi
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo $"Usage: $NAME {start|stop}"
exit 1
esac
exit $RETVAL
I'd be pleased to hear for anyone who has a go or has any comments. I don't guarantee to be able to fix it, but I'll look at it. I am going to fire up a test server again and try to test it myself. I may also try to get it work with Apache.
I'd therefore be grateful for anyone who knows how to get it working correctly with Apache. I did look in the through-ip.com rpm to see how it worked, but it boggled my mind a bit
B. Rgds
John