Tutorial: Redmine with SVN, Git and Gitosis on Ubuntu 8.04
This is a tutorial for installing redmine on Ubuntu 8.04 with SVN and Git integration (managed by Gitosis and a redmine gitosis plugin).
UPDATE #1 - 2011-04-23: New Tutorial for Redmine with Git and Gitosis on Ubuntu 11.04:http://www.x2on.de/2011/04/23/tutorial-redmine-with-git-and-gitosis-on-ubuntu-11-04/
1. Install redmine
Get recent trunk version from github (currently 1.02)
apt-get install git-core
mkdir /var/www
cd /var/www
git clone git://github.com/edavis10/redmine.gitInstall packages
apt-get install ruby ruby1.8-dev libgemplugin-ruby libgemplugin-ruby1.8  mysql-server apache2-mpm-prefork wget libruby-extras libruby1.8-extras rails subversion rake apache2-prefork-dev libapache-dbi-perl libapache2-mod-perl2 libdigest-sha1-perl libapache2-svn libmysqlclient15-dev build-essential libcurl4-openssl-dev cronCreate database
mysql -u root -p
    
$> create database redmine character set utf8;
$> create user 'redmine'@'localhost' identified by 'my_password';
$> grant all privileges on redmine.* to 'redmine'@'localhost';Configure Database Settings
cp redmine/config/database.yml.example redmine/config/database.yml
nano redmine/config/database.ymlproduction:
	adapter: mysql
	database: redmine
 	host: localhost
 	username: redmine
	password: 47w8t2938qfge2
 	encoding: utf8Install Rubygem (Ubuntu 8.04 has an older version)
wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz
tar xvfz rubygems-1.3.7.tgz
cd rubygems-1.3.7
ruby setup.rb
ln -s /usr/bin/gem1.8 /usr/bin/gemInstall Rails + Rack
gem install rails -v=2.3.5
gem install rack -v=1.0.1
gem install mysqlConfigure redmine
cd /var/www/redmine
chown -R www-data:www-data files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets
rake generate_session_store
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_dataTest redmine
ruby script/server webrick -e productionNow you can check http://my_domain.com:3000 if everything works
2. Apache Integration
Install passenger (Modify version numbers if needed)
gem install passenger
echo "LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.0/ext/apache2/mod_passenger.so" > /etc/apache2/mods-available/passenger.load
ln -s /etc/apache2/mods-available/passenger.load /etc/apache2/mods-enabled/passenger.loadnano /etc/apache2/mods-available/passenger.confPassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.0
PassengerRuby /usr/bin/ruby1.8Configure Apache
nano /etc/apache2/sites-available/my_domainServerName my_domain.com
DocumentRoot /var/www/redmine/public
ServerAdmin user@example.com
LogLevel warn
ErrorLog /var/log/apache2/redmine_error
CustomLog /var/log/apache2/redmine_access combined
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from allnano /etc/apache2/apache2.confAdd this at the end of the file:
Include /etc/apache2/mods-available/passenger.confActivate your site
ln -s /etc/apache2/sites-available/my_domain /etc/apache2/sites-enabled/my_domainRemove default entry
rm /etc/apache2/sites-enabled/000-defaultRestart Apache and it should work
/etc/init.d/apache2 restart3. Subversion integration
ln -s /var/www/redmine/extra/svn/Redmine.pm /usr/lib/perl5/Apache/Redmine.pm
nano /etc/apache2/sites-available/svn# /svn location for users
     PerlLoadModule Apache::Redmine
    
       DAV svn
       SVNParentPath "/var/repos/svn"
       Order deny,allow
       Deny from all
       Satisfy any
    
       PerlAccessHandler Apache::Authn::Redmine::access_handler
       PerlAuthenHandler Apache::Authn::Redmine::authen_handler
       AuthType Basic
       AuthName "Redmine SVN Repository" 
    
       #read-only access
    
          Require valid-user
          Allow from my_domain.com
          Allow from localhost
           Satisfy any
    
       # write access
         Require valid-user
    
       ## Mysql-Settings
       RedmineDSN "DBI:mysql:database=redmine;host=localhost"
       RedmineDbUser "redmine"
       RedmineDbPass "my_password"
    
    #Security:
    
          Order deny,allow
          Allow from localhost
          Allow from my_domain.com
          Deny from allln -s /etc/apache2/sites-available/svn /etc/apache2/sites-enabled/svn
mkdir -p /var/repos/svn
chown -R www-data:www-data /var/repos
chmod 0750 /var/repos/svnGo to Administration - Settings - Repositories on your redmine site and enable “WS for repository management”. Then generate an API key.
Test the automatic generation:
ruby /var/www/redmine/extra/svn/reposman.rb --redmine my_domain.com --svn-dir /var/repos/svn --owner www-data --url http://my_domain.com/svn --verbose --key=my_api_keyIf everything works create an crontab for this:
nano /etc/cron.d/redmine10 * * * * root ruby /var/www/redmine/extra/svn/reposman.rb --redmine my_domain.com --svn-dir /var/repos/svn --owner www-data --url http://my_domain.com/svn --verbose --key=my_api_keyNow you are ready to use SVN with redmine
4. Git integration
Install needed packages:
gem install inifile
apt-get install libnet-ssh-ruby1.8 python-setuptools
gem install lockfile
easy_install pip
pip install virtualenvAdd an user for gitosis:
adduser --system --shell /bin/bash --gecos 'Git Administrator' --group --disabled-password --home /opt/gitosis gitCreate an ssh-key (with empty passphrase):
sudo -H -u git ssh-keygen -t dsaCreate an Virtual Environment for python and install gitosis:
sudo -u git virtualenv ~git/virtualenv
sudo -u git ~git/virtualenv/bin/pip install git+git://eagain.net/gitosis.git
echo "source $HOME/virtualenv/bin/activate" | sudo -u git tee -a ~git/.bashrc > /dev/null
sudo -u git cat ~git/.ssh/id_dsa.pub | sudo -H -u git ~git/virtualenv/bin/gitosis-initInstall redmine-gitosis plugin:
cd /var/www/redmine/
chown -R www-data:www-data /var/www/redmine
script/plugin install git://github.com/rocket-rentals/redmine-gitosis.gitPatch the plugin:
nano /var/www/redmine/vendor/plugins/redmine-gitosis/lib/gitosis.rbrequire 'lockfile'
    require 'inifile'
    require 'net/ssh'
    
    module Gitosis
      # server config
      GITOSIS_URI = 'git@my_domain.com:gitosis-admin.git'
      GITOSIS_BASE_PATH = '/opt/gitosis/repositories/'
    
      # commands
      ENV['GIT_SSH'] = SSH_WITH_IDENTITY_FILE = File.join(RAILS_ROOT, 'vendor/plugins/redmine-gitosis/extra/ssh_with_identity_file.sh')Configure SSH:
mkdir /var/www/.ssh
chown -R www-data:www-data /var/www/.ssh
sudo -u www-data ssh my_domain.comMigrate plugin:
rake db:migrate_plugins RAILS_ENV=productionRemove standard ssh-key and change it to the created one:
rm /var/www/redmine/vendor/plugins/redmine-gitosis/extra/ssh/private_key
cp ~git/.ssh/id_dsa /var/www/redmine/vendor/plugins/redmine-gitosis/extra/ssh/private_key
chown -R www-data:www-data /var/www/redmineTest if the www-data user can read the key:
sudo -u www-data cat /var/www/redmine/vendor/plugins/redmine-gitosis/extra/ssh/private_keyAdd the www-data user to the git group:
usermod -a -G git www-dataHave fun!
Source:
http://brantinteractive.com/2007/02/16/getting-the-mysql-gem-installed-on-ubuntu/ http://www.redmine.org/wiki/1/RedmineInstall http://wiki.ousli.org/index.php/Redmine_in_Ubuntu_Jaunty_9.04 http://www.redmine.org/wiki/1/HowTo_Install_Redmine_in_Ubuntu http://www.redmine.org/wiki/redmine/Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl http://xdissent.com/2010/05/04/github-clone-with-redmine/ http://wiki.ubuntuusers.de/virtualenv