在CentOS7上集成Testlink和Bugzilla
最近到了一家新公司,公司刚刚起步,测试环境一片空白。所以我计划先setup好一些测试工具,首先要做的就是安装并集成Testlink与bugzilla。 这个过程中遇到无数的坑,特记录之。。。。
系统软件环境:
Apache/2.4.6
CentOS 7.1611 64 位
PHP 5.6.30
mysqld Ver 5.7.17 for Linux on x86_64 (MySQL Community Server (GPL))
Bugzilla version 4.4.12
Testlink 1.9.13
Perl v5.16.3
安装过程(此处不在记录CentOS的安装了):
1. 安装Apache
sudo yum install httpd
安装完毕后设置apache系统启动
systemctl enable httpd
systemctl start httpd
2. 安装mysql
在你的home目录下,(这里比较麻烦是因为 yum默认安装的不是5.7的)
wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm (这个有可能会变化,你可以输入http://repo.mysql.com/查看那个有效)
安装 mysql57-community-release-el7-9.noarch.rpm:
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
安装完后,得到如下两个包:
mysql-community.repo
mysql-community-source.repo
安装 MySQL:
yum install mysql-server
遇到疑问的地方,一路 Y 下去即可;
systemctl start mysqld
systemctl enable mysqld
安装完毕后,尝试登陆mysql 用下面的命令:
mysql -u root mysql
由于不知道密码所以无法登陆,但是此时在 /var/log/mysqld.log 文件中会自动生成一个随机的密码,我们需要先取得这个随机密码,以用于登录 MySQL 服务端:
grep "password" /var/log/mysqld.log
打印如下内容:
A temporary password is generated for root@localhost: hilX0U!9i3_6
我们复制 root@localhost: 后面的随机字符串,这个字符串就是 MySQL 在安装完成后为我们随机生成的密码;
12 登录到 MySQL 服务端并更新用户 root 的密码:
mysql -u root -p
打印出 MySQL 的版本即表明已登录;
修改root的密码:
After login, run the command bellow:
step 1: SET PASSWORD = PASSWORD(‘your new password‘);
step 2: ALTER USER ‘root‘@‘localhost‘ PASSWORD EXPIRE NEVER;
step 3: flush privileges;
注意:由于 MySQL5.7 采用了密码强度验证插件 validate_password,故此我们需要设置一个有一定强度的密码;
设置用户 root 可以在任意 IP 下被访问:
grant all privileges on *.* to root@"%" identified by "新密码";
设置用户 root 可以在本地被访问:
grant all privileges on *.* to root@"localhost" identified by "新密码";
刷新权限使之生效:
flush privileges;
输入 exit 后用新密码再次登录看看吧!
修改MySQL 的字符集:
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
可以看到有些选项用的不是utf8, 我们要将他们改成utf8.
打开 /etc/etc/my.cnf
在 [mysqld] 前添加如下代码:
[client]
default-character-set=utf8
在 [mysqld] 后添加如下代码:
character_set_server=utf8
重启:
systemctl restart mysqld
再次查看字符集:
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
3. 安装php
如果你已经安装了php,但是版本不是5.6,那你要升级下。 查看版本号: php -v
升级php:
设置一下仓库:
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm -Uvh epel-release-latest-7.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && rpm -Uvh remi-release-7*.rpm
打开配置文件
vi /etc/yum.repos.d/remi.repo
找到类似于[emi-php56]把其中的enable设成1, 其他项目中的enable都设成0
yum -y upgrade php*
修改php的配置已适应testlink的需要
vi /etc/php.ini
session.gc_maxlifetime = 2400 max_execution_time = 120
4. 安装perl和其他包
sudo yum install mod_ssl php-mysql php-gd php-ldap gcc perl* mod_perl-devel php-xml
php-xml必须要安装的,因为没有这个东西导致 Fatal error: Uncaught Error: Call to undefined function simplexml_load_file() 这个错误
安装完重新启动Apache
永久性关闭防火墙(你也可以自己添加规则,我比较懒(:
systemctl disable firewalld
systemctl stop firewalld
5. 安装Testlink
现在最新版是1.9.16,但是这个版本与bugzilla集成时无法把bug添加到一个fail的case上,错误是当你点击你个小虫图标时,打开一个空白的窗口(这里我看过代码,是因为参数处理的问题,但是我找不到解决方案。)
下载 testlink-1.9.13.tar.gz ,这个版本的sql脚本和mysql5.6配合有问题,所以我自己修改了下,之后会上传一下(跟时间日期有关的常量,都用 CURRENT_TIME代替就好了)
使用mysql5.7.17时,安装1.9.13将会出现安装数据库错误,请用本文件下的sql文件代替 testlink/install/sql/mysql/testlink_create_tables.sql
# TestLink Open Source Project - http://testlink.sourceforge.net/ # This script is distributed under the GNU General Public License 2 or later. # --------------------------------------------------------------------------------------- # @filesource testlink_create_tables.sql # # SQL script - create all DB tables for MySQL # tables are in alphabetic order # # ATTENTION: do not use a different naming convention, that one already in use. # # IMPORTANT NOTE: # each NEW TABLE added here NEED TO BE DEFINED in object.class.php getDBTables() # # IMPORTANT NOTE - DATETIME or TIMESTAMP # Extracted from MySQL Manual # # The TIMESTAMP column type provides a type that you can use to automatically # mark INSERT or UPDATE operations with the current date and time. # If you have multiple TIMESTAMP columns in a table, only the first one is updated automatically. # # Knowing this is clear that we can use in interchangable way DATETIME or TIMESTAMP # # Naming convention for column regarding date/time of creation or change # # Right or wrong from TL 1.7 we have used # # creation_ts # modification_ts # # Then no other naming convention has to be used as: # create_ts, modified_ts # # CRITIC: # Because this file will be processed during installation doing text replaces # to add TABLE PREFIX NAME, any NEW DDL CODE added must be respect present # convention regarding case and spaces between DDL keywords. # # --------------------------------------------------------------------------------------- # @internal revisions # # --------------------------------------------------------------------------------------- CREATE TABLE /*prefix*/assignment_types ( `id` int(10) unsigned NOT NULL auto_increment, `fk_table` varchar(30) default '', `description` varchar(100) NOT NULL default 'unknown', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/assignment_status ( `id` int(10) unsigned NOT NULL auto_increment, `description` varchar(100) NOT NULL default 'unknown', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/attachments ( `id` int(10) unsigned NOT NULL auto_increment, `fk_id` int(10) unsigned NOT NULL default '0', `fk_table` varchar(250) default '', `title` varchar(250) default '', `description` varchar(250) default '', `file_name` varchar(250) NOT NULL default '', `file_path` varchar(250) default '', `file_size` int(11) NOT NULL default '0', `file_type` varchar(250) NOT NULL default '', `date_added` datetime NOT NULL default CURRENT_TIMESTAMP, `content` longblob, `compression_type` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/builds ( `id` int(10) unsigned NOT NULL auto_increment, `testplan_id` int(10) unsigned NOT NULL default '0', `name` varchar(100) NOT NULL default 'undefined', `notes` text, `active` tinyint(1) NOT NULL default '1', `is_open` tinyint(1) NOT NULL default '1', `author_id` int(10) unsigned default NULL, `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `release_date` date NULL, `closed_on_date` date NULL, PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/name (`testplan_id`,`name`), KEY /*prefix*/testplan_id (`testplan_id`) ) DEFAULT CHARSET=utf8 COMMENT='Available builds'; CREATE TABLE /*prefix*/cfield_build_design_values ( `field_id` int(10) NOT NULL default '0', `node_id` int(10) NOT NULL default '0', `value` varchar(4000) NOT NULL default '', PRIMARY KEY (`field_id`,`node_id`), KEY /*prefix*/idx_cfield_build_design_values (`node_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/cfield_design_values ( `field_id` int(10) NOT NULL default '0', `node_id` int(10) NOT NULL default '0', `value` varchar(4000) NOT NULL default '', PRIMARY KEY (`field_id`,`node_id`), KEY /*prefix*/idx_cfield_design_values (`node_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/cfield_execution_values ( `field_id` int(10) NOT NULL default '0', `execution_id` int(10) NOT NULL default '0', `testplan_id` int(10) NOT NULL default '0', `tcversion_id` int(10) NOT NULL default '0', `value` varchar(4000) NOT NULL default '', PRIMARY KEY (`field_id`,`execution_id`,`testplan_id`,`tcversion_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/cfield_node_types ( `field_id` int(10) NOT NULL default '0', `node_type_id` int(10) NOT NULL default '0', PRIMARY KEY (`field_id`,`node_type_id`), KEY /*prefix*/idx_custom_fields_assign (`node_type_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/cfield_testprojects ( `field_id` int(10) unsigned NOT NULL default '0', `testproject_id` int(10) unsigned NOT NULL default '0', `display_order` smallint(5) unsigned NOT NULL default '1', `location` smallint(5) unsigned NOT NULL default '1', `active` tinyint(1) NOT NULL default '1', `required` tinyint(1) NOT NULL default '0', `required_on_design` tinyint(1) NOT NULL default '0', `required_on_execution` tinyint(1) NOT NULL default '0', PRIMARY KEY (`field_id`,`testproject_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/cfield_testplan_design_values ( `field_id` int(10) NOT NULL default '0', `link_id` int(10) NOT NULL default '0' COMMENT 'point to testplan_tcversion id', `value` varchar(4000) NOT NULL default '', PRIMARY KEY (`field_id`,`link_id`), KEY /*prefix*/idx_cfield_tplan_design_val (`link_id`) ) DEFAULT CHARSET=utf8; # new fields to display custom fields in new areas # test case linking to testplan (test plan design) CREATE TABLE /*prefix*/custom_fields ( `id` int(10) NOT NULL auto_increment, `name` varchar(64) NOT NULL default '', `label` varchar(64) NOT NULL default '' COMMENT 'label to display on user interface' , `type` smallint(6) NOT NULL default '0', `possible_values` varchar(4000) NOT NULL default '', `default_value` varchar(4000) NOT NULL default '', `valid_regexp` varchar(255) NOT NULL default '', `length_min` int(10) NOT NULL default '0', `length_max` int(10) NOT NULL default '0', `show_on_design` tinyint(3) unsigned NOT NULL default '1' COMMENT '1=> show it during specification design', `enable_on_design` tinyint(3) unsigned NOT NULL default '1' COMMENT '1=> user can write/manage it during specification design', `show_on_execution` tinyint(3) unsigned NOT NULL default '0' COMMENT '1=> show it during test case execution', `enable_on_execution` tinyint(3) unsigned NOT NULL default '0' COMMENT '1=> user can write/manage it during test case execution', `show_on_testplan_design` tinyint(3) unsigned NOT NULL default '0' , `enable_on_testplan_design` tinyint(3) unsigned NOT NULL default '0' , PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/idx_custom_fields_name (`name`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/db_version ( `version` varchar(50) NOT NULL default 'unknown', `upgrade_ts` datetime NOT NULL default CURRENT_TIMESTAMP, `notes` text, PRIMARY KEY (`version`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/events ( `id` int(10) unsigned NOT NULL auto_increment, `transaction_id` int(10) unsigned NOT NULL default '0', `log_level` smallint(5) unsigned NOT NULL default '0', `source` varchar(45) default NULL, `description` text NOT NULL, `fired_at` int(10) unsigned NOT NULL default '0', `activity` varchar(45) default NULL, `object_id` int(10) unsigned default NULL, `object_type` varchar(45) default NULL, PRIMARY KEY (`id`), KEY /*prefix*/transaction_id (`transaction_id`), KEY /*prefix*/fired_at (`fired_at`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/execution_bugs ( `execution_id` int(10) unsigned NOT NULL default '0', `bug_id` varchar(64) NOT NULL default '0', PRIMARY KEY (`execution_id`,`bug_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/executions ( id int(10) unsigned NOT NULL auto_increment, build_id int(10) NOT NULL default '0', tester_id int(10) unsigned default NULL, execution_ts datetime default NULL, status char(1) default NULL, testplan_id int(10) unsigned NOT NULL default '0', tcversion_id int(10) unsigned NOT NULL default '0', tcversion_number smallint(5) unsigned NOT NULL default '1', platform_id int(10) unsigned NOT NULL default '0', execution_type tinyint(1) NOT NULL default '1' COMMENT '1 -> manual, 2 -> automated', execution_duration decimal(6,2) NULL COMMENT 'NULL will be considered as NO DATA Provided by user', notes text, PRIMARY KEY (id), KEY /*prefix*/executions_idx1(testplan_id,tcversion_id,platform_id,build_id), KEY /*prefix*/executions_idx2(execution_type) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/execution_tcsteps ( id int(10) unsigned NOT NULL auto_increment, execution_id int(10) unsigned NOT NULL default '0', tcstep_id int(10) unsigned NOT NULL default '0', notes text, status char(1) default NULL, PRIMARY KEY (id), UNIQUE KEY /*prefix*/execution_tcsteps_idx1(`execution_id`,`tcstep_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/inventory ( id int(10) unsigned NOT NULL auto_increment, `testproject_id` INT( 10 ) UNSIGNED NOT NULL , `owner_id` INT(10) UNSIGNED NOT NULL , `name` VARCHAR(255) NOT NULL , `ipaddress` VARCHAR(255) NOT NULL , `content` TEXT NULL , `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `modification_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY /*prefix*/inventory_idx1 (`testproject_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/keywords ( `id` int(10) unsigned NOT NULL auto_increment, `keyword` varchar(100) NOT NULL default '', `testproject_id` int(10) unsigned NOT NULL default '0', `notes` text, PRIMARY KEY (`id`), KEY /*prefix*/testproject_id (`testproject_id`), KEY /*prefix*/keyword (`keyword`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/milestones ( id int(10) unsigned NOT NULL auto_increment, testplan_id int(10) unsigned NOT NULL default '0', target_date date NULL, start_date date NOT NULL, a tinyint(3) unsigned NOT NULL default '0', b tinyint(3) unsigned NOT NULL default '0', c tinyint(3) unsigned NOT NULL default '0', name varchar(100) NOT NULL default 'undefined', PRIMARY KEY (id), KEY /*prefix*/testplan_id (`testplan_id`), UNIQUE KEY /*prefix*/name_testplan_id (`name`,`testplan_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/node_types ( `id` int(10) unsigned NOT NULL auto_increment, `description` varchar(100) NOT NULL default 'testproject', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/nodes_hierarchy ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(100) default NULL, `parent_id` int(10) unsigned default NULL, `node_type_id` int(10) unsigned NOT NULL default '1', `node_order` int(10) unsigned default NULL, PRIMARY KEY (`id`), KEY /*prefix*/pid_m_nodeorder (`parent_id`,`node_order`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/platforms ( id int(10) UNSIGNED NOT NULL AUTO_INCREMENT, name varchar(100) NOT NULL, testproject_id int(10) UNSIGNED NOT NULL, notes text NOT NULL, PRIMARY KEY (id), UNIQUE KEY /*prefix*/idx_platforms (testproject_id,name) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/req_coverage ( `req_id` int(10) NOT NULL, `testcase_id` int(10) NOT NULL, `author_id` int(10) unsigned default NULL, `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `review_requester_id` int(10) unsigned default NULL, `review_request_ts` TIMESTAMP NULL DEFAULT NULL, KEY /*prefix*/req_testcase (`req_id`,`testcase_id`) ) DEFAULT CHARSET=utf8 COMMENT='relation test case ** requirements'; CREATE TABLE /*prefix*/req_specs ( `id` int(10) unsigned NOT NULL, `testproject_id` int(10) unsigned NOT NULL, `doc_id` varchar(64) NOT NULL, PRIMARY KEY (`id`), KEY /*prefix*/testproject_id (`testproject_id`), UNIQUE KEY /*prefix*/req_spec_uk1(`doc_id`,`testproject_id`) ) DEFAULT CHARSET=utf8 COMMENT='Dev. Documents (e.g. System Requirements Specification)'; CREATE TABLE /*prefix*/requirements ( `id` int(10) unsigned NOT NULL, `srs_id` int(10) unsigned NOT NULL, `req_doc_id` varchar(64) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/requirements_req_doc_id (`srs_id`,`req_doc_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/req_versions ( `id` int(10) unsigned NOT NULL, `version` smallint(5) unsigned NOT NULL default '1', `revision` smallint(5) unsigned NOT NULL default '1', `scope` text, `status` char(1) NOT NULL default 'V', `type` char(1) default NULL, `active` tinyint(1) NOT NULL default '1', `is_open` tinyint(1) NOT NULL default '1', `expected_coverage` int(10) NOT NULL default '1', `author_id` int(10) unsigned default NULL, `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `modifier_id` int(10) unsigned default NULL, `modification_ts` datetime NOT NULL default CURRENT_TIMESTAMP, `log_message` text, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/req_relations ( `id` int(10) unsigned NOT NULL auto_increment, `source_id` int(10) unsigned NOT NULL, `destination_id` int(10) unsigned NOT NULL, `relation_type` smallint(5) unsigned NOT NULL default '1', `author_id` int(10) unsigned default NULL, `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/rights ( `id` int(10) unsigned NOT NULL auto_increment, `description` varchar(100) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/rights_descr (`description`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/risk_assignments ( `id` int(10) unsigned NOT NULL auto_increment, `testplan_id` int(10) unsigned NOT NULL default '0', `node_id` int(10) unsigned NOT NULL default '0', `risk` char(1) NOT NULL default '2', `importance` char(1) NOT NULL default 'M', PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/risk_assignments_tplan_node_id (`testplan_id`,`node_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/role_rights ( `role_id` int(10) NOT NULL default '0', `right_id` int(10) NOT NULL default '0', PRIMARY KEY (`role_id`,`right_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/roles ( `id` int(10) unsigned NOT NULL auto_increment, `description` varchar(100) NOT NULL default '', `notes` text, PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/role_rights_roles_descr (`description`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/testcase_keywords ( `testcase_id` int(10) unsigned NOT NULL default '0', `keyword_id` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`testcase_id`,`keyword_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/tcversions ( `id` int(10) unsigned NOT NULL, `tc_external_id` int(10) unsigned NULL, `version` smallint(5) unsigned NOT NULL default '1', `layout` smallint(5) unsigned NOT NULL default '1', `status` smallint(5) unsigned NOT NULL default '1', `summary` text, `preconditions` text, `importance` smallint(5) unsigned NOT NULL default '2', `author_id` int(10) unsigned default NULL, `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updater_id` int(10) unsigned default NULL, `modification_ts` datetime NOT NULL default CURRENT_TIMESTAMP, `active` tinyint(1) NOT NULL default '1', `is_open` tinyint(1) NOT NULL default '1', `execution_type` tinyint(1) NOT NULL default '1' COMMENT '1 -> manual, 2 -> automated', `estimated_exec_duration` decimal(6,2) NULL COMMENT 'NULL will be considered as NO DATA Provided by user', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/tcsteps ( id int(10) unsigned NOT NULL, step_number INT NOT NULL DEFAULT '1', actions TEXT, expected_results TEXT, active tinyint(1) NOT NULL default '1', execution_type tinyint(1) NOT NULL default '1' COMMENT '1 -> manual, 2 -> automated', PRIMARY KEY (id) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/testplan_tcversions ( id int(10) unsigned NOT NULL auto_increment, testplan_id int(10) unsigned NOT NULL default '0', tcversion_id int(10) unsigned NOT NULL default '0', node_order int(10) unsigned NOT NULL default '1', urgency smallint(5) NOT NULL default '2', platform_id int(10) unsigned NOT NULL default '0', author_id int(10) unsigned default NULL, creation_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY /*prefix*/testplan_tcversions_tplan_tcversion (testplan_id,tcversion_id,platform_id) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/testplans ( `id` int(10) unsigned NOT NULL, `testproject_id` int(10) unsigned NOT NULL default '0', `notes` text, `active` tinyint(1) NOT NULL default '1', `is_open` tinyint(1) NOT NULL default '1', `is_public` tinyint(1) NOT NULL default '1', `api_key` varchar(64) NOT NULL default '829a2ded3ed0829a2dedd8ab81dfa2c77e8235bc3ed0d8ab81dfa2c77e8235bc', PRIMARY KEY (`id`), KEY /*prefix*/testplans_testproject_id_active (`testproject_id`,`active`), UNIQUE KEY /*prefix*/testplans_api_key (`api_key`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/testplan_platforms ( id int(10) unsigned NOT NULL auto_increment, testplan_id int(10) unsigned NOT NULL, platform_id int(10) unsigned NOT NULL, PRIMARY KEY (id), UNIQUE KEY /*prefix*/idx_testplan_platforms(testplan_id,platform_id) ) DEFAULT CHARSET=utf8 COMMENT='Connects a testplan with platforms'; CREATE TABLE /*prefix*/testprojects ( `id` int(10) unsigned NOT NULL, `notes` text, `color` varchar(12) NOT NULL default '#9BD', `active` tinyint(1) NOT NULL default '1', `option_reqs` tinyint(1) NOT NULL default '0', `option_priority` tinyint(1) NOT NULL default '0', `option_automation` tinyint(1) NOT NULL default '0', `options` text, `prefix` varchar(16) NOT NULL, `tc_counter` int(10) unsigned NOT NULL default '0', `is_public` tinyint(1) NOT NULL default '1', `issue_tracker_enabled` tinyint(1) NOT NULL default '0', `reqmgr_integration_enabled` tinyint(1) NOT NULL default '0', `api_key` varchar(64) NOT NULL default '0d8ab81dfa2c77e8235bc829a2ded3edfa2c78235bc829a27eded3ed0d8ab81d', PRIMARY KEY (`id`), KEY /*prefix*/testprojects_id_active (`id`,`active`), UNIQUE KEY /*prefix*/testprojects_prefix (`prefix`), UNIQUE KEY /*prefix*/testprojects_api_key (`api_key`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/testsuites ( `id` int(10) unsigned NOT NULL, `details` text, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/transactions ( `id` int(10) unsigned NOT NULL auto_increment, `entry_point` varchar(45) NOT NULL default '', `start_time` int(10) unsigned NOT NULL default '0', `end_time` int(10) unsigned NOT NULL default '0', `user_id` int(10) unsigned NOT NULL default '0', `session_id` varchar(45) default NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/user_assignments ( `id` int(10) unsigned NOT NULL auto_increment, `type` int(10) unsigned NOT NULL default '1', `feature_id` int(10) unsigned NOT NULL default '0', `user_id` int(10) unsigned default '0', `build_id` int(10) unsigned default '0', `deadline_ts` datetime NULL, `assigner_id` int(10) unsigned default '0', `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `status` int(10) unsigned default '1', PRIMARY KEY (`id`), KEY /*prefix*/user_assignments_feature_id (`feature_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/users ( `id` int(10) unsigned NOT NULL auto_increment, `login` varchar(30) NOT NULL default '', `password` varchar(32) NOT NULL default '', `role_id` int(10) unsigned NOT NULL default '0', `email` varchar(100) NOT NULL default '', `first` varchar(30) NOT NULL default '', `last` varchar(30) NOT NULL default '', `locale` varchar(10) NOT NULL default 'en_GB', `default_testproject_id` int(10) default NULL, `active` tinyint(1) NOT NULL default '1', `script_key` varchar(32) NULL, `cookie_string` varchar(64) NOT NULL default '', `auth_method` varchar(10) NULL default '', PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/users_login (`login`), UNIQUE KEY /*prefix*/users_cookie_string (`cookie_string`) ) DEFAULT CHARSET=utf8 COMMENT='User information'; CREATE TABLE /*prefix*/user_testproject_roles ( `user_id` int(10) NOT NULL default '0', `testproject_id` int(10) NOT NULL default '0', `role_id` int(10) NOT NULL default '0', PRIMARY KEY (`user_id`,`testproject_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/user_testplan_roles ( `user_id` int(10) NOT NULL default '0', `testplan_id` int(10) NOT NULL default '0', `role_id` int(10) NOT NULL default '0', PRIMARY KEY (`user_id`,`testplan_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/object_keywords ( `id` int(10) unsigned NOT NULL auto_increment, `fk_id` int(10) unsigned NOT NULL default '0', `fk_table` varchar(30) default '', `keyword_id` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; # not used - group users for large companies CREATE TABLE /*prefix*/user_group ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(100) NOT NULL, `description` text, PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/idx_user_group (`title`) ) DEFAULT CHARSET=utf8; # not used - group users for large companies CREATE TABLE /*prefix*/user_group_assign ( `usergroup_id` int(10) unsigned NOT NULL, `user_id` int(10) unsigned NOT NULL, UNIQUE KEY /*prefix*/idx_user_group_assign (`usergroup_id`,`user_id`) ) DEFAULT CHARSET=utf8; # ---------------------------------------------------------------------------------- # BUGID 4056 # ---------------------------------------------------------------------------------- CREATE TABLE /*prefix*/req_revisions ( `parent_id` int(10) unsigned NOT NULL, `id` int(10) unsigned NOT NULL, `revision` smallint(5) unsigned NOT NULL default '1', `req_doc_id` varchar(64) NULL, /* it's OK to allow a simple update query on code */ `name` varchar(100) NULL, `scope` text, `status` char(1) NOT NULL default 'V', `type` char(1) default NULL, `active` tinyint(1) NOT NULL default '1', `is_open` tinyint(1) NOT NULL default '1', `expected_coverage` int(10) NOT NULL default '1', `log_message` text, `author_id` int(10) unsigned default NULL, `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `modifier_id` int(10) unsigned default NULL, `modification_ts` datetime NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/req_revisions_uidx1 (`parent_id`,`revision`) ) DEFAULT CHARSET=utf8; # ---------------------------------------------------------------------------------- # TICKET 4661 # ---------------------------------------------------------------------------------- CREATE TABLE /*prefix*/req_specs_revisions ( `parent_id` int(10) unsigned NOT NULL, `id` int(10) unsigned NOT NULL, `revision` smallint(5) unsigned NOT NULL default '1', `doc_id` varchar(64) NULL, /* it's OK to allow a simple update query on code */ `name` varchar(100) NULL, `scope` text, `total_req` int(10) NOT NULL default '0', `status` int(10) unsigned default '1', `type` char(1) default NULL, `log_message` text, `author_id` int(10) unsigned default NULL, `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `modifier_id` int(10) unsigned default NULL, `modification_ts` datetime NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/req_specs_revisions_uidx1 (`parent_id`,`revision`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/issuetrackers ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(100) NOT NULL, `type` int(10) default 0, `cfg` text, PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/issuetrackers_uidx1 (`name`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/testproject_issuetracker ( `testproject_id` int(10) unsigned NOT NULL, `issuetracker_id` int(10) unsigned NOT NULL, PRIMARY KEY (`testproject_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/reqmgrsystems ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(100) NOT NULL, `type` int(10) default 0, `cfg` text, PRIMARY KEY (`id`), UNIQUE KEY /*prefix*/reqmgrsystems_uidx1 (`name`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/testproject_reqmgrsystem ( `testproject_id` int(10) unsigned NOT NULL, `reqmgrsystem_id` int(10) unsigned NOT NULL, PRIMARY KEY (`testproject_id`) ) DEFAULT CHARSET=utf8; CREATE TABLE /*prefix*/text_templates ( id int(10) unsigned NOT NULL, type smallint(5) unsigned NOT NULL, title varchar(100) NOT NULL, template_data text, author_id int(10) unsigned default NULL, creation_ts datetime NOT NULL default CURRENT_TIMESTAMP, is_public tinyint(1) NOT NULL default '0', UNIQUE KEY idx_text_templates (type,title) ) DEFAULT CHARSET=utf8 COMMENT='Global Project Templates'; CREATE TABLE /*prefix*/testcase_relations ( `id` int(10) unsigned NOT NULL auto_increment, `source_id` int(10) unsigned NOT NULL, `destination_id` int(10) unsigned NOT NULL, `relation_type` smallint(5) unsigned NOT NULL default '1', `author_id` int(10) unsigned default NULL, `creation_ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8;
在/var/www/html下:
tar zxvf testlink-1.9.13.tar.gz
mv testlink-1.9.13 testlink
chmod -R 777 testlink
chown -R apache:apache testlink
之后你就可以在浏览器打开 http://server-ip/testlink进行安装了。
如果无法显示正常的网页(就是显示php的代码),去掉 /etc/httpd/conf/httpd.conf中 AddHandler cgi-script .cgi的注释,重启apache。
如果出现验证不通过,说templates_c没有权限的话,就把SELINUX关掉:
# vi /etc/selinux/config
设置SELINUX=disabled
然后重启机器
剩下的事包括:
修改admin的密码,删除/var/www/html/testlink下面的install文件夹,配置邮件(配置邮件下一片文章再写)
6. 安装bugzilla
下载 Bugzilla version 4.4.12
cd /var/www/html/
tar zxvf bugzilla-4.4.12.tar.gz
# cd /var/www/html/
# mv -v bugzilla-4.4.12 bugzilla
注意:这里/var/www/html/bugzilla/就是Bugzilla主目录。
# cd /var/www/html/bugzilla/
运行./checksetup.pl--check-modules
你会发现有一些东西缺失,如果是可选的就不用装了。
运行 sudo ./checksetup.pl,它会在/var/www/html/bugzilla路径下自动生成一个名为localconfig的文件。
确认在localconfig文件中所输入的数据库名、用户和密码是否正确。
vi ./localconfig
再次运行:这次应该能看到complete了。
./checksetup.pl
修改apache的配置:
vi /etc/httpd/conf/httpd.conf
添加如下内容:
<Directory /var/www/html/bugzilla>
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI
DirectoryIndex index.cgi index.html
AllowOverride All
Allow from all
</Directory>
重启apache,打开 http://ip/bugzilla, 用你配置过程中输入的邮箱和密码登录。
7. 集成Testlink和bugzilla
在testlink中添加一个项目后,点击左上角的 Issue Tracker Management, 打开一个新的页面,名字自己定, 类型选Buzilla(db),内容如下:
注意替换里面的ip地址,以及数据库名字等
<!-- Template bugzilladbInterface -->
<issuetracker>
<dbhost>192.168.96.129:3306</dbhost>
<dbname>bugs</dbname>
<dbtype>mysql</dbtype>
<dbuser>root</dbuser>
<dbpassword>xxxxxxxx</dbpassword>
<uricreate>http://192.168.96.129/bugzilla/</uricreate>
<uriview>http://192.168.96.129/bugzilla/show_bug.cgi?id=</uriview>
</issuetracker>
成功后,打开我们创建的项目,就能看到我们新创建的这个tracker了。