{{{#!div style="background-color: #ffd; border:1px outset #ddc; font-size: 85%" {{{#!div style="text-align:center" **Caveat: this page is not necessarily up to date...** }}} As a general advice for any ''platform specific'' installation guide like this one, you should first make sure that the tips given here are not out of date with respect to the generic instructions given in TracInstall and TracUpgrade. The latter are documenting either the latest stable version of Trac, or the one about to be released (0.12 as of this writing). If you're planning to install an older version of Trac, have a look at the corresponding archived pages, for example: - [[0.11/TracInstall]] and [[0.11/TracUpgrade]] - [[0.10/TracInstall]] and [[0.10/TracUpgrade]] }}} {{{#!div class="important" ** A Word of Warning ** As of 16^th^ June 2010, the mod_python project is officially dead. If you are considering using mod_python for a new installation, '''please don't'''! There are known issues which will not be fixed and there are now better alternatives. Check out the main TracInstall pages for your target version for more information. }}} [[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 subversion }}} === 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 and svn_dav == edit /etc/httpd/conf/httpd.conf, append following line {{{ LoadModule python_module modules/mod_python.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.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 }}} edit $TROOT/$PRJ/conf/trac.ini {{{ [header_logo] link = http://your_server_ip/trac [logging] log_type = file <-- we need check log to figure out problems [project] url = http://your_server_ip/trac/project1 <-- change to $PRJ }}} == authentication == === create password file === {{{ htpasswd -c /home/trac/.htpasswd admin # create 'admin' account htpasswd /home/trac/.htpasswd new_user # append a 'new_user' account }}} === create access file === sample /home/svn/.svn.access {{{ [/] * = r [project1:/] admin = rw }}} == configure apache == {{{ chown -R http.http $SROOT $TROOT # allow httpd's owner 'http' 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 your_name@email.address DocumentRoot /home/trac/ # <- change to $TROOT ServerName your_server_ip ErrorLog /var/log/httpd/trac.error.log CustomLog /var/log/httpd/trac.access.log combined Order deny,allow Deny from all Allow from 192.168.0.0/16 127.0.0.1 # <- allow local network only #set up Trac handling Order deny,allow Deny from all Allow from 192.168.0.0/16 127.0.0.1 # <- allow local network only AuthName "Trac Projects" AuthType Basic AuthUserFile /home/trac/.htpasswd # <- place to put password by htpasswd2 Satisfy Any Require valid-user SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /home/trac # <-- change to $TROOT value PythonOption TracUriRoot /trac DAV svn SVNParentPath /home/svn/ # <- change to $SROOT AuthzSVNAccessFile /home/svn/.svn.access # <- place to put access file AuthName "SVN Repo" AuthType Basic AuthUserFile /home/trac/.htpasswd # <- place to put password by htpasswd2 Satisfy Any Require valid-user }}} {{{ /etc/rc.d/httpd restart # if failed, manual start up httpd by following command, and check the information apachectl -k start }}} Now, you should be able to access Trac at http://you_server_ip/trac/$PRJ == access via https(optional) == via https will be safer, but it may be slower. {{{ cd /etc/httpd/conf # must change to this directory before doing the mod_ssl.txt more mod_ssl.txt }}} 1. following the instructions in mod_ssl.txt to generate key files. 1. Add the the lines of httpd-vhosts.conf to /etc/httpd/conf/extra/httpd-ssl.conf. 1. uncomment the include /etc/httpd/conf/extra/httpd-ssl.conf in /etc/httpd/conf/httpd.conf 1. restart apache by /etc/rc.d/httpd restart