因工作需要部署一个缺陷跟踪系统,综合考虑后决定选用mantisBT。
因计算机上已运行了一个Tomcat,为节省资源考虑,想将mantisBT直接部署到Tomcat服务器中。在网上查找了很多文献方法并尝试后,搭建了PHP环境,并成功的在浏览器端查询到了PHP的版本信息,但是mantisBT一直安装不成功。
后面经过数天的资料查询和尝试,今天终于提示安装成功了,现在记下相关的配置经验备查。
使用组件
OS: Windows 7 64bits
Tomcat: version 7.0.82
JVM version: 1.7.0_79-b15
PHP version: 7.3.7(ts)
mantisBT version: 2.21.1
PHP配置
- https://windows.php.net/download#php-7.3下载64位Windows版PHP压缩包,选择线程安全的版本,解压到Tomcat服务器根目录下的PHP子目录中。
- 配置环境变量,将PHP子目录加入系统环境变量的PATH列表中,可以加入系统环境变量PATH列表。配置完成后打开命令提示符,执行命令
php -v
检查PHP版本信息,若能正确显示PHP版本信息则表示环境变量配置正确,否则更正环境变量配置。 - 将PHP子目录中的
php.ini-development
文件复制一个副本并命名为php.ini
,用文本编辑器打开,找到extension_dir = "ext"
、cgi.force_redirect
、extension=fileinfo
、extension=mbstring
、extension=mysqli
并将它们前面的注释符号;
去掉。
mantisBT
从 SourceForge.net下载mantisBT v2.21.0,解压至 <Tomcat服务器根目录>/webapp/mantisBt
Tomcat服务器配置
- 修改Tomcat配置文件 <Tomcat根目录>/conf/context.xml:按下图插入红色下划线标示的文字
- 修改Tomcat配置文件 <Tomcat根目录>/conf/web.xml,插入下面的配置代码:
<!-- PHP servlet -->
<servlet>
<servlet-name>php</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>200</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>E:\wcpServer\server\PHP\php-cgi.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<!-- <param-value>WEB-INF/mantisbt</param-value> -->
<param-value>../mantisbt</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/mantisbt/*</url-pattern>
</servlet-mapping>
然后查找<welcome-file-list>
块,在其中添加<welcome-file>index.php</welcome-file>
:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.php</welcome-file>
</welcome-file-list>
- 修改Tomcat配置文件 <Tomcat根目录>/conf/server.xml,在
<Host ...>
块中添加
<Context docBase="mantisBT/css" path="/mantisbt/css" />
<Context docBase="mantisBT/js" path="/mantisbt/js" />
使之成为:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="mantisBT/css" path="/mantisbt/css" />
<Context docBase="mantisBT/js" path="/mantisbt/js" />
</Host>
故障现象
按上述方法配置后,在浏览器端打开"admin/install.php"页面执行安装时,总是在填写了所有数据库信息并提交后仍然返回同一个等待填写数据库信息的页面,并且数据库服务器中找不到需要创建的数据库。
解决办法
- Tomcat配置文件 <Tomcat根目录>/conf/web.xml中插入的配置代码中,注释掉参数
cgiPathPrefix
的配置块:
<!-- PHP servlet -->
<servlet>
<servlet-name>php</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>200</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>E:\wcpServer\server\PHP\php-cgi.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<!-- 注释掉下面的参数设置 -->
<!-- <init-param> -->
<!-- <param-name>cgiPathPrefix</param-name> -->
<!-- <param-value>WEB-INF/mantisbt</param-value> -->
<!-- <param-value>../mantisbt</param-value> -->
<!-- </init-param> -->
<load-on-startup>5</load-on-startup>
</servlet>
紧接着的Servlet映射更改为:
<servlet-mapping>
<servlet-name>php</servlet-name>
<!-- <url-pattern>/mantisbt/*</url-pattern> -->
<url-pattern>*.php</url-pattern>
</servlet-mapping>
- Tomcat配置文件 <Tomcat根目录>/conf/server.xml,在
<Host ...>
块中额外添加一行
<Context docBase="mantisBT" path="/mantisbt" reloadable="true" />
使之成为:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="mantisBT/css" path="/mantisbt/css" />
<Context docBase="mantisBT/js" path="/mantisbt/js" />
<Context docBase="mantisBT" path="/mantisbt" reloadable="true" />
</Host>
- 关闭并重启Tomcat服务器,访问 http://localhost/mantisbt/admin/install.php ,终于可以继续了……