背景
公司拟用testlink管理测试用例,从完全纯粹的离线环境中搭建testlink还比较麻烦,网上资料虽多,但是涉及版本较老,很多不适用,所以总结本次完整搭建过程,希望有所帮助。
安装过程
提前准备
需要机器能联网,我这边是离线环境,可通过配置proxy实现。
apache
sudo apt-get install apache2
启停命令:
sudo systemctl start/restart/stop apache2.service
验证: http://bigdata203/
php
安装
主要以下两步:
sudo apt-get install php7.0
sudo apt-get install libapache2-mod-php7.0
问题1: 在安装libapache2-mod-php7.0时提示找不到包,以下方案解决:
sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt-get install libapache2-mod-php7.0
问题2:在sudo add-apt-repository ppa:ondrej/php提示’~ondrej’ user or team does not exist。这可能和本地代理有关,使用以下方案解决
export http_proxy=http://192.168.10.20:808 export https_proxy=http://192.168.10.20:808 sudo -E add-apt-repository ppa:ondrej/php
验证
在/var/www/html中创建test.php,内容如下:
<?php
phpinfo();
?>
浏览器访问:http://bigdata203/test.php
testlink
安装
安装包官方地址: https://github.com/TestLinkOpenSourceTRMS/testlink-code/releases/tag/1.9.20
将testlink安装包解压放置到/var/www/html下:
浏览器直接访问:http://bigdata203/testlink 勾选相关协议,一直下一步,到这个页面:
配置
主要看上面的警告信息和下面的错误信息
Web and PHP configuration: 斜体样式默认情况下可能有多个警告信息,如上图
修改php.ini即可解决相关警告。配置文件默认路径:/etc/php/7.0/apache2/php.ini
Maximum Session Idle Time before Timeout: gc_maxlifetime 默认1440,可以设置为3600 Checking max. execution time: max_execution_time 设置120
后面的警告信息就是是否启用相关扩展了,我这边只用到mysql,所以只需解决mysql的警告即可。即php7配置mysql扩展。(其他警告根据实际决定是否下载扩展,过程和mysql类似)。
下载extension
sudo apt-get install php7.0-mysql
启用extension:vi /etc/php/7.0/apache2/php.ini 将 “extension=php_mysqli.dll” 的注释取消即可 重启apache2:
sudo systemctl restart apache2.service
根据界面提示,我还开启了以下扩展:
extension=php_gd2.dll
extension=php_curl.dll
对应需要安装的东西:
sudo apt-get install php7.0-gd
sudo apt-get install php7.0-curl
最终界面检查结果: 下一步:填写数据库连接信息 下一步: 根据提示,是因为没有权限导致的,可直接修改整个目录权限
sudo chown -R www-data:www-data testlink/
删除自动创建的数据库,再来一次install: 根据界面提示(IMPORTANT NOTICE,还重复了三次~),还需要手工运行这个sql(脚本中将YOUR_TL_DBNAME替换为实际的库名): /var/www/html/testlink/install/sql/mysql/testlink_create_udf0.sql
USE `testlink`; /* Replace before run */
DROP function IF EXISTS `UDFStripHTMLTags`;
DELIMITER $$
USE `testlink`$$ /* Replace before run */
CREATE FUNCTION `UDFStripHTMLTags`(Dirty TEXT) RETURNS TEXT CHARSET utf8
BEGIN
DECLARE iStart, iEnd, iLength int;
WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO
BEGIN
SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty ));
SET iLength = ( iEnd - iStart) + 1;
IF iLength > 0 THEN
BEGIN
SET Dirty = Insert( Dirty, iStart, iLength, '');
END;
END IF;
END;
END WHILE;
RETURN Dirty;
END$$
DELIMITER ;
验证
前台访问: admin/admin 查看日志报错信息如下(/var/log/apache2/error.log): 安装php7.0-mbstring即可
sudo apt-get install php7.0-mbstring
再次访问:收工!
配置SMTP
默认情况,离线环境下是不能发送邮件的,如果用户密码忘了,点击登录界面的忘记密码会报错(管理员点击重置密码也会报错)。所以需要解决这个问题。我们已经有了一个代理,现在的思路是让PHP通过代理发送邮件,阅读源码发现,testlin发送邮件的类是PHPMailer,源码是不支持代理的,所以参考网上大哥的魔改代码,通过socks5实现代理发送邮件。一个字:绝! 参考链接: 应用:https://blog.csdn.net/rty426/article/details/89139251 原理:https://blog.csdn.net/rty426/article/details/88899069
如果原理看不懂,那就直接按以下步骤执行,具体步骤:
- 修改:testlink/vendor/phpmailer/phpmailer/src/PHPMailer.php
- 修改:testlink/vendor/phpmailer/phpmailer/src/SMTP.php
第一二个文件就是大神修改后的文件(加入proxy功能),文件内容见大神连接
替换时需要注意不要改变原来的namespace,即从class开始内容替换 3. 修改:testlink/lib/functions/email_api.php 我这边的版本在 186行,代理地址根据实际情况填写
$mail->proxy = [
'proxyHost' => '192.168.10.20',
'proxyPort' => '1080'
];
5. 配置SMTP:testlink/config.inc.php
$g_smtp_host = 'smtp.163.com';
$g_tl_admin_email = 'yangqintest@163.com';
$g_from_email = 'yangqintest@163.com';
$g_return_path_email = 'yangqintest@163.com';
$g_smtp_username = 'yangqintest@163.com';
$g_smtp_password = 'SFSFSFAFAFA';
验证: 在忘记密码页面,输入用户名后,提示邮件发送成功: 收到的邮件:
再次向大哥致敬~ https://blog.csdn.net/rty426/article/details/89139251
|