分享

Redmine 管理员手册

 everydayOK 2015-10-26

11   高级配置

11.1   版本库配置

  • 常规信息

    Redmine一直以来支持不同的版本控制工具集成: Subversion, CVS, Mercurial, Darcs, Git和Bazaar。

    首先你要在Redmine主机上安装合适的二进制包, 并确保这些二进制文件在PATH环境变量中可用:

    SCM

    已测试过的版本

    说明

    Subversion

    1.3 & 1.4 & 1.5 & 1.6

    需要1.3或者更高的版本

    CVS

    1.12.12

    需要1.12,不能同时使用CVSNT

    Mercurial

    0.9.3

     

    Bazaar

    l.0.0.candidate.1 & 2.0.4

     

    Darcs

    1.0.7

     

    Git

    1.5.4.2

     

    比如, 如果你想用Redmine访问Subverion版本库, 你必须在Redmine主机上安装SVN二进制文件。

  • 给项目添加一个已经存在的版本库

    在项目配置选项卡下有 版本库 子选项库, 在这里可以为项目添加版本库。

    选择你所使用的版本库类型, 并输入版本库路径或者URL

    Note

    当配置完版本库第一次访问时, Redmine将抓取版本库中已经存在的所有提交信息, 并存入数据库。所以如果你的版本库特别大, 那么该过程将会很长。

    为了避免这种情况, 你可以将该过程放在后台执行。

    在配置完版本库后, 运行下面的命令:

    $ ruby script/runner "Repository.fetch_changesets" -e production
    

    所有的提交将会被存入数据库

    从Redmine0.9之后, 你还可以通过一个链接给某一项目或者所有项目执行 fetch_changesets:

    http://redmine./sys/fetch_changesets (给所有活动的项目取回变更集)
    http://redmine./sys/fetch_changesets?id=foo (仅给foo项目取回变更集)
    
  • Subversion 版本库

    Redmine支持的协议有(http:,svn:,file:), 只需要输入版本库的URL

    例如:

    http://host/path/to/the/repository
    

    如果版本库需要身份认证, 你需要额外输入用户名和密码

    Note

    如果你想要用 svn+ssh:// 访问版本库, 你必须把svn+ssh配置为非交互的方式。

    同时需要设置ssh认证的 public/private 钥对

    Hint

    Subversion 基于路径的授权

    Redmine对Subversion授权是这样处理的: 在配置Subversion版本库时, 除了输入URL外, 还需填写一个拥有Subversion读权限的账户信息(如果你的Subversion不允许匿名访问)。 显然很多商业公司的代码有很高的严密性, 大多是不允许匿名访问的,看来是必填了。 而Redmine对Subversion认证不严格也是从这里开始的。 填写了这个账户之后, 不管哪个用户登录Redmine浏览版本库, 看到的版本库信息都是该账户应该能看到的, 而不是当前登录用户应该看到的。 也就是说, 在这种情况下, 如果你想对代码浏览严加控制, 那么就需要创建一个很低权限的Subversion账号, 用这个账号作为Redmine访问Subversion的账号。 但这样一来, 那些具有高权限的用户就不乐意了(他们本来是能看到很多代码的, 但这样一来他们的权限无形之中被剥夺了)。

    为了满足商业软件公司的需求, 群英汇对Redmine关于Subversion授权的部分进行了扩展, 采用Subversion本身的授权模式。 我们添加了解析Subversion授权文件的组件, 可以很好地解析每个用户的权限, 从而保证Redmine浏览权限和Subversion定义的权限一致, 完美解决了Redmine中Subversion授权不严格的问题, 实现了Subversion基于路径的授权。

    配置步骤, 参见 Subversion基于路径授权

  • CVS 版本库

    输入:

    • 版本库的URL (也可以输入路径或者链接字符串, 例如 :pserver)
    • 模组名称

    示例:

    :pserver:login:password@host:/path/to/the/repository
    

    以下几种版本库输入版本库的路径即可

  • Git 版本库

  • Mercurial 版本库

    Hint

    解决了中文版Mercurial版本库无法使用的问题

    由于Redmine在匹配Mercurial版本信息时是基于英语匹配的, 所以当我们使用中文Mercurial时, 它会抛出匹配失败的异常, 造成中文用户不能使用。

  • Bazaar 版本库

  • Darcs 版本库

11.2   发送邮件配置

首先将 config/email.yml.example 重命名为 config/email.yml

然后配置发送邮件需要的参数:

production:
  delivery_method: :smtp
  smtp_settings:
    address: mail.foo.bar
    port: 25
    domain: foo.bar
  # authentication: :login
  # user_name: xxx
  # password: xxx

注意: 用#注销掉的那三行信息,是邮件服务器身份验证信息。但是如果你的用户已经使用了域验证,就不需要那三行信息。

访问redmine,以管理员的身份登录系统,点击"管理"—->""配置"—->"邮件通知",然后点击右下角的"发送测试邮件",就可以测试你的邮件服务配置是否成功了。

Note

当delivery_method设置为:smtp时, 它的处理流程是这样的:

在触发邮件发生的事件发生后, 首先发送邮件, 直到邮件发送完毕, 页面才跳转。 这就是说在发送邮件的过程中, 页面一直处于等待状态。 那么有没有一种异步发送邮件机制呢?

在Redmien 0.9 之后, 可通过将delivery_method设置为: async_smtp, 这时发送邮件和页面跳转属于不同的线程, 当触发邮件的事件发生后, 发送邮件将会通过消息队列在后台执行, 而页面继续向下执行, 不用等到邮件发送完毕。

11.3   接收邮件

从Redmien-0.8.0 开始, 通过配置, 你可以以发送邮件的方式创建或者评论问题(issue)。

11.3.1   方案

你可以通过以下几种方式配置Redmine接收邮件的功能:

  • 从邮件服务器转发邮件
    • 优点: 与远程邮件服务器协作,邮件处理即时,快速(无环境重载)
    • 缺点: 需要一些邮件传输代理(MTA)的配置(如Postfix,Sendmail...)
  • 从IMAP或者POP3服务器读取邮件
    • 优点: 易于安装, 不需要配置邮件传输代理(MTA), 与远程邮件服务器协作
    • 缺点: 邮件处理不即时(需要添加一个定期读取邮件的 con job)
  • 从标准输入读取邮件
    • 优点: 用于测试的最佳选项
    • 缺点: 慢(每次读取邮件时都要重新载入环境), 需要配置邮件传输代理(MTA)

11.3.2   各种方案的详细说明

11.3.2.1   从邮件服务器转发邮件

用一个独立的脚本转发邮件服务器发来的邮件。这个脚本从标准输入读取原始邮件并通过HTTP请求转发给Redmine。 该脚本在redmine目录下: extra/mail_handler/rdm-mailhandler.rb

  • 使用这项功能之前, 你需要开启接收邮件的API:

    开启操作: "管理"->"配置"->"接收邮件", 选中开启接收邮件服务的复选框,并点击链接"生成一个key",产生一个密钥。

  • 复制 rdm-mailhandler.rb 到你的邮件服务器, 确保该脚本有执行的权限并配置你的邮件传输代理(MTA)。

  • rdm-mailhandler 用法:

    rdm-mailhandler [options] --url=<Redmine URL> --key=<API key>
    必须选项:
    -u, --url                      Redmine服务的URL
    -k, --key                      Redmine API key
    常用可选选项:
    -h, --help                     显示帮助信息
    -v, --verbose                  显示额外的信息
    -V, --version                  显示版本信息
    
  • 问题属性可控的选项:

    -p, --project=PROJECT          项目的标识符
    -t, --tracker=TRACKER          跟踪标签的类型
    --category=CATEGORY            问题类别的名称
    --priority=PRIORITY            优先级的名称
    -o, --allow-override=ATTRS     允许在邮件里覆盖先前已指定的属性,多个属性之间用逗号分开
    
  • 示例:

    # 没有指定项目,那么在邮件内容里必须包含“Project”关键字,否则Redmine将不处理该邮件
    rdm-mailhandler --url http://redmine.o --key secret
    # 设置默认的项目和跟踪标签类型,同时可以在邮件内容里覆盖tracker和priority选项
    rdm-mailhandler --url https://o/redmine --key secret \                --project foo \                --tracker 错误 \                --allow-override tracker,priority
    
  • 下面是一个Postfix的例子:

    foo: "|/path/to/rdm-mailhandler.rb --url http://main --key secret --project foo"
    

11.3.2.2   从IMAP服务器读取邮件

redmine提供了一个rake任务(redmine:email:receive_imap)负责从IMAP服务器读取邮件。

当cron 运行该rake命令时你需要使用选项 -f /path/to/redmine/appdir/Rakefile, 因为不这样的话会出现找不到rakefile的异常。

下面是一个定期每30分钟读取一次邮件的cron文件:

*/30 * * * * redmineuser rake -f /path/to/redmine/appdir/Rakefile redmine:email:receive_imap RAILS_ENV="production" host=imap.foo.bar username=redmine@somenet.foo password=xxx

如果你的设置正常工作,但经常收到cron daemon发送的邮件,你可以在rake命令后添加 --silent选项禁止执行命令的输出信息。下面是禁止每次执行cron命令时发送邮件的示例:

*/30 * * * * redmineuser rake -f /path/to/redmine/appdir/Rakefile --silent redmine:email:receive_imap RAILS_ENV="production" host=imap.foo.bar username=redmine@somenet.foo password=xxx

说明: 在 cron 文件中,这个命令必须位于一行上

如果用Windows作为服务器, pycron可以用于调度读取邮件的任务。 同时需要你修改防火墙设置, 打开同通过TCP链接IMAP的143端口。

可用的IMAP选项:

host=HOST                IMAP服务主机(*默认值: 127.0.0.1*)
port=PORT                IMAP服务端口(*默认值: 143*)
ssl=SSL                  是否使用SSL?(*默认值: false*)
username=USERNAME        IMAP账号
password=PASSWORD        IMAP密码
folder=FOLDER            将要读取的IMAP文件夹(*默认值: INBOX*)
move_on_success=MAILBOX  将已成功读取的邮件移动到MAILBOX中, 而不是删除掉
move_on_failure=MAILBOX  将Redmine忽略的邮件移动到MAILBOX中

问题(issue)属性可控选项:

project=PROJECT          项目标识符
tracker=TRACKER          跟踪标签类型
category=CATEGORY        问题类别名称
priority=PRIORITY        优先级名称
allow_override=ATTRS     允许在邮件内容里覆盖先前已指定的属性,多个属性之间用逗号隔开

rake命令的一个例子:

# 没有指定项目, 这时邮件内容里必须包含"Project"关键字
rake redmine:email:receive_imap RAILS_ENV="production" \     host=imap.foo.bar username=redmine@somenet.foo password=xxx
# 指定默认的项目和跟踪标签类型, 同时允许在邮件里覆盖tracker和priority属性的值
# both tracker and priority attributes:
rake redmine:email:receive_imap RAILS_ENV="production" \     host=imap.foo.bar username=redmine@somenet.foo password=xxx ssl=1 \     project=foo \     tracker=错误 \     allow_override=tracker,priority
# 将成功处理的邮件转移到"read"mailbox中,失败的则转移到"failed"mailbox中
rake redmine:email:receive_imap RAILS_ENV="production" \     host=imap.foo.bar username=redmine@somenet.foo password=xxx \     move_on_success=read move_on_failure=failed

忽略的邮件(包括未知用户、未知项目以及来自redmine禁用帐户的邮件)被标记为'已读',而不是从IMAP服务器中删除。

选项 allow_override 不仅仅覆盖rake的默认值, 而且可以覆盖邮件里的所有属性。 例如,你要覆盖tracker, 你可以添加参数: allow_override=tracker

11.3.2.3   从POP3服务器读取邮件

仅在trunk和1.0以后的版本可用

redmine提供的rake任务(redmine:email:receive_pop3)可以用于从POP3读取邮件

POP3可用的选项:

  host=HOST                POP3服务主机(*默认值: 127.0.0.1*)
  port=PORT                POP3服务端口(*默认值: 110*)
  username=USERNAME        POP3账号
  password=PASSWORD        POP3密码
  apop=1                   是否使用APOP认证(_默认值: false_)
  delete_unprocessed=1     从服务器上删除不能成功处理的消息(*默认情况是继续保存在服务器上*)

关于问题属性的可控选项可以参考上面IMAP章节

11.3.2.4   从标准输入读取邮件

redmine提供的rake任务(redmine:email:receive)用于从标准输入读取单个的原始邮件

问题属性可控的选项:

project=PROJECT          项目标识符
tracker=TRACKER          跟踪标签类型
category=CATEGORY        问题类别名称
priority=PRIORITY        优先级名称
allow_override=ATTRS     允许在邮件内容里覆盖先前已指定的属性,多个属性之间用逗号隔开

示例:

# 没有指定项目,这时邮件里必须包含“Project”关键
rake redmine:email:read RAILS_ENV="production" < raw_email
# 指定默认的项目和跟踪标签类型,并且允许在邮件里覆盖tracker和priority选项
# both tracker and priority attributes:
rake redmine:email:read RAILS_ENV="production" \     project=foo \     tracker=错误 \     allow_override=tracker,priority < raw_email

选项 allow_override 不仅仅覆盖rake的默认值, 而且可以覆盖邮件里的所有属性。 例如,你要覆盖tracker, 你可以添加参数: allow_override=tracker。

11.3.3   开启匿名用户通过邮件提交问题

为了开启该选项,需要添加额外参数:

unknown_user=ACTION 当收到未知用户邮件时,应该采用哪种ACTION。以下是ACTION可用的值:
ignore: 邮件将被忽略(默认值)
accept: 作为匿名用户接收
create: 自动为该用户创建一个账号

no_permission_check=1 当收到邮件时禁用权限检查功能

11.3.4   工作原理

收到邮件后, Redmine从发件人地址中查找对应的账号。 未知用户和已锁定的用户将被忽略。

如果邮件主题包含像这样的内容" Re:[xxxxxx #123]", 那么该邮件将被作为问题(issue)#123的回复处理。

否则将会以邮件主题为问题的标题,新建一个问题(issue)

  • 目标项目:

    目标项目可以通过接收邮件里的project选项指定。 project应该用项目的ID而不是项目的名称来指定。

    如果不使用该选项, 你需要在邮件内容中指定问题关联的项目。 你可以在邮件里添加这样一行: "project:foo"。

    例子(邮件内容):

    Project: foo
    在这里可以写一些关于问题的描述信息
    

    你可以给项目选项指定一个默认的项目并允许并允许用户通过 allow_override 选项覆盖默认的项目。

    例子:

    #  指定默认项目,并允许用户在邮件里覆盖project属性
    rake redmine:email:receive_imap [...] project=foo allow_override=project
    

    当然, 用户的权限也会别检查, 那些没有创建问题(issue)的用户发送的邮件将被忽略。

    同时必须确保目标项目没有使用没有设定默认值的用户自定义问题(issue)字段, 否则创建问题(issue)将会失败。

  • 问题(issue)属性

    根据你使用的接收邮件选项(参考 allow_override 选项), 用户可以在提交问题(issue)时覆盖一些属性。

    可以在邮件里用以下关键字实现:Tracker, Category, Priority, Status。

    例子:

    # 这是一个新问题, 并将覆盖一些属性
    Project: foo
    Tracker: 错误
    Priority: 紧急
    Status: 反馈
    
  • 跟踪者

    如果发送邮件的用户有"添加问题(issue)跟踪者"的权限, 邮件中To或者Cc字段里的用户将作为新建问题(issue)的跟踪者

  • 邮件格式以及附件

    Redmine用邮件的纯文本部分填充问题(issues)的描述, 因此当收到一个仅有HTML的邮件, 那些HTML标签将被删除。

    邮件的附件将会自动附加给问题(issue), 除非超过了应用程序设置的附件最大值。

11.3.5   例子演示

以从IMAP服务器读取邮件为例

添加一个Redmine从IMAP服务器读取邮件的corn任务

wangsheng@pc01:/etc/cron.d$ cat receive_imap
# m h  dom mon dow  user  command
*/10 *  *   *   *    root rake -f /opt/redmine/web/Rakefile redmine:email:receive_imap RAILS_ENV="production" host=imap.foo.bar username=xxx@foo.bar password=xxxxxx allow_override=tracker

说明:

  • 这个任务会每隔10分钟执行一下那个rake命令
  • usernname最好跟"管理"->"配置"->"邮件通知"界面里的 邮件发件人地址 相同, 否则当你直接回复邮件更改问题时可能会出现收件人地址不可达的异常(如果你在该界面配置了一个不存在的邮件账号)。 最理想的做法是给Redmine创建一个IMAP账号, 写在这里。

好了, 下面发送一个测试邮件:

收件人: rake里的username值

邮件标题:

# 这将是新建问题的标题
这是通过邮件提交的问题

邮件内容:

# 由于在rake命令里没有指定默认项目,所以这里必须指定项目
Project: foo
Tracker: 支持
下面可以写一些关于问题的描述

说明: 该邮件将会创建一个"支持"类型的问题(issue)

如果10分钟内,你访问Redmine, 点击问题选项卡, 看到了这个问题, 那么证明已经成功配置。

11.4   发送提醒邮件

Redmine提供了一个rake任务, 它可以发送那些未来几天之内需要完成的问题的提醒邮件。

可用选项:

  • days: 设置几日之内的提醒邮件 默认值:7
  • tracker 跟踪标签的ID 默认:所有跟踪标签
  • project: ID或者项目标识符 默认:所有项目

下面是一个发送未来7天之内需要解决的问题的提醒邮件示例, 问题的指派人将收到这封邮件:

rake redmine:send_reminders days=7 RAILS_ENV="production"
images/notify_mail.png

提醒邮件截图.

11.5   LDAP 认证

Redmine一直以来都支持一个或者多个LDAP认证源。

以管理员身份登录系统, 点击 管理 -> 配置 -> 认证 -> LDAP 认证, 即可进入LDAP认证页面。

  • 新建LDAP认证

    在LDAP认证页面, 点击右上角的 新建认证模式 链接, 进入新建LDAP认证的页面:

    • 名称

      任意给你新建的LDAP起个名称

    • 主机

      LDAP主机名称, 也可以写成LDAP主机的IP

    • 端口

      LDAP端口, 默认是 389

    • LDAPS

      如果你想用LDAPS访问LDAP目录, 那么你需要选中它

    • 账号

      如果LDAP服务允许匿名用户访问, 则不填; 否则需要填写一个能访问LDAP的用户名

    • 密码

      和上面的账号一起设置

    • Base DN

      LDAP目录树的顶级DN

    • 即时用户生成

      选中该选项后, 任何LDAP用户第一次登录Redmine后, Redmine会将LDAP里"登录名,名字,姓氏,邮箱地址"这些字段复制到Redmine的数据库中, 从而为这些用户创建了Redmine账号。

    • 属性区域

      在这里分别填写LDAP的登录属性

      • 登录名
      • 名字
      • 姓氏
      • 邮件地址

    一个典型的例子:

    Name     = My Directory
    Host     = host.domain.org
    Port     = 389
    LDAPS    = no
    Account  = MyDomain\UserName (or UserName@MyDomain depending on AD server)
    Password = <password>
    Base DN  = CN=users,DC=host,DC=domain,DC=org
    
    On-the-fly user creation = yes
    Attributes
    Login     = sAMAccountName
    Firstname = givenName
    Lastname  = sN
    Email     = mail
    

    创建之后页面自动跳转到LDAP认证页面, 点击"测试"链接测试你的设置设否能够和LDAP服务器链接上

    Note

    • Base DN 变种

      如果链接失败, 你可以将Base DN字段改为 "DC=host,DC=domian,DC=org"

    • LDAP属性名称大小写敏感

images/LDAP.png

新建LDAP截图

11.6   配置单点登录

前提

  • 已经配置好LDAP 参见 LDAP认证
  • 安装配置Cosign

单点登录配置步骤:

以管理员身份登录Redmine, 点击"管理"-->"配置"-->"认证", 进入认证配置页面

在页面的下方区域就是配置单点登录的地方:

images/sso.png

配置单点登录截图

  • 单点登录模式

    选择是否开启单点登录。 如果开启, 你需要根据安装Cosign的具体版本选择合适的Cosign登录模式。 * 禁用 默认值 * CoSign 3.x 登录模式 * CoSign 2.x 登录模式

  • 登录URL

  • 退出URL

  • 单点登录服务名

11.7   从LDAP同步账号

前提:

已经配置好LDAP 参见 LDAP认证

操作步骤:

以管理员身份登录Redmine, 点击"管理"-->"配置"-->"认证"-->"LDAP认证(页面右下角)", 进入LDAP认证页面。

images/admin_asyn_account.png

从LDAP同步账号截图

如果你已经配置有LDAP认证, 你会发现在LDAP认证列表中有一个"从LDAP添加用户"的链接, 点击它, 将跳转到 从LDAP添加用户 的页面:

  • 上面是一个过滤器

    在这里可以对用户列表进行过滤。 比如你想查找用户 zhangsan 可以这么做:

    在过滤器的输入框中输入 uid=zhangsan, 点击"应用"按钮, 这时用户列表就仅有 zhangsan 一个人的用户信息了。

  • 下面是LDAP用户信息列表

    想要同步账号, 只需点击前面那个复选框, 然后点击"同步账号"按钮, 系统将自动完成Redmine账号的建立。

11.8   Subversion 基于路径授权

配置过程:

以管理员身份登录Redmine, 选择用Subversion作版本控制的项目, 点击"配置"-->"版本库", 进入版本库配置页面。

选择Subverison, 这时你会发现多了两个属性:

  • 授权文件

    在这里输入Subverion授权文件(svn.access)的全路径。

  • 授权模组名称

    输入你想要通过Redmine浏览的项目(Subversion中每一个模组即代表一个项目)。

images/subversion_auth.png

配置Subversion基于路径授权截图

Note

如果你用的是http协议,而且svn不允许匿名访问,那么为了让所有用户都能有效地看到自己应该看到的版本库信息, 你需要创建一个对整个版本库读权限的账号, 输入到登录名和密码部分。 因为我们的Subverison权限检查组件是在Redmine原来的基础上, 对输出的信息再次进行过滤。 所以如果你在这里输入的账号权限太低, 还是会出现一些高权限的用户无法看到他们应该看到的内容的现象。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多