initialize trac
exemple for trac.yourwebsite.com :
apt-get install trac mkdir /var/www/trac.yourwebsite.com chmod 2750 /var/www/trac.yourwebsite.com trac-admin /var/www/trac.yourwebsite.com initenv chown -R www-data: /var/www/trac.yourwebsite.com #Edit trac.ini if needed cd /var/www/trac.yourwebsite.com/conf/
apache config
apt-get install libapache2-mod-python
In /etc/apache2/sites-available/trac.yourwebsite.com :
<VirtualHost *:80> ServerAdmin system@yourwebsite.com ServerName trac.yourwebsite.com ServerAlias trac.yourwebsite.vm.gnt DocumentRoot /var/www/trac.yourwebsite.com <Location /> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/www/trac.byourwebsite.com PythonOption TracUriRoot / PythonPath "sys.path + ['/var/www/trac.yourwebsite.com']" </Location> <Location "/login"> AuthType Basic AuthName "Trac login" AuthUserFile /etc/apache2/trac.passwd Require valid-user </Location> ErrorLog /var/log/apache2/error.trac.yourwebsite.log CustomLog /var/log/apache2/access.trac.yourwebsite.log combined </VirtualHost>
And to finish :
a2ensite trac.binbang.org /etc/init.d/apache2 reload htpasswd -c /etc/apache2/trac.passwd admin trac-admin /var/www/trac.yourwebsite.com/ permission add admin TRAC_ADMIN
tips
when behind a reverse proxy
To be sure Trac has the good website domain name and not redirect you to private one when you access using public one, add :
ProxyPreserveHost On
import milestones
apt-get install sqlite3 sqlite3 /var/www/trac/db/trac.db .dump milestone
import milestones from the following dump
BEGIN TRANSACTION; CREATE TABLE milestone ( name text PRIMARY KEY, due integer, completed integer, description text ); INSERT INTO "milestone" VALUES('8 jan 2010',1262908800,0,''); INSERT INTO "milestone" VALUES('15 jan 2010',1263513600,0,''); INSERT INTO "milestone" VALUES('22 jan 2010',1264118400,0,''); INSERT INTO "milestone" VALUES('29 jan 2010',1264723200,0,''); INSERT INTO "milestone" VALUES('5 feb 2010',1265328000,0,''); INSERT INTO "milestone" VALUES('12 feb 2010',1265932800,0,''); INSERT INTO "milestone" VALUES('19 feb 2010',1266537600,0,''); INSERT INTO "milestone" VALUES('5 mar 2010',1267747200,0,''); INSERT INTO "milestone" VALUES('12 mar 2010',1268352000,0,''); INSERT INTO "milestone" VALUES('19 mar 2010',1268956800,0,''); INSERT INTO "milestone" VALUES('26 mar 2010',1269561600,0,''); INSERT INTO "milestone" VALUES('2 apr 2010',1270166400,0,''); INSERT INTO "milestone" VALUES('9 apr 2010',1270771200,0,''); INSERT INTO "milestone" VALUES('16 apr 2010',1271376000,0,''); INSERT INTO "milestone" VALUES('23 apr 2010',1271980800,0,''); INSERT INTO "milestone" VALUES('30 Apr 2010',1272585600,0,''); INSERT INTO "milestone" VALUES(' 7 May 2010',1273190400,0,''); INSERT INTO "milestone" VALUES('14 May 2010',1273795200,0,''); INSERT INTO "milestone" VALUES('21 May 2010',1274400000,0,''); INSERT INTO "milestone" VALUES('28 May 2010',1275004800,0,''); INSERT INTO "milestone" VALUES(' 4 Jun 2010',1275609600,0,''); INSERT INTO "milestone" VALUES('11 Jun 2010',1276214400,0,''); INSERT INTO "milestone" VALUES('18 Jun 2010',1276819200,0,''); INSERT INTO "milestone" VALUES('25 Jun 2010',1277424000,0,''); INSERT INTO "milestone" VALUES(' 2 Jul 2010',1278028800,0,''); INSERT INTO "milestone" VALUES(' 9 Jul 2010',1278633600,0,''); INSERT INTO "milestone" VALUES('16 Jul 2010',1279238400,0,''); INSERT INTO "milestone" VALUES('23 Jul 2010',1279843200,0,''); INSERT INTO "milestone" VALUES('30 Jul 2010',1280448000,0,''); INSERT INTO "milestone" VALUES(' 6 Aug 2010',1281052800,0,''); INSERT INTO "milestone" VALUES('13 Aug 2010',1281657600,0,''); INSERT INTO "milestone" VALUES('20 Aug 2010',1282262400,0,''); INSERT INTO "milestone" VALUES('27 Aug 2010',1282867200,0,''); INSERT INTO "milestone" VALUES(' 3 Sep 2010',1283472000,0,''); INSERT INTO "milestone" VALUES('10 Sep 2010',1284076800,0,''); INSERT INTO "milestone" VALUES('17 Sep 2010',1284681600,0,''); INSERT INTO "milestone" VALUES('24 Sep 2010',1285286400,0,''); INSERT INTO "milestone" VALUES(' 1 Oct 2010',1285891200,0,''); INSERT INTO "milestone" VALUES(' 8 Oct 2010',1286496000,0,''); INSERT INTO "milestone" VALUES('15 Oct 2010',1287100800,0,''); INSERT INTO "milestone" VALUES('22 Oct 2010',1287705600,0,''); INSERT INTO "milestone" VALUES('29 Oct 2010',1288310400,0,''); INSERT INTO "milestone" VALUES(' 5 Nov 2010',1288915200,0,''); INSERT INTO "milestone" VALUES('12 Nov 2010',1289520000,0,''); INSERT INTO "milestone" VALUES('19 Nov 2010',1290124800,0,''); INSERT INTO "milestone" VALUES('26 Nov 2010',1290729600,0,''); INSERT INTO "milestone" VALUES(' 3 Dec 2010',1291334400,0,''); INSERT INTO "milestone" VALUES('10 Dec 2010',1291939200,0,''); INSERT INTO "milestone" VALUES('17 Dec 2010',1292544000,0,''); INSERT INTO "milestone" VALUES('24 Dec 2010',1293148800,0,''); INSERT INTO "milestone" VALUES('31 Dec 2010',1293753600,0,''); INSERT INTO "milestone" VALUES(' 7 Jan 2011',1294358400,0,''); INSERT INTO "milestone" VALUES('14 Jan 2011',1294963200,0,''); INSERT INTO "milestone" VALUES('21 Jan 2011',1295568000,0,''); INSERT INTO "milestone" VALUES('28 Jan 2011',1296172800,0,''); INSERT INTO "milestone" VALUES(' 4 Feb 2011',1296777600,0,''); INSERT INTO "milestone" VALUES('11 Feb 2011',1297382400,0,''); INSERT INTO "milestone" VALUES('18 Feb 2011',1297987200,0,''); INSERT INTO "milestone" VALUES('25 Feb 2011',1298592000,0,''); INSERT INTO "milestone" VALUES(' 4 Mar 2011',1299196800,0,''); INSERT INTO "milestone" VALUES('11 Mar 2011',1299801600,0,''); INSERT INTO "milestone" VALUES('18 Mar 2011',1300406400,0,''); INSERT INTO "milestone" VALUES('25 Mar 2011',1301011200,0,''); INSERT INTO "milestone" VALUES(' 1 Apr 2011',1301616000,0,''); COMMIT;
Save this in /tmp/milestones.sql and load with
sqlite3 /var/www/trac/db/trac.db .read /tmp/milestones.sql
There will be an error message with the create table because it already exists but this does not prevent the insert statements from being executed. The above lines can be generated using the following python script:
from time import strftime, gmtime for i in range(1,50): now = 1271980800 + i * 604800 print "INSERT INTO \"milestone\" VALUES('%s',%d,0,'');" % ( strftime('%e %b %Y', gmtime(now)), now )
directive.