[[PageOutline(2-3)]] = Installing Trac on !ArchLinux for Multiple Projects using Mod_Python = [http://www.archlinux.org ArchLinux] is powered by a simple and lightweight package management system. It is release by rolling binary system. Keep update by command line '''pacman -Syu''' will get the most recent version. In following steps, I set these variable for simply input {{{ TROOT=/home/trac # put the multiple trac project's db SROOT=/home/svn # put the multiple project subversion repositories PRJ=project1 # put each project's name }}} == install packages == === install depend packages from binary === {{{ pacman -S mod_python python-pysqlite }}} === Download trac from binary === Trac is already on community repository, check /etc/pacman.conf, make sure uncomment the following. {{{ [community] # Add your preferred servers here, they will be used first Include = /etc/pacman.d/community }}} SUPFILES=(arch extra !unstable community !testing) download and install it {{{ pacman -S trac }}} === or, build trac from source === if want the newest version trac. edit the /etc/abs/abs.conf, unmark the community {{{ SUPFILES=(arch extra !unstable community !testing) }}} {{{ cd /var/abs/community/network/trac vi PKGBUILD # modify the version to the newest version makepkg -g # modify PKGBUILD with the correct md5 checksum makepkg -c # build binary package file, and clean up work files after build sudo pacman -A *.pkg.tar.gz # install it sudo pacman -U *.pkg.tar.gz # or, upgrade it, if already installed }}} == configure mod_python == edit /etc/httpd/conf/httpd.conf, append following line {{{ LoadModule python_module /usr/lib/apache/mod_python.so }}} use following line to restart apache, check /var/log/httpd/error.log, if failed {{{ /etc/rc.d/httpd restart }}} Tips: you can check it by http://your_server_ip/server-info after following config {{{ edit /etc/httpd/conf/httpd.conf uncomment following line Include /etc/httpd/conf/extra/httpd-info.conf edit /etc/httpd/conf/extra/httpd-info.conf modify the "Allow from" to your client ip address }}} == setup subversion for each project == mkdir -p $SROOT/$PRJ mkdir /tmp/$PRJ mkdir /tmp/$PRJ/branches mkdir /tmp/$PRJ/tags mkdir /tmp/$PRJ/trunk svnadmin create $SROOT/$PRJ svn import /tmp/$PRJ file://$SROOT/$PRJ -m "initial import" rm -rf /tmp/$PRJ svn ls -v file://$SROOT/$PRJ # check it == setup trac db for each project == mkdir -p $TROOT setup by interactive questions {{{ trac-admin $TROOT/$PRJ initenv }}} or, by command line parameters {{{ trac-admin $TROOT/$PRJ initenv $PRJ sqlite:db/trac.db svn $SROOT/$PRJ /usr/share/trac/templates }}} == configure apache == {{{ chown -R nobody $SROOT $TROOT # allow httpd's owner 'nobody' could read/write edit /etc/httpd/conf/httpd.conf, uncomment following line Include /etc/httpd/conf/extra/httpd-vhosts.conf edit /etc/httpd/conf/extra/httpd-vhosts.conf, append following lines ServerAdmin dlin@mail.taifex.com.tw DocumentRoot /home/trac/ ServerName 192.168.13.203 ErrorLog /var/log/httpd/trac.error_log CustomLog /var/log/httpd/trac.access_log common #set up Trac handling SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /home/trac <-- change to $TROOT value PythonOption TracUriRoot /prjs }}}