项目

常规

个人资料

操作

如何在Ubuntu 14.04上使用Apache2、Phusion Passenger、MySQL、Subversion和Git(Gitolite)安装Redmine 3.0.x

基于Debian HowTo,来自André Domarques

安装依赖项

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

我不知道是否需要每个包,但这是有效的。

配置Subversion

sudo mkdir -p /var/lib/svn
sudo chown -R www-data:www-data /var/lib/svn
sudo a2enmod dav_svn

打开配置文件

sudo nano /etc/apache2/mods-enabled/dav_svn.conf

取消注释以下行

<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

为从仓库读取添加redmine用户

sudo htpasswd -c /etc/apache2/dav_svn.passwd redmine

sudo service apache2 restart

创建仓库

sudo svnadmin create --fs-type fsfs /var/lib/svn/my_repository
sudo chown -R www-data:www-data /var/lib/svn

打开仓库访问配置文件

sudo nano /etc/apache2/dav_svn.authz

在配置文件中为redmine添加对仓库的访问权限

[my_repository:/]
redmine = r

安装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

用户和SSH密钥

用户

为Redmine创建一个用户(redmine)和另一个为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

为redmine用户生成一个ssh密钥。此用户将被用作Gitolite的管理员。密钥的名称应为redmine_gitolite_admin_id_rsa。

sudo su - redmine
ssh-keygen -t rsa -N '' -f ~/.ssh/redmine_gitolite_admin_id_rsa
exit

配置Gitolite

sudo dpkg-reconfigure gitolite
输入以下数据
  • 用户:git
  • 仓库路径:/opt/gitolite
  • 管理员SSH密钥:/opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub

Visudo配置

sudo visudo

添加以下行

# temp - *REMOVE* after installation
redmine    ALL=(ALL)      NOPASSWD:ALL

# redmine gitolite integration
redmine    ALL=(git)      NOPASSWD:ALL
git        ALL=(redmine)  NOPASSWD:ALL

请注意,redmine用户将能够运行root命令,但这只是为了简化下一步。安装后请删除此行。

安装Redmine

先决条件

sudo su - redmine
gpg --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
exit

必须注销并再次登录

sudo su - redmine
rvm install 2.1.4
exit

Redmine

示例版本3.0.4,对于其他版本请更改版本号

sudo su - redmine
wget https://redmine.ruby-lang.org.cn/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

执行以下MySQL命令

CREATE DATABASE redmine character SET utf8;
CREATE user 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL privileges ON redmine.* TO 'redmine'@'localhost';
exit

配置Redmine数据库连接

sudo su - redmine
sudo cp redmine/config/database.yml.example redmine/config/database.yml

打开数据库配置文件

sudo nano redmine/config/database.yml

在配置文件中更改用户名和密码

database.yml:
production:
 adapter: mysql2
 database: redmine
 host: localhost
 username: redmine
 password: my_password
 encoding: utf8

配置

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托管

下载

例如,对于版本1.1.1,更改其他版本号的版本

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

配置

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

配置GL_GITCONFIG_KEYS

本版本现在使用一些钩子,默认情况下在gitolite v2上将被var GL_GITCONFIG_KEYS阻止。在gitolite v3上,此变量名为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.

配置自动仓库初始化

要配置新功能“自动仓库初始化”(可选),需要自定义gitolite.conf文件。

cd ~
git clone git@localhost:gitolite-admin.git
cd gitolite-admin

打开gitolite配置文件

nano conf/gitolite.conf

添加以下配置

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

请记住,此仓库将由redmine及其插件管理。

安装

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

移除redmine root访问

sudo visudo

移除以下条目

# temp - *REMOVE* after installation
redmine    ALL=(ALL)      NOPASSWD:ALL

安装Phusion Passenger

添加仓库

为Phusion Passenger添加仓库

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
sudo apt-get install apt-transport-https ca-certificates

打开仓库配置文件

sudo nano /etc/apt/sources.list.d/passenger.list

添加以下仓库源

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

安装

sudo apt-get update
sudo apt-get install libapache2-mod-passenger

配置

打开passenger配置文件

sudo nano /etc/apache2/mods-available/passenger.conf

将以下行添加到passenger配置文件中

PassengerUserSwitching on
PassengerUser redmine
PassengerGroup redmine

打开apache2配置文件

sudo nano /etc/apache2/sites-available/000-default.conf

将以下部分添加到apache2配置文件中

<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

生成新密钥

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

启动Redmine

Redmine现在应可在您的主机上使用

http://your_ip_or_fqdn/redmine

登录数据
用户名: admin
密码: admin

Redmine配置

配置Redmine默认URL(重要

管理 > 设置 > 通用
http://your_ip_or_fqdn/redmine/settings?tab=general

默认情况下设置为localhost:3000,将其更改为您的IP或FQDN。your_ip_or_fqdn/redmine/

设置可用的仓库

管理 > 设置 > 仓库
http://your_ip_or_fqdn/redmine/settings?tab=repositories

取消选中您系统中未安装的选项。仅为了避免不必要的日志消息。

启用xitolite以使用Redmine Git托管插件

Redmine Git托管插件

首先,检查配置

管理 > Redmine Git托管插件 > 配置测试
http://your_ip_or_fqdn/redmine/settings/plugin/redmine_git_hosting?tab=gitolite_config_test

确保所有设置都正确(用户、路径、版本等)。

将您的IP或FQDN设置为SSH、HTTP和/或HTTPS

管理 > Redmine Git托管插件 > 访问
http://your_ip_or_fqdn/redmine/settings/plugin/redmine_git_hosting?tab=gitolite_config_access

管理 > Redmine Git托管插件 > 钩子
http://your_ip_or_fqdn/redmine/settings/plugin/redmine_git_hosting?tab=gitolite_config_hooks

钩子:http://your_ip_or_fqdn/redmine

这些设置也将用于git操作(克隆、拉取、推送等)。

电子邮件配置

smtp和加密的示例

打开redmine配置文件

sudo nano /usr/share/redmine/config/configuration.yml

将以下内容添加到redmine配置文件中

# 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

您可以使用测试邮件功能在Web界面中检查电子邮件配置

自动更新Subversion仓库视图

在Web界面中的项目存档设置中,需要启用项目存档的Web服务并生成一个API密钥

以下cronjob每15分钟更新redmine到当前的subversion更改集

sudo crontab -e

添加cronjob

*/15 *    * * * curl "http://yourhost/redmine/sys/fetch_changesets?key=APIKEY" > /dev/null

如果你的托管服务不提供cron作业配置,则可以使用以下这些外部服务
https://www.easycron.com.

SSL、HTTPS和智能HTTPS(Git)

自己的证书

创建私有密钥

sudo mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
sudo openssl genrsa -des3 -out server.key 1024

创建CSR(证书签名请求)

cd /etc/apache2/ssl
sudo openssl req -new -key server.key -out server.csr

移除私有密钥的密码

cd /etc/apache2/ssl
sudo cp server.key server.key.org
sudo openssl rsa -in server.key.org -out server.key

生成自签名证书

cd /etc/apache2/ssl
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Apache2配置

启用SSL模块

sudo a2enmod ssl

修改Apache2配置

sudo nano /etc/apache2/sites-available/default-ssl.conf

以下配置是必需的

<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>

激活新配置

sudo a2ensite default-ssl

智能HTTPS客户端(Git)

对于客户端,需要禁用证书验证。使用Git bash

git config --global http.sslverify false

注意: 这可能在使用外部仓库时存在安全风险!

故障排除

日志

如果在安装过程中遇到一些问题,您可以检查以下文件

  • /opt/gitolite/.gitolite/logs/gitolite-`date +%Y\-%m`.log
  • /opt/redmine/log/git_hosting.log
  • /var/log/apache2/error.log

如果你使用multitail

multitail /opt/gitolite/.gitolite/logs/gitolite-`date +%Y\-%m`.log /opt/redmine/log/git_hosting.log /var/log/apache2/error.log

Alex Nnm 更新 8年前 · 12次修订