Windows下Bug管理系统MantisBT的安装和配置
Bug追踪和管理系统是成熟开发团队必经之路。它应该是一个面向所有用户的,用于Bug管理和讨论的开放性系统。开源里面比较流行的是Redmine和MantisBT。这篇文件记录了我在Windows下安装配置PHP和MantisBT的过程。
MantisBT和Redmine预览
这两套系统各有千秋,UI各具特色,功能上也是各有千秋,大家可以在做选择之前先预览官方的自己的Bug管理实例。如果有条件,建议亲自动手在自己电脑部署评估。
- MantisBT
https://mantisbt.org/bugs/my_view_page.php - Redmine
https://www.redmine.org/issues
1 文件下载
注意一下版本的匹配,以下版本在我这里是经过测试时兼容的。
- 下载最新版本的MantisBT 2.26.3
- 下载Windows版本的PHP 8.3
请下载Non Thread Safe版本:
2 环境安装和配置
2.1 MySQL
本文使用的数据库MySQL 8.0,这里假设你已经安装并已经配置好了数据库。其他数据请另行安装测试。
2.2 PHP安装配置
- VC++运行库
PHP运行依赖Microsoft Visual C++ Redistributable for Visual Studio,请检查并下载安装对应版本的vc++。
- PHP安装
解压PHP包到电脑的某个目录下如:D:\Program Files\php-8.3.11。把该目录添加到系统环境变量PATH中。
- PHP配置
- PHP目录里面的php.ini-production.ini重命名为php.ini。
- 把post_max_size和upload_max_filesize设置为20M,不然默认只能上传2M的附件。
- 修改php.ini文件,把extension_dir设置为PHP的ext目录,如:extension_dir = "D:\Program Files\php-8.3.11\ext"。
- 设置时区为Asia/Shanghai,如:date.timezone = Asia/Shanghai。
- 启用必须的扩展。
extension = php_curl.dll
extension = php_fileinfo.dll
extension = php_gd2.dll
extension = php_gmp.dll
extension = php_ldap.dll
extension = php_mbstring.dll
extension = php_exif.dll
extension = php_mysql.dll
extension = php_mysqli.dll
extension = php_openssl.dll
extension = php_soap.dll
extension = php_sockets.dll
extension = php_tidy.dll
extension = php_xmlrpc.dll
extension = php_xsl.dll
- CGI配置。
fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo = 1
cgi.force_redirect = 0
完整php.ini文件如下:
; ext dir
extension_dir = "D:\Program Files\php-8.3.11\ext"
; time zone
date.timezone = Asia/Shanghai
; enable extensions
extension = php_curl.dll
extension = php_fileinfo.dll
extension = php_gd2.dll
extension = php_gmp.dll
extension = php_ldap.dll
extension = php_mbstring.dll
extension = php_exif.dll
extension = php_mysql.dll
extension = php_mysqli.dll
extension = php_openssl.dll
extension = php_soap.dll
extension = php_sockets.dll
extension = php_tidy.dll
extension = php_xmlrpc.dll
extension = php_xsl.dll
; cgi config
fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo = 1
cgi.force_redirect = 0
- IIS安装
需要打开CGI功能才能在IIS上启用PHP。
Control Panel -> Programs -> Turn Windows features on or off -> Internet Information Services -> World Wide Web Services -> Application Development Features
3 MantisBT安装和配置
3.2 IIS配置
- 创建应用池
Application Pools -> Create Application Pool
因为PHP是非托管的,所以.NET CLR Version选择“No Managed Code”。
- 添加网站
Sites -> Add Website
设置Pysical path为C:\inetpub\wwwroot\mantisbt,如果端口有冲突就换一个。
- 设置应用池
点击刚刚创建的网站 -> Actions(右边面板) -> Basic Settings -> Application Pool -> 选择你前面创建的应用池。
- 设置默认文档
点击刚刚创建的网站 -> Default Document(中间面板)-> Add -> index.php
- 设置PHP文件处理映射
点击刚刚创建的网站 -> Handler Mappings(中间面板) -> Add Module Mapping -> 填入如下信息:
3.3 MantisBT配置
把MantisBT解压到C:\inetpub\wwwroot\mantisbt目录下。到这里如果没有意外的话,MantisBT应该已经安装好了。接下来开始MantisBT的配置。
点击刚刚创建的网站 -> Browse Website(右边面板) -> Browse *:80 (http)
如果打开网页显示404或其他权限类的错误,请检查一下MantisBT的安装目录的权限。
点击刚刚创建的网站 -> Actions(右边面板) -> Edit Permissions -> 给用户IUSR和用户组IIS_IUSRS添加读写权限。
如果确认权限没有问题,但还有报错请的话,请检查是否前面步骤有遗漏。如果能正常打开MantisBT安装配置页面,则根据提示配置数据连接信息、时区和URL的绑定,请注意这里的URL最好和IIS绑定的URL一致。
填好信息后点击Install/Upgrade Database按钮,如果看到的都是绿色的Good,则说明配置成功。滚动到底部,点击Continue按钮,进入登录页面。默认管理账户是administrator,密码是root,登录成功后根据要求修改密码。
- 开启匿名访问
用管理员账户创建一个名字叫anonymous的用户,打开Protected,并给该用户分配Viewer权限。
打开配置文件config_inc.php,添加以下配置:
$g_allow_anonymous_login = ON;
$g_anonymous_account = 'anonymous';
$g_allow_blank_email = ON;
开启匿名访问后,不需要登录也可以匿名查看公开的Issue。对于公司内部或开源的项目是很方便的。
- 设置最大附件大小
打开配置文件config\config_inc.php,添加以下配置:
$g_max_file_size = 20971520;
把允许最大上传附件大小改为20M。
- 自定义严重程度
打开配置文件config\config_inc.php,添加以下配置:
$g_severity_enum_string = '10:feature,50:minor,60:major,70:crash,80:block';
#这个是默认的:
#$g_severity_enum_string = '10:feature,20:trivial,30:text,40:tweak,50:minor,60:major,70:crash,80:block';
默认的严重程度的选项很多,而且部分词并不常见,所以这里对严重程度做了优化,只保留了常用的几个。
- LDAP配置
打开配置文件config\config_inc.php,添加以下配置:
$g_login_method = LDAP;
$g_ldap_server = 'ldap://xxx.com:389';
$g_ldap_port = '389';
$g_ldap_root_dn = 'dc=xxx'; #你ldap的根DN
$g_ldap_bind_dn = 'xxx'; #你ldap的绑定账号
$g_ldap_bind_passwd = 'xxx'; #你ldap的绑定密码
$g_ldap_uid_field = 'uid'; #你ldap的uid属性
$g_ldap_realname_field = 'displayName'; #ldap可用的显示名子属性
$g_ldap_use_starttls = OFF; #是否使用TLS
$g_use_ldap_email = ON; #是否使用ldap的email
$g_use_ldap_realname = ON; #是否使用ldap的realname
配置很简单,按要求逐个填入即可,更多的配置请参考官方文档。启用LDAP登录后,如果有LDAP的用户成功登录MantisBT会自动根据LDAP的信息注册该用户。另外,因为启用了LDAP原有的administrator就会自动失效,需要先用LDAP的账户登录,再手动把数据中的mantis_user_table的对于的用户的access_level字段设置为90,把该用户设置为管理员。
- 配置邮件服务
打开配置文件config\config_inc.php,添加以下配置:
$g_webmaster_email = 'administrator@example.com'; #显示在每个页面的底部
$g_from_email = 'noreply@example.com'; #发送邮件的地址
$g_return_path_email = 'administrator@example.com'; #用于接收退回电子邮件的电子邮件地址。
$g_phpMailer_method = PHPMAILER_METHOD_SMTP; #使用SMTP方法发送邮件
$g_smtp_host = 'localhost'; #SMTP服务器地址
$g_smtp_username = 'xxx@example.com'; #发邮件账户
$g_smtp_password = 'xxx'; #账户密码
$g_smtp_connection_mode = ''; #加密模式,ssl,tls
$g_smtp_port = 25; #SMTP端口
- 显示名字而不是用户名
打开配置文件config\config_inc.php,添加以下配置:
$g_show_realname = ON;
到这里MantisBT已经配置好了,可用添加项目和Issue试用这个新的Buger追踪系统了
4 后续问题更新
4.1 项目、版本和路线图
- 注意规划好项目的层级机构,以防日后项目多起来会感觉凌乱。
- 为项目创建好当前版本和下一个版本,并在创建Issue的时候指定产品版本和目标版本,这样才能看到项目的路线图。
4.2 反垃圾邮件
如果你频繁创建和更新项目可能会遇到下面的这个报错,这是触发了默认启动的反垃圾邮件机制,1个小时内只允许10个事件。
You have reached the allowed activity limit of 10 events within the last 3600 seconds; your action has been blocked to avoid spam, please try again later.
可用更新一下配置g_antispam_max_event_count
,设置一个比较大的值或直接设置为0,0的意思是关闭这个放垃圾邮件功能。
$g_antispam_max_event_count = 50;
4.2 Due Date设置
默认不显示Iusse的Due Date,但是Due Date对Iusse跟踪和项目管理很重要,同时开发者也可以利用Due Date管理自己的工作。
- 跟新配置设置可以查看和更新Due Date的角色。
$g_due_date_update_threshold = DEVELOPER;
$g_due_date_view_threshold = VIEWER;
- 配置显示Due Date的页面。
Manage -> Configuration -> Manage Columns
在你要显示Due Date的页面加上due_date
,显示位置跟随列表的顺序。
参考:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)