Apache/2.4.6
CentOS 7.1611 64 位
PHP 5.6.30
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; |