如何在Ubuntu 14.04上使用Apache2、Phusion Passenger、MySQL、Subversion和Git(Gitolite)安装Redmine 3.0.x¶
- 目录
- 如何在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