Welcome, Guest :: Blog Home | Login | Register

Article
Fedora 8 Linode Server SVN and Trac

2008-04-14 19:28:28 Tags: fedora svn trac linode

I created this document as a record of how to setup subversion with trac integration on a Linode VPS server running
Fedora 8 OS. I am posting the doc here for others who may need help getting there development environment setup. Hope you find it useful. If you have an questions, feel free to give me a shout.

Note: Steps 1-19 are commands run on remote server.

1) Install SVN and Trac.

Code:
yum install trac svn mod_dav_svn


2) Let's make our directory structure including any parent directories all in one go with the -p option, one for svn
repo and one for trac.

Code:
mkdir -p /var/svn/svn.mydomain.com/repo
mkdir -p /var/trac/trac.mydomain.com/repo


3) With svn installed we use the following command to create our repo.

Code:
svnadmin create --fs-type fsfs /var/svn/svn.mydomain.com/repo


4) Let's make our first import/revision by using svn to create our revision structure.

Code:
svn mkdir file:///var/svn/svn.mydomain.com/repo/branches file:///var/svn/svn.mydomain.com/repo/tags file:///var/svn/svn.mydomain.com/repo/trunk -m "Initial Structure"


5) Now we create our trac files.

Code:
trac-admin /var/trac/trac.mydomain.com/repo initenv

- Enter name of project.
- Just press enter to use SQLite
- Just press enter to use svn integration.
- Templates directory defaults to /usr/share/trac/templates
- Path to repo: /var/svn/svn.mydomain.com/repo


6) Now we setup proper permissions on our directory structure.

Code:
chown -R apache.apache /var/svn/svn.mydomain.com/repo
chown -R apache.apache /var/trac/trac.mydomain.com/repo


7) Modify subversion config.

Code:
vim /etc/httpd/conf.d/subversion.conf


8) Add the following.

Code:
<Location /var/svn/svn.mydomain.com/repo>
        DAV svn
        SVNPath /var/svn/svn.mydomain.com/repo>
        AuthType Basic
        AuthName "Repo Repository"
        AuthzSVNAccessFile /var/svn/svn.mydomain.com/svn-acl-conf
        AuthUserFile /var/svn/svn.mydomain.com/repo.htpasswd
        Require valid-user
</Location>


9) Create empty .htpasswd file for svn authentication.

Code:
touch /var/svn/svn.mydomain.com/repo.htpasswd


10) Add user to .htpasswd auth file, you'll be prompted for password.

Code:
htpasswd -m /var/svn/svn.mydomain.com/repo.htpasswd username


11) Now we create our ACL authentication.

Code:
vim /var/svn/svn.mydomain.com/svn-acl-conf


12) Add our user to svn-acl-conf.

Code:
[repo:/]
username =  rw


13) Modify trac config.

Code:
vim /etc/httpd/conf.d/trac.conf


14) Add the following pre to trac.conf.

Code:
<Location /trac/repo>
	SetHandler mod_python
	PythonHandler trac.web.modpython_frontend
	PythonOption TracEnv /var/trac/trac.mydomain.com/repo
	PythonOption TracUriRoot /trac/repo
</Location>
<Location "/trac/repo/login">
	AuthType Basic
	AuthName "trac"
	AuthUserFile /var/trac/trac.mydomain.com/repo.htpasswd
	Require valid-user
</Location>


15) Create the .htpasswd file for trac authentication.

Code:
touch /var/trac/trac.mydomain.com/repo.htpasswd


16) Give our user trac-admin permission.

Code:
trac-admin /var/trac/trac.mydomain.com/repo permission add username TRAC_ADMIN


17) Setup apache.

Code:
vim /etc/httpd/conf/httpd.conf


18) Add virtual host config.

Code:
# Trac Configuration
<VirtualHost *:80>
  ServerName trac.mydomain.com
  Alias /trac/ /usr/share/trac/htdocs
  <Directory "/usr/share/trac/htdocs/">

      Options Indexes MultiViews
      AllowOverride None
      Order allow,deny
      Allow from all
  </Directory>
  <Location />
      SetHandler mod_python
      PythonHandler trac.web.modpython_frontend
      PythonInterpreter main_interpreter
      PythonOption TracEnv /var/trac/trac.mydomain.com/repo/
      PythonOption TracUriRoot /
        AuthType Basic
        AuthName "trac"
        AuthUserFile /var/trac/trac.mydomain.com/repo.htpasswd
        Require valid-user
  &glt;/Location>
</VirtualHost>


19) Restart Apache.

Code:
service httpd restart


20) Import our project files from local box.

Code:
svn import -m "Initial Import" --username=username /srv/www/repo http://svn.mydomain.com/trunk


21) Change into server.

Code:
cd /var/www/mydomain.com


22) Checkout to live site.

Code:
svn co --username=stephen http://svn.mydomain.com/trunk .


23) Use the copy command to version the live site.

Code:
svn copy --username=stephen http://svn.mydomain.com/trunk http://svn.mydomain.com/tags/deploy -m "Deploy to live  server."


24) Restart Apache

Code:
service httpd restart


25) If you do not use -m for comments, then enter this command if you get the dreaded "svn: None of the environment variables
SVN_EDITOR, VISUAL or EDITOR is set" error.

Code:
EDITOR=vim; export EDITOR


That's all folks!

Comments:

There are no comments.

Please login or register to post comment.