Index
Create new Project
vim add_proj.sh
############# add_proj.sh Start ###############
#!/bin/bash
SVNPATH="/srv/www/svn/svnrepos";
TRACPATH="/srv/www/trac";
WEBLOGOPATH="http://info.getrag.de/fileadmin/img/trac_logo.png";
ADMINUSER="nikoz"
echo creo progetto $1 con nome "$2"
svnadmin create ${SVNPATH}/$1 --fs-type fsfs
trac-admin ${TRACPATH}/$1 initenv "$2" "sqlite:db/trac.db" "svn" "${SVNPATH}/$1"
trac-admin ${TRACPATH}/$1/ permission remove anonymous WIKI_CREATE WIKI_MODIFY BROWSER_VIEW
trac-admin ${TRACPATH}/$1/ permission add anonymous TICKET_CREATE
trac-admin ${TRACPATH}/$1/ permission add authenticated WIKI_ADMIN BROWSER_VIEW MILESTONE_ADMIN
trac-admin ${TRACPATH}/$1/ permission add ${ADMINUSER} TRAC_ADMIN;
sed -i.bak "s%^alt.*%alt = $2%" ${TRACPATH}/$1/conf/trac.ini|more
sed -i.bak "s%^link.*%link = $WEBLOGOPATH%" ${TRACPATH}/$1/conf/trac.ini|more
sed -i.bak "s%^src.*%src = $WEBLOGOPATH%" ${TRACPATH}/$1/conf/trac.ini|more
chown -R apache:apache /srv/www/
chmod -R g+w /srv/www/
chmod -R g+s /srv/www/
############# add_proj.sh Finish ###############
chmod +x add_proj.sh
./add_proj.sh PorjName "Project Name"
Migrate old trac projects
on the old server
cd /opt/projects/trac/
tar cfvz /media/usb/tracDump.tgz *
on the new server
vim upgrade_projects.sh
############## upgrade_projects.sh Start ##############
#!/bin/bash
OLDSVNPATH="/opt/projects/svn";
SVNPATH="/srv/www/svn/svnrepos";
TRACPATH="/srv/www/trac";
WEBLOGOPATH="http://info.getrag.de/fileadmin/img/trac_logo.png";
ADMINUSER="nikoz"
for tracName in `ls -1 ${TRACPATH}/`;
do
trac-admin ${TRACPATH}/${tracName} upgrade;
trac-admin ${TRACPATH}/${tracName} wiki upgrade;
trac-admin ${TRACPATH}/${tracName} permission remove anonymous WIKI_CREATE WIKI_MODIFY BROWSER_VIEW
trac-admin ${TRACPATH}/${tracName} permission add anonymous TICKET_CREATE
trac-admin ${TRACPATH}/${tracName} permission add authenticated WIKI_ADMIN BROWSER_VIEW MILESTONE_ADMIN
trac-admin ${TRACPATH}/${tracName} permission add ${ADMINUSER} TRAC_ADMIN;
sed -i.bak "s%^link.*%link = $WEBLOGOPATH%" ${TRACPATH}/${tracName}/conf/trac.ini|more
sed -i.bak "s%^src.*%src = $WEBLOGOPATH%" ${TRACPATH}/${tracName}/conf/trac.ini|more
sed -i.bak s%$OLDSVNPATH%$SVNPATH% ${TRACPATH}/${tracName}/conf/trac.ini ;
trac-admin ${TRACPATH}/${tracName}/ repository resync '*' ;
done;
chown -R apache:apache /srv/www/
chmod -R g+w /srv/www/
chmod -R g+s /srv/www/
############## upgrade_projects.sh Finish ##############
Setup 0.12.2 on CentOS 5.5 64
if beyound a proxy server
export http_proxy=http://proxy:8080/
export https_proxy=https://proxy:8080/
env |grep http
rpm -Uhv apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
or
rpm -Uhv /media/nfs_3.2/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
yum update
yum -y install subversion trac mod_dav_svn mod_python httpd
mkdir -p /srv/www/svn/svnrepos
mkdir -p /srv/www/svn/auth
htpasswd -cb /srv/www/svn/auth/svn.htpasswd svnuser1 passw0rd
svnadmin create /srv/www/svn/svnrepos/test
svn mkdir file:///srv/www/svn/svnrepos/test/branches file:///srv/www/svn/svnrepos/test/tags file:///srv/www/svn/
svnrepos/test/trunk -m "Creating directories for initial import"
chown -R apache:apache /srv/www/svn/svnrepos/test/
vi /etc/httpd/conf.d/svn.conf
####################################################################
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /srv/www/svn/svnrepos/
AuthType Basic
AuthName "test Site Repository"
AuthUserFile /srv/www/svn/auth/svn.htpasswd
Require valid-user
</Location>
####################################################################
/etc/init.d/httpd restart
mkdir /srv/www/trac
trac-admin /srv/www/trac/test initenv "Project Name" "sqlite:db/trac.db" "svn" "/srv/www/svn/svnrepos/test"
vi /etc/httpd/conf.d/trac.conf
####################################################################
###
### Sample Trac configuration taken from
trac.edgewall.org/wiki/TracModPython
###
### The recommended Trac web interface requires mod_python
<IfModule mod_python.c>
### Create your Trac environments as subdirectories of /var/trac
### They will appear in a listing on your website at /trac/, and be available
### at /trac/PROJECTNAME/
<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /srv/www/trac
PythonOption TracUriRoot /trac
</Location>
### Use htpasswd to add Trac accounts to the AuthUserFile
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /srv/www/trac/.htpasswd
Require valid-user
</LocationMatch>
</IfModule>
####################################################################
htpasswd -cb /srv/www/trac/.htpasswd tracuser1 passw0rd
chown -R apache:apache /srv/www/trac/test/
/etc/init.d/httpd restart
trac-admin /srv/www/trac/test permission add tracuser1 TRAC_ADMIN
locales setup 0.12.2 on CentOS 5.5 64
yum install babel
cd /opt/
wget -vc http://ftp.edgewall.com/pub/trac/Trac-0.12.2.tar.gz
tar xfvz /media/nfs_3.2/Trac-0.12.2.tar.gz
cd Trac-0.12.2/
make stats-pot update check compile stats locale='it fr de en_GB en_US sv'
cd trac/locale/
cp -av * /usr/lib/python2.4/site-packages/trac/locale/
Setup 0.10.5 on Ubuntu / Debian
aptitude install subversion libapache2-svn python2.4-pysqlite2 python2.4-subversion python-clearsilver sqlite3
wget -vc ftp.edgewall.com/pub/trac/trac-0.10.5.tar.gz
tar xfvz trac-0.10.5.tar.gz
cd trac-0.10.5/
python setup.py install
cd /opt/
mkdir projects
cd projects/
mkdir svn trac files
ll /etc/apache2/mods-available/
ll /etc/apache2/mods-enabled/
a2enmod dav_fs
cd /etc/apache2/
cd conf.d/
vim project.conf
#################################################################
ScriptAlias /projects /usr/share/trac/cgi-bin/trac.cgi
<Location "/projects">
SetEnv TRAC_ENV_PARENT_DIR "/opt/projects/trac"
</Location>
<LocationMatch "/projects/[^/]+/login">
AuthType Basic
AuthName "Trac Environment"
AuthUserFile /opt/projects/projects.passwd
Require valid-user
</LocationMatch>
<Location /svn>
DAV svn
SVNParentPath /opt/projects/svn
AuthType Basic
AuthName "Subversion Repositories"
AuthUserFile /opt/projects/projects.passwd
Require valid-user
</Location>
Alias /files /projects/files
<Location /files>
DAV On
AuthType Basic
AuthName "Files"
AuthUserFile /opt/projects/projects.passwd
Require valid-user
</Location>
<LocationMatch ^/files/[^/]+/(images|public)/>
<LimitExcept GET OPTIONS>
Require valid-user
</LimitExcept>
</LocationMatch>
################################################################
apache2ctl -t
/etc/init.d/apache2 reload
/etc/init.d/apache2 restart
cd /opt/projects/
svnadmin create svn/sandbox --fs-type fsfs
ll svn/
total 0
drwxr-xr-x 3 root root 1 2009-02-20 16:16 .
drwxr-xr-x 5 root root 1 2009-02-20 16:03 ..
drwxr-xr-x 7 root root 1 2009-02-20 16:16 sandbox
trac-admin trac/sandbox initenv
Creating a new Trac environment at /opt/projects/trac/sandbox
Trac will first ask a few questions about your environment
in order to initalize and prepare the project database.
Please enter the name of your project.
This name will be used in page titles and descriptions.
Project Name [My Project]> Sandbox
Please specify the connection string for the database to use.
By default, a local SQLite database is created in the environment
directory. It is also possible to use an already existing
PostgreSQL database (check the Trac documentation for the exact
connection string syntax).
Database connection string [sqlite:db/trac.db]> [enter]
Please specify the type of version control system,
By default, it will be svn.
If you don't want to use Trac with version control integration,
choose the default here and don't specify a repository directory.
in the next question.
Repository type [svn]> [enter]
Please specify the absolute path to the version control
repository, or leave it blank to use Trac without a repository.
You can also set the repository location later.
Path to repository [/path/to/repos]> /opt/projects/svn/sandbox
Please enter location of Trac page templates.
Default is the location of the site-wide templates installed with Trac.
Templates directory [/usr/share/trac/templates]> [enter]
Creating and Initializing Project
Installing default wiki pages
/usr/share/trac/wiki-default/TracReports => TracReports
/usr/share/trac/wiki-default/TracModPython => TracModPython
/usr/share/trac/wiki-default/TracNotification => TracNotification
/usr/share/trac/wiki-default/RecentChanges => RecentChanges
/usr/share/trac/wiki-default/TracRoadmap => TracRoadmap
/usr/share/trac/wiki-default/WikiDeletePage => WikiDeletePage
/usr/share/trac/wiki-default/TracChangeset => TracChangeset
/usr/share/trac/wiki-default/TracEnvironment => TracEnvironment
/usr/share/trac/wiki-default/TracFastCgi => TracFastCgi
/usr/share/trac/wiki-default/WikiMacros => WikiMacros
/usr/share/trac/wiki-default/TracLogging => TracLogging
/usr/share/trac/wiki-default/TracAccessibility => TracAccessibility
/usr/share/trac/wiki-default/TracTicketsCustomFields => TracTicketsCustomFields
/usr/share/trac/wiki-default/WikiHtml => WikiHtml
/usr/share/trac/wiki-default/WikiStart => WikiStart
/usr/share/trac/wiki-default/WikiPageNames => WikiPageNames
/usr/share/trac/wiki-default/WikiRestructuredText => WikiRestructuredText
/usr/share/trac/wiki-default/CamelCase => CamelCase
/usr/share/trac/wiki-default/TracTickets => TracTickets
/usr/share/trac/wiki-default/TracSupport => TracSupport
/usr/share/trac/wiki-default/InterMapTxt => InterMapTxt
/usr/share/trac/wiki-default/TracStandalone => TracStandalone
/usr/share/trac/wiki-default/TracRevisionLog => TracRevisionLog
/usr/share/trac/wiki-default/TracInterfaceCustomization => TracInterfaceCustomization
/usr/share/trac/wiki-default/TracAdmin => TracAdmin
/usr/share/trac/wiki-default/SandBox => SandBox
/usr/share/trac/wiki-default/TracGuide => TracGuide
/usr/share/trac/wiki-default/TracLinks => TracLinks
/usr/share/trac/wiki-default/InterTrac => InterTrac
/usr/share/trac/wiki-default/InterWiki => InterWiki
/usr/share/trac/wiki-default/TracQuery => TracQuery
/usr/share/trac/wiki-default/TracUnicode => TracUnicode
/usr/share/trac/wiki-default/TracUpgrade => TracUpgrade
/usr/share/trac/wiki-default/WikiNewPage => WikiNewPage
/usr/share/trac/wiki-default/TitleIndex => TitleIndex
/usr/share/trac/wiki-default/TracWiki => TracWiki
/usr/share/trac/wiki-default/TracBackup => TracBackup
/usr/share/trac/wiki-default/TracPermissions => TracPermissions
/usr/share/trac/wiki-default/TracImport => TracImport
/usr/share/trac/wiki-default/TracInstall => TracInstall
/usr/share/trac/wiki-default/TracPlugins => TracPlugins
/usr/share/trac/wiki-default/TracSyntaxColoring => TracSyntaxColoring
/usr/share/trac/wiki-default/TracTimeline => TracTimeline
/usr/share/trac/wiki-default/WikiRestructuredTextLinks => WikiRestructuredTextLinks
/usr/share/trac/wiki-default/TracBrowser => TracBrowser
/usr/share/trac/wiki-default/TracCgi => TracCgi
/usr/share/trac/wiki-default/TracIni => TracIni
/usr/share/trac/wiki-default/TracRss => TracRss
/usr/share/trac/wiki-default/WikiFormatting => WikiFormatting
/usr/share/trac/wiki-default/TracSearch => TracSearch
/usr/share/trac/wiki-default/WikiProcessors => WikiProcessors
Indexing repository
---------------------------------------------------------------------
Project environment for 'Sandbox' created.
You may now configure the environment by editing the file:
/opt/projects/trac/sandbox/conf/trac.ini
If you'd like to take this new project environment for a test drive,
try running the Trac standalone web server `tracd`:
tracd --port 8000 /opt/projects/trac/sandbox
Then point your browser to localhost/sandbox.
There you can also browse the documentation for your installed
version of Trac, including information on further setup (such as
deploying Trac to a real web server).
The latest documentation can also always be found on the project
website:
trac.edgewall.org
Congratulations!
htpasswd -c /opt/projects/projects.passwd nikoz
New password: [enter password]
Re-type new password: [enter password]
Adding password for user nikoz
chgrp -R www-data /opt/projects/
chmod -R g+w /opt/projects/
chmod -R g+s /opt/projects/
/etc/init.d/apache2 reload
* Reloading apache 2.0 configuration... [ ok ]
trac-admin trac/sandbox/
Trac [/opt/projects/trac/sandbox]> permission remove anonymous WIKI_CREATE WIKI_MODIFY BROWSER_VIEW
Trac [/opt/projects/trac/sandbox]> permission add authenticated WIKI_ADMIN BROWSER_VIEW MILESTONE_ADMIN
Trac [/opt/projects/trac/sandbox]> quit
to surf our new trac server:
http://serverweb/projects/
to checkout our projects via svn in a new local copy "localsandbox":
svn co serverweb/svn/sandbox localsandbox
Import old svn project into trac
Old SVN project: /opt/svn-repos/oldProject
New Trac project: /opt/projects/svn/newProject
Let's create a a new trac project
cd /opt/projects/
./add_tarc_prj.sh newProject "Project Name"
now we have 2 possibilities:
Method 1 (normal copy):
cp -av /opt/svn-repos/oldProject/db /opt/projects/svn/newProject/
trac-admin trac/newProject/ resync
chgrp -R www-data /opt/projects/
chmod -R g+w /opt/projects/
chmod -R g+s /opt/projects/
Method 2 (svn dump):
cd /opt/projects/
svnadmin dump /opt/svn-repos/oldProject >./oldProject.dump
svnadmin load /opt/projects/svn/newProject <./oldProject.dump
trac-admin trac/newProject/ resync
Resyncing repository history...
where ./add_tarc_prj.sh (bash script of previous tips):
#########
#!/bin/bash
#es. ./add_tarc_prj.sh db_prod_t "Produzione 2009temp"
echo creo progetto $1 con nome "$2"
cd /opt/projects/
svnadmin create svn/$1 --fs-type fsfs
##trac-admin trac/$1 initenv
trac-admin trac/$1 initenv "$2" "sqlite:db/trac.db" "svn" "/opt/projects/svn/$1" "/usr/share/trac/templates"
trac-admin trac/$1/ permission remove anonymous WIKI_CREATE WIKI_MODIFY BROWSER_VIEW
trac-admin trac/$1/ permission add authenticated WIKI_ADMIN BROWSER_VIEW MILESTONE_ADMIN
chgrp -R www-data /opt/projects/
chmod -R g+w /opt/projects/
chmod -R g+s /opt/projects/
##########