HowTo Install Redmine 3.0.x on Ubuntu 14.04 with Apache2, Phusion Passenger, MySQL, Subversion and Git (Gitolite)¶
- Table of contents
- HowTo Install Redmine 3.0.x on Ubuntu 14.04 with Apache2, Phusion Passenger, MySQL, Subversion and Git (Gitolite)
- Installing dependencies
- Configure Subversion
- Installing Ruby
- Users and SSH keys
- Installing of Redmine
- Redmine Git Hosting
- Remove redmine root access
- Installing Phusion Passenger
- Start Redmine
- Redmine configuration
- Redmine Git Hosting Plugin
- e-Mail configuration
- Autoupdate Subversion repository view
- SSL, HTTPS and Smart-HTTPS (Git)
- Troubleshooting
Based on Debian HowTo from André Domarques
Installing dependencies¶
sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server php5-mysql libapache2-mod-perl2 libcurl4-openssl-dev libssl-dev apache2-prefork-dev libapr1-dev libaprutil1-dev libmysqlclient-dev libmagickcore-dev libmagickwand-dev curl git-core gitolite patch build-essential bison zlib1g-dev libssl-dev libxml2-dev libxml2-dev sqlite3 libsqlite3-dev autotools-dev libxslt1-dev libyaml-0-2 autoconf automake libreadline6-dev libyaml-dev libtool imagemagick apache2-utils ssh zip libicu-dev libssh2-1 libssh2-1-dev cmake libgpg-error-dev subversion libapache2-svn
I don't know if every package needed, but it works.
Configure Subversion¶
sudo mkdir -p /var/lib/svn sudo chown -R www-data:www-data /var/lib/svn sudo a2enmod dav_svn
Open config file
sudo nano /etc/apache2/mods-enabled/dav_svn.conf
Uncomment following lines
<Location /svn> DAV svn SVNParentPath /var/lib/svn AuthType Basic AuthName "My repository" AuthUserFile /etc/apache2/dav_svn.passwd AuthzSVNAccessFile /etc/apache2/dav_svn.authz <LimitExcept GET PROFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
sudo a2enmod authz_svn
Add the redmine user for reading from repository
sudo htpasswd -c /etc/apache2/dav_svn.passwd redmine sudo service apache2 restart
Create the repository
sudo svnadmin create --fs-type fsfs /var/lib/svn/my_repository sudo chown -R www-data:www-data /var/lib/svn
Open file for configuration of repository access
sudo nano /etc/apache2/dav_svn.authz
Add access rights for redmine to the repository in the config file
[my_repository:/] redmine = r
Installing Ruby¶
sudo apt-get install software-properties-common sudo add-apt-repository ppa:brightbox/ruby-ng sudo apt-get update sudo apt-get -y install ruby2.1 ruby-switch ruby2.1-dev ri2.1 libruby2.1 libssl-dev zlib1g-dev sudo ruby-switch --set ruby2.1
Users and SSH keys¶
Users¶
Create an user for Redmine (redmine) and another for Gitolite (git):
sudo adduser --system --shell /bin/bash --gecos 'Git Administrator' --group --disabled-password --home /opt/gitolite git sudo adduser --system --shell /bin/bash --gecos 'Redmine Administrator' --group --disabled-password --home /opt/redmine redmine
Generate a ssh-key for redmine user. This user will be used as admin of Gitolite. The name of key should be redmine_gitolite_admin_id_rsa.
sudo su - redmine ssh-keygen -t rsa -N '' -f ~/.ssh/redmine_gitolite_admin_id_rsa exit
Configuring Gitolite¶
sudo dpkg-reconfigure gitoliteType data bellow:
- user: git
- repos path: /opt/gitolite
- admin ssh-key: /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub
Visudo configuration¶
sudo visudo
Add the following lines:
# temp - *REMOVE* after installation redmine ALL=(ALL) NOPASSWD:ALL # redmine gitolite integration redmine ALL=(git) NOPASSWD:ALL git ALL=(redmine) NOPASSWD:ALL
Note that redmine user will be able to run root commands, but this is just to simplify the next steps. REMOVE this line after installation.
Installing of Redmine¶
Prerequist¶
sudo su - redmine gpg --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -sSL https://get.rvm.io | bash -s stable exit
Its necessary to logout and login again
sudo su - redmine rvm install 2.1.4 exit
Redmine¶
Exampe for version 3.0.4, change the version number for other releases
sudo su - redmine wget http://www.redmine.org/releases/redmine-3.0.4.tar.gz tar zxf redmine-3.0.4.tar.gz rm redmine-3.0.4.tar.gz ln -s /opt/redmine/redmine-3.0.4 redmine exit
MySQL¶
sudo mysql -u root -p
Execute following lines to MySQL
CREATE DATABASE redmine character SET utf8; CREATE user 'redmine'@'localhost' IDENTIFIED BY 'my_password'; GRANT ALL privileges ON redmine.* TO 'redmine'@'localhost'; exit
Configure Redmine database connection
sudo su - redmine sudo cp redmine/config/database.yml.example redmine/config/database.yml
Open database config file
sudo nano redmine/config/database.yml
Change the username and the password in the config file
database.yml: production: adapter: mysql2 database: redmine host: localhost username: redmine password: my_password encoding: utf8
Configuration¶
gem install bundler cd redmine/ bundle install --without development test postgresql sqlite rake generate_secret_token RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data exit
Redmine Git Hosting¶
Download¶
Exampe for version 1.1.1, change the version number for other releases
sudo su - redmine cd /opt/redmine/redmine/plugins git clone https://github.com/jbox-web/redmine_bootstrap_kit.git git clone https://github.com/jbox-web/redmine_git_hosting.git cd redmine_git_hosting git checkout 1.1.1
Configure¶
ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa /opt/redmine/redmine/plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub /opt/redmine/redmine/plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa.pub ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa /opt/redmine/.ssh/id_rsa ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub /opt/redmine/.ssh/id_rsa.pub
Configure GL_GITCONFIG_KEYS¶
This version now use some hooks that, by default on gitolite v2, will be blocked by the var GL_GITCONFIG_KEYS. On gitolite v3, this var is named GIT_CONFIG_KEYS.
sudo su - git sed -i 's/$GL_GITCONFIG_KEYS = ""/$GL_GITCONFIG_KEYS = ".*"/g' /opt/gitolite/.gitolite.rc exit
The above *sed* command may not work so better check the /opt/gitolite/.gitolite.rc for changes afterwards or just use nano.
Configure Automatic Repository Initialization¶
To configure the new feature "Automatic Repository Initialization" (optional), is necessary to customize the gitolite.conf file.
cd ~ git clone git@localhost:gitolite-admin.git cd gitolite-admin
Open gitolite config file
nano conf/gitolite.conf
Add following config
repo @all RW+ = admin
git config --global user.email "you@example.com" git config --global user.name "Your Name" git commit -m 'Automatic Repository Initialization' conf/gitolite.conf git push cd ~ rm -rf gitolite-admin
Remember that this repository will be managed by redmine and their plugin.
Installation¶
cd redmine bundle install --without development test postgresql sqlite RAILS_ENV=production rake redmine:plugins:migrate RAILS_ENV=production rake redmine_git_hosting:update_repositories RAILS_ENV=production rake redmine_git_hosting:fetch_changesets RAILS_ENV=production rake redmine_git_hosting:restore_default_settings RAILS_ENV=production rake redmine_git_hosting:install_hook_files RAILS_ENV=production rake redmine_git_hosting:install_hook_parameters RAILS_ENV=production rake redmine_git_hosting:install_gitolite_hooks exit
Remove redmine root access¶
sudo visudo
REMOVE following entry
# temp - *REMOVE* after installation redmine ALL=(ALL) NOPASSWD:ALL
Installing Phusion Passenger¶
Add repository¶
Add repository for Phusion Passenger
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7 sudo apt-get install apt-transport-https ca-certificates
Open repository config file
sudo nano /etc/apt/sources.list.d/passenger.list
Add following repository source
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
sudo chown root: /etc/apt/sources.list.d/passenger.list sudo chmod 600 /etc/apt/sources.list.d/passenger.list
Installing¶
sudo apt-get update sudo apt-get install libapache2-mod-passenger
Configuration¶
Open passenger config file
sudo nano /etc/apache2/mods-available/passenger.conf
Add following line to passenger config file
PassengerUserSwitching on PassengerUser redmine PassengerGroup redmine
Open apache2 config file
sudo nano /etc/apache2/sites-available/000-default.conf
Add following part to apache2 config file
<Directory /var/www/html/redmine> RailsBaseURI /redmine PassengerResolveSymlinksInDocumentRoot on </Directory>
sudo a2enmod passenger sudo ln -s /opt/redmine/redmine/public/ /var/www/html/redmine sudo service apache2 restart
Generate new secret:
sudo su - redmine cd redmine rake generate_secret_token rake db:migrate RAILS_ENV=production rake redmine:plugins:migrate RAILS_ENV=production rake tmp:cache:clear rake tmp:sessions:clear exit
Start Redmine¶
Remine should now available at your host
http://your_ip_or_fqdn/redmine
Login data:
Username: admin
Password: admin
Redmine configuration¶
Configure the Redmine default URL (important):
Administration > Settings > General
http://your_ip_or_fqdn/redmine/settings?tab=general
This is set, by default, to localhost:3000, change it to your IP or FQDN. your_ip_or_fqdn/redmine/
Set the available repositories¶
Administration > Settings > Repositories
http://your_ip_or_fqdn/redmine/settings?tab=repositories
Uncheck what you don't have installed on your system. Just to avoid unnecessary log message.
Enable xitolite for using the Redmine Git Hosting plugin
Redmine Git Hosting Plugin¶
First of all, check the configuration¶
Administration > Redmine Git Hosting Plugin > Config Test
http://your_ip_or_fqdn/redmine/settings/plugin/redmine_git_hosting?tab=gitolite_config_test
Ensure if all settings are correct (users, paths, versions etc.).
Set your IP or FQDN to SSH, HTTP and/or HTTPS¶
Administration > Redmine Git Hosting Plugin > Access
http://your_ip_or_fqdn/redmine/settings/plugin/redmine_git_hosting?tab=gitolite_config_access
Administration > Redmine Git Hosting Plugin > Hooks
http://your_ip_or_fqdn/redmine/settings/plugin/redmine_git_hosting?tab=gitolite_config_hooks
Hooks: http://your_ip_or_fqdn/redmine
Those settings will be also used on git operations (clone, pull, push etc.).
e-Mail configuration¶
Example for smtp and encryption
Open redmine config file
sudo nano /usr/share/redmine/config/configuration.yml
Add following to redmine config file
# Outgoing email settings production: email_delivery: delivery_method: :smtp smtp_settings: enable_starttls_auto: true address: smtp.host.com port: 587 domain: host.com authentication: :login user_name: myname password: mypassword
You can check the e-Mail config in web interface with testmail function
Autoupdate Subversion repository view¶
In the project archive settings over web interface its needed to enable the web service for project archives and generate a api key
The following cronjob updates redmine to current subversion changesets every 15 minutes
sudo crontab -e
Add the cronjob
*/15 * * * * curl "http://yourhost/redmine/sys/fetch_changesets?key=APIKEY" > /dev/null
If your hosting does not offer cron job configuration then you can use external services like these:
https://www.easycron.com.
SSL, HTTPS and Smart-HTTPS (Git)¶
Own certificate¶
Create Private Key
sudo mkdir /etc/apache2/ssl cd /etc/apache2/ssl sudo openssl genrsa -des3 -out server.key 1024
Create CSR (Certificate Signing Request)
cd /etc/apache2/ssl sudo openssl req -new -key server.key -out server.csr
Remove of the passphrase vom private key
cd /etc/apache2/ssl sudo cp server.key server.key.org sudo openssl rsa -in server.key.org -out server.key
Generate selfsigned certificate
cd /etc/apache2/ssl sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Configuration of apache2¶
Enable SSL module
sudo a2enmod ssl
Modification of apache2 configuration
sudo nano /etc/apache2/sites-available/default-ssl.conf
Following config is needed:
<IfModule mod_ssl.c> ... <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key <Directory /var/www/html/redmine> RailsBaseURI /redmine PassengerResolveSymlinksInDocumentRoot on </Directory> </VirtualHost> ... </IfModule>
Activate the new configuration
sudo a2ensite default-ssl
Smart-HTTPS client (Git)¶
For the client is needed to disable certificate verification. With Git bash:
git config --global http.sslverify false
Caution: This can be a security risk at access to foreign repositorys!
Troubleshooting¶
Logs¶
If you have some trouble during the installation, you can check the following files:
- /opt/gitolite/.gitolite/logs/gitolite-`date +%Y\-%m`.log
- /opt/redmine/log/git_hosting.log
- /var/log/apache2/error.log
If you use multitail:
multitail /opt/gitolite/.gitolite/logs/gitolite-`date +%Y\-%m`.log /opt/redmine/log/git_hosting.log /var/log/apache2/error.log
Updated by Alex Nnm over 7 years ago · 12 revisions