Zero's Blog

redmine项目管理搭建

系统环境

ubuntu server 16.04 LTS

开发工具

1
2
sudo apt-get install build-essential
sudo apt-get install subversion git

安装顺序:rvm ruby rails nginx mysql redmine


安装过程

rvm + ruby + rails

1. 安装 rvm (用于管理多个 ruby 版本的一个管理器)

1
2
3
4
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
//如果上面的连接失败,可以尝试:
curl -L https://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable

2. 载入 rvm 环境

1
source /etc/profile.d/rvm.sh

3. 检查 rvm 是否安装成功

1
2
rvm -v
rvm 1.27.0 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

4. 安装 ruby 环境

1
2
rvm requirements //更新依赖包
rvm install 2.3.0 //安装较为稳定的 2.3.0 版本

5. 设置 ruby 默认版本

1
rvm use 2.3.0 --default

6. 变更镜像

1
2
3
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org
gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org
gem sources -l //查看在用的 gem 源

7. 安装 bundler

1
gem install bundler

8. 安装 rails

1
gem install rails

9. 检查安装包版本

1
2
3
4
5
6
7
8
9
10
11
rvm -v
1.27.0
ruby -v
2.3.0p0
rails -v
5.0.0
bundler -v
1.12.5

10. 可选升级

1
gem update --system


nginx

1. 安装 passenger

1
gem install passenger

2. 安装 curl 模块

1
apt-get install libcurl4-openssl-dev

3. 安装 pcre

1
2
3
4
5
6
7
apt-get install libpcre3 libpcre3-dev
// 或者采用源码安装
wget https://sourceforge.net/projects/pcre/files/pcre/8.39/pcre-8.39.tar.gz
tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39
./configure
make & make install

4. 安装nginx

1
passenger-install-nginx-module

5. 配置nginx配置

1
2
3
4
5
6
7
location / {
#root html;
#index index.html index.htm;
root /opt/redmine-3.3.0/public;
index index.html index.htm;
passenger_enabled on;
}

mysql

1
2
apt-get install mysql-server
mysql_secure_installation

redmine

1. 将软件包安装到 /opt 目录下

1
2
3
4
5
// 下载软件包
cd /opt/
wget http://www.redmine.org/releases/redmine-3.3.0.tar.gz
tar -zxvf redmine-3.3.0.tar.gz
cd redmine-3.3.0

2. 变更 gem 安装源

1
2
3
// 编辑 Gemfile,将 source 文件替换为淘宝源
vim /opt/redmine-3.3.0/Gemfile
source 'https://ruby.taobao.org'

3. 设置 redmine 数据库、用户名、口令

1
2
3
4
5
mysql -u root -p
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'redmine_pass';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
flush privileges;

4. 设置连接数据库

1
2
3
// 编辑数据库配置文件
cp config/database.yml.example config/database.yml
vim config/database.yml

5. 安装依赖包,根据 bundle install --without development test 的输出提示,安装缺少的依赖包

1
2
3
4
5
6
7
8
9
bundle install --without development test
// 可能需要安装的依赖包
apt-get install imagemagick //生成图片的依赖库。
apt-get install libmagickwand-dev
apt-get install libmysqlclient-dev
gem install mysql2 -v '0.3.21'
gem install rbpdf-font
gem install rmagick -v '2.15.4'

6. Session 存储密钥

1
rake generate_secret_token

7. 生成 redmine 的数据库表结构和初始化数据

1
2
RAILS_ENV=production rake db:migrate //生成表结构
RAILS_ENV=production rake redmine:load_default_data //初始化数据

8. 创建上传文件的目录和设置文件夹的权限

1
2
3
4
useradd redmine -m
passwd redmine //设置 redmine 账户的密码
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets/

9. 测试 redmine

1
ruby bin/rails server webrick -e production -b 0.0.0.0 -p 3000


其他

变更目录权限

1
chown -R redmine:redmine /opt/redmine

设置开机启动

1
2
3
vim /etc/rc.local/
source /etc/profile.d/rvm.sh //调用ruby相关的环境变量
/opt/nginx/sbin/nginx //手动启动nginx

完整nginx配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
server_name redmine.example.com;
access_log logs/redmine.example.com.access.log;
error_log logs/redmine.example.com.error.log;
location / {
root /opt/redmine-3.3.0/public;
index index.html index.htm;
passenger_enabled on;
}
}

邮件配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cd /opt/redmine-3.3.0/config
cp configuration.yml.example configuration.yml
vi configuration.yml
---
delivery_method: :smtp
smtp_settings:
address: "mail.example.com"
port: 25
authentication: :login
domain: 'example.com'
user_name: 'admin@example.com'
password: 'xxxxxxx'
enable_starttls_auto: false
openssl_verify_mode: 'none'
---

备份和恢复

关于备份,官方提供的方法是

1
2
3
4
5
6
7
8
9
10
Backups Redmine backups should include:
data (stored in your redmine database)
attachments (stored in the files directory of your Redmine install)
Here is a simple shell script that can be used for daily backups (assuming you're using a mysql database):
# Database
/usr/bin/mysqldump -u <username> -p<password> <redmine_database> | gzip > /path/to/backup/db/redmine_`date +%y_%m_%d`.gz
# Attachments
rsync -a /path/to/redmine/files /path/to/backup/files

由于 Redmine 的用户和问题等信息存储于 Mysql 数据库,表名为 redmine 而附件等资源存储于 Redmine 安装目录的 files 目录下。
简单来说只需要备份 Mysql 数据库的对应的表和 redmine 软件的 files 目录即可。

备份

1
2
3
4
5
// 备份数据库
/usr/bin/mysqldump -uredmine -predmine_password redmine | gzip > /path/data/redmine.sql.gz
// 备份软件(用 nginx 作为前端)
tar -zcf /path/data/redmine_soft_time.tgz nginx_dir redmine_dir git_dir

迁移或者恢复

按照上面安装过程,安装 redmine 需要的环境,之后导入数据库(记得要创建 redmine 用户或给 mysql 授权),再将相应软件包解压即可
如果是升级,只拷贝 file目录。

git 版本库配置

使用 redmine 运行用户,clone 项目至 redmine 目录,

1
2
3
4
5
6
7
8
9
10
su - redmine
ssh-keygen -t rsa
copy .ssh/id_rsa.pub to git server
git clone ssh://git@172.16.1.100/a.git
git clone ssh://git@172.16.1.100/b.git
git clone ssh://git@172.16.1.100/c.git
git clone ssh://git@172.16.1.100/d.git
git clone ssh://git@172.16.1.100/e.git

项目-配置-版本库:新建

1
2
3
4
5
6
SCM:Git
库路径:/home/redmine/a/.git
库路径:/home/redmine/b/.git
库路径:/home/redmine/c/.git
库路径:/home/redmine/d/.git
库路径:/home/redmine/e/.git

实时、定时更新

1
配置hook自动同步、配置cron定时pull

插件管理

下载插件到 plugins 目录,并执行

1
bundle exec rake redmine:plugins:migrate RAILS_ENV='production'

scrum 插件

1
http://www.redmine.org/plugins/scrum-plugin

截图

参考

1
http://www.myexception.cn/open-source/418471.html