= Trac on Ubuntu = These instructions were tested with a fresh install of 8.04, and installs Trac 0.11. Also see TracInstallPlatforms, TracInstall, TracOnUbuntu, [https://help.ubuntu.com/community/UbuntuTracHowto Ubuntu-Trac], [wiki:0.11/TracOnUbuntuHardy hardy, cgi]. For a full tutorial to get SVN + Trac 0.11 running on Ubuntu with multiple projects [http://anantgarg.com/2009/03/25/subversion-trac-multiple-projects/ view this link]. = OS Installation = You can have a Ubuntu instance running on a real hardware or virtual machine session using VMWare or VirtualBox. == The Ubuntu machine info == {{{ me@ubuntu:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=8.04 DISTRIB_CODENAME=hardy DISTRIB_DESCRIPTION="Ubuntu 8.04.1" me@ubuntu:~$ }}} = Trac 0.11 Installation = == 1. Install Software Packages == To install Trac on your system, install apache, setuptools and some libraries: {{{ sudo apt-get install apache2 libapache2-mod-python \ libapache2-svn python-setuptools subversion python-subversion sudo easy_install Trac }}} === If you want to install Bitten for trac === {{{ # Needed for bitten's trac 10.4 compatiblity. sudo apt-get install python-clearsilver # Needed for bitten unitest. sudo easy_install http://darcs.idyll.org/~t/projects/figleaf-latest.tar.gz }}} == 2. Create the Trac Environments Directory == You'll need a directory for Trac's environments to live that should be writable by the default Apache user: {{{ sudo mkdir /var/lib/trac sudo chown www-data:www-data /var/lib/trac }}} == 3. Setup Apache2 == Next, create a new Apache-2 virtualhost, and paste the text below into the file: {{{ sudo vi /etc/apache2/sites-available/trac }}} {{{ ServerAdmin webmaster@localhost ServerName trac.example.com DocumentRoot /var/www ErrorLog /var/log/apache2/error.trac.log CustomLog /var/log/apache2/access.trac.log combined SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /var/lib/trac PythonOption TracUriRoot /projects PythonOption PYTHON_EGG_CACHE /tmp # use the following for one authorization for all projects # (names containing "-" are not detected): AuthType Basic AuthName "trac" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user }}} Now, disable the default virtualhost, enable the Trac virtualhost, and restart Apache2: {{{ sudo a2dissite default sudo a2ensite trac sudo /etc/init.d/apache2 reload }}} == 4. Creating Environments == === SVN === I installed my Subversion repository at {{{/var/lib/svn/YourProjectNameHere}}}. So I did a quick starting config of subversion with the following commands: {{{ sudo mkdir /var/lib/svn sudo svnadmin create /var/lib/svn/YourProjectNameHere }}} Some permissions changes and an apache restart are now needed: {{{ sudo chown -R www-data /var/lib/svn sudo chown -R www-data /var/lib/trac sudo /etc/init.d/apache2 reload }}} References: [http://abbeyworkshop.com/howto/misc/svn01/ Commands populate files into SVN repository] === Mercurial === An alternate solution is to use mercurial. if this case, do not setup any SVN (of course), indicate hg as the type of version control tool and the folder were your mercurial is. You will also need the mercurial plugin [wiki:TracMercurial Trac Mercurial] and the lastest version of mercurial from [https://help.ubuntu.com/community/UbuntuBackports#How%20to%20use the backports] === Trac === I put my trac environment at {{{/var/lib/trac/YourProjectNameHere}}}. Of course you could use any other path or name - something a little more descriptive of ''your'' project would probably be a good idea. First I ran these commands: {{{ sudo mkdir /var/lib/trac sudo trac-admin /var/lib/trac/YourProjectNameHere initenv sudo chown -R www-data /var/lib/trac }}} The "trac-admin" command shown above prompted me to enter: * the project name ({{{YourProjectNameHere}}}) * the path to svn repository ({{{/var/lib/svn/YourProjectNameHere}}}) ... then it prints out a bunch of stuff. If there are no errors you should now be able to surf to your Trac site at '''!http://servername/projects''' For more complex mod_python configs, see TracModPython One of your users (admin in this example) should have access to the web admin panel: {{{ sudo trac-admin /var/lib/trac/YourProjectNameHere permission add admin TRAC_ADMIN }}} == 5. get subversion running as well == You will also need to uncomment the settings in {{{/etc/apache2/mods-available/dav_svn.conf}}} {{{ # Uncomment this to enable the repository, DAV svn # Set this to the path to your repository SVNParentPath /var/lib/svn }}} == 6. Add some plugins to have a usable system == There are still some software dependency issue need to be resolved using apt-get. Lots of Trac plugins depened on system software like htmldoc,enscript. Check your trac.log to see the complaining when depeneded software not installed. === Install more apt-get package for trac plugins later === {{{ sudo apt-get install build-essential graphviz sudo apt-get install htmldoc sudo apt-get install enscript }}} === Using Easy_install to install more Trac plugins === Before running these commands, I had to run... {{{ sudo easy_install -U setuptools }}} ... to fix an error about "unexpected HTML" when trying to install from svn source. {{{ sudo easy_install http://svn.edgewall.org/repos/genshi/trunk/ sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk sudo easy_install http://trac-hacks.org/svn/customfieldadminplugin/0.11 sudo easy_install http://trac-hacks.org/svn/eclipsetracplugin/tracrpcext/0.10 sudo easy_install http://trac-hacks.org/svn/iniadminplugin/0.11 sudo easy_install http://trac-hacks.org/svn/masterticketsplugin/0.11 sudo easy_install http://trac-hacks.org/svn/pagetopdfplugin/0.10/ sudo easy_install http://trac-hacks.org/svn/progressmetermacro/0.11 sudo easy_install http://trac-hacks.org/svn/ticketdeleteplugin/0.11 sudo easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.11 sudo easy_install http://wikinotification.ufsoft.org/svn/trunk }}} == 7. what one should probably do different than described here == {{{ sudo chown www-data /etc/apache2/dav_svn.passwd }}} with Ubuntu 9.04 (it seems 8.10+ would require it) a modification is required in section 3 {{{ change to }}} = Testing = == Make sure trac's password file is writable by www-data user == {{{ me@ubuntu:~$ ls -l /etc/apache2/dav_svn.passwd -rw-r--r-- 1 www-data root 21 2008-09-23 21:03 /etc/apache2/dav_svn.passwd me@ubuntu:~$ }}} == Check the trac install directories layout == {{{ me@ubuntu:~$ tree -as /var/lib/trac/ /var/lib/trac/ `-- [ 4096] YourProjectNameHere |-- [ 98] README |-- [ 27] VERSION |-- [ 4096] attachments |-- [ 4096] conf | |-- [ 7025] trac.ini | |-- [ 4755] trac.ini.new | `-- [ 4187] trac.ini.sample |-- [ 4096] db | |-- [ 349184] trac.db | `-- [ 324608] trac.db.21.bak |-- [ 4096] htdocs |-- [ 4096] log | `-- [ 84562] trac.log |-- [ 4096] plugins | `-- [ 4096] TracWebAdmin-0.1.2dev-py2.5.egg | |-- [ 4096] EGG-INFO | | |-- [ 278] PKG-INFO | | |-- [ 335] SOURCES.txt | | |-- [ 1] dependency_links.txt | | |-- [ 218] entry_points.txt | | |-- [ 1] not-zip-safe | | `-- [ 9] top_level.txt | `-- [ 4096] webadmin | |-- [ 523] __init__.py | |-- [ 218] __init__.pyc | |-- [ 1594] basics.py | |-- [ 1682] basics.pyc | |-- [ 4096] htdocs | | |-- [ 4096] css | | | `-- [ 1900] admin.css | | |-- [ 4096] img | | | |-- [ 218] collapsed.png | | | `-- [ 227] expanded.png | | `-- [ 4096] js | | `-- [ 1286] admin.js | |-- [ 3930] logging.py | |-- [ 3133] logging.pyc | |-- [ 2659] perm.py | |-- [ 2585] perm.pyc | |-- [ 9247] plugin.py | |-- [ 8720] plugin.pyc | |-- [ 4096] templates | | |-- [ 954] admin.cs | | |-- [ 685] admin_basics.cs | | |-- [ 2961] admin_component.cs | | |-- [ 2202] admin_enum.cs | | |-- [ 1669] admin_log.cs | | |-- [ 3898] admin_milestone.cs | | |-- [ 1521] admin_perm.cs | | |-- [ 3167] admin_plugin.cs | | `-- [ 2901] admin_version.cs | |-- [ 16312] ticket.py | |-- [ 13250] ticket.pyc | |-- [ 5579] web_ui.py | `-- [ 6505] web_ui.pyc |-- [ 4096] snapshots `-- [ 4096] templates `-- [ 151] site.html 17 directories, 42 files me@ubuntu:~$ }}} == See the installed plugins in .egg format == {{{ me@ubuntu:~$ ls -d /usr/lib/python2.5/site-packages/*.egg /usr/lib/python2.5/site-packages/Bitten-0.6dev_r559-py2.5.egg /usr/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg /usr/lib/python2.5/site-packages/Genshi-0.6dev_r960-py2.5-linux-i686.egg /usr/lib/python2.5/site-packages/IniAdmin-0.2-py2.5.egg /usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg /usr/lib/python2.5/site-packages/TracAccountManager-0.2.1dev_r3857-py2.5.egg /usr/lib/python2.5/site-packages/TracCustomFieldAdmin-0.2-py2.5.egg /usr/lib/python2.5/site-packages/TracExtendedXmlRpc-0.1-py2.5.egg /usr/lib/python2.5/site-packages/TracMasterTickets-2.1.3-py2.5.egg /usr/lib/python2.5/site-packages/TracPageToPDF-0.2-py2.5.egg /usr/lib/python2.5/site-packages/TracProgressMeterMacro-0.1-py2.5.egg /usr/lib/python2.5/site-packages/TracTicketDelete-2.0-py2.5.egg /usr/lib/python2.5/site-packages/TracWebAdmin-0.1.2dev-py2.5.egg /usr/lib/python2.5/site-packages/TracWikiNotification-0.2.0-py2.5.egg /usr/lib/python2.5/site-packages/TracWysiwyg-0.2_r4214-py2.5.egg me@ubuntu:~$ }}}