一步一步以安装包的方式,搭建API测试工具Hitchhiker

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 首先要感谢Hitchhiker的作者BrookShi(https://github.com/brookshi/Hitchhiker)!感谢他分享这个非常棒的API测试平台。Hitchhiker 是一个基于Nodejs的跨平台Web程序,你可以部署到 Linux, Mac or Windows。

首先要感谢Hitchhiker的作者BrookShi(https://github.com/brookshi/Hitchhiker)!感谢他分享这个非常棒的API测试平台。Hitchhiker 是一个基于Nodejs的跨平台Web程序,你可以部署到 Linux, Mac or Windows。Hitchhiker 在Docker Hub上也有镜像可以使用,所以推荐的方式还是用Docker来部署,不论是首次还是以后升级都会更容易。

由于笔者不熟悉Docker的使用,采用的是安装包方式部署。由于Hitchhiker依赖的软件较多,部署过程中遇到一些弯路,这个文档也是一边探索一边写成的。搭建时还是1月底,基于Hitchhiker v0.8,现在已经更新到0.9。最近忙于研究Python自动化方面的工作,没有把搭建文档发布到博客园。

 

首先是准备工作:

  1. 安装Development Tools
  2. 安装(更新)Python3
  3. 安装Node
  4. 更新C++
  5. 安装MySQL Server

 

最后是我们的主角Hitchhiker:

这部分的搭建步骤,请参阅在线文档:http://doc.hitchhiker-api.com/cn/installation/StepByStep.html

 

1. 更新系统:

我的系统是CentOS 7.3。

# yum update -y
# yum group install -y "Development Tools"

 

2. 升级Python到Python3

Nodejs需要,请安装python前,先安装此模块。

# yum install -y bzip2*

安装依赖组件:

# yum install -y zlib zlib-devel
# yum install -y gcc gcc-c++ kernel-devel

下载Python的压缩包,并解压:

# wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
# xz -d Python-3.6.4.tar.xz
# tar xvf Python-3.6.4.tar
# cd Python-3.6.4

创建安装文件夹,并开始编译:

# mkdir /usr/local/python3
# ./configure --prefix=/usr/local/python3 --enable-optimizations
# make && make install

添加到环境变量:

export PATH=$PATH:/usr/local/python3/bin

确认安装完成:

# which python
# python -V

替换系统中原有的python2:

/usr/bin目录中有python, python2.7, python2三个文件,其实都是指向python2.7的,这里将python(软连接文件)删除。

# cd /usr/bin
# rm -f python

重新创建python的软连接文件,指向python3.6:

# ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
# python -V

检查python的版本是否被正确替换掉了。

 

收尾替换工作:

原则:所有python相关的应用,如果为使用/usr/bin/python开头的脚本统统替换掉,如果其只能在python2.7下执行,则替换为python2.7。比如,不替换的话,yum命令将无法执行。

根据网路上的信息,相关的文件可能有如下, 具体情况视具体情况而定:

   - /usr/bin/yum

   - /usr/libexec/urlgrabber-ext-down

很容易,编辑/usr/bin/yum,在第一行的末尾增加一个2就好了。

修改前:#! /usr/bin/python

修改后:#! /usr/bin/python2

 

3. 安装NodeJS

首先从官网下载NodeJS源码:

http://nodejs.org/

命令:wget http://nodejs.org/dist/<版本号>/node-<版本号>.tar.gz

# wget https://nodejs.org/dist/v8.9.4/node-v8.9.4.tar.gz

安装nodejs所要依赖的包

安装gcc:

# yum install -y gcc gcc-c++

安装libssl-dev:

# yum install -y openssl-devel

解压NodeJS源码文件:

# tar zxvf node-v8.9.4.tar.gz
# cd node-v8.9.4

配置Node安装目录:

# mkdir -p /usr/local/node
# ./configure --prefix=/usr/local/node

此时可能会提示C++版本太旧,需要更新:

WARNING: C++ compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++)

如果出现C++版本太旧的提示内容,中断Node的安装,转到下一段落,更新C++的部分。

 

4. 更新C++

从Node的目录中退出来,下载gcc源码压缩包。

到下面的网站上查找gcc源码:

http://gcc.skazkaforyou.com/releases/

# wget http://gcc.skazkaforyou.com/releases/gcc-4.9.4/gcc-4.9.4.tar.gz

如果下载很慢,可能需要扶梯。

下载完成后,解压缩:

# tar zxvf gcc-4.9.4.tar.gz
# cd gcc-4.9.4

运行download_prerequisites脚本,这个脚本会自动帮你下载所需要的依赖文件和库:

# ./contrib/download_prerequisites

等下载完成后,继续执行后续命令。

创建输出目录:

# mkdir gcc-build-4.9.4
# cd gcc-build-4.9.4
# ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

生成make文件:

# make

编译过程非常久,大概需要一个小时。

安装gcc:

# make install

完成后,需要用新的动态库文件,代替系统原有的旧版本:

查找编译gcc时生成的最新动态库:

# find / -name "libstdc++.so*"

 如上图所示,/usr/lib64目录下,没有新版本的libstdc++.so.6.0.20。

将找到的动态库libstdc++.so.6.0.20复制到/usr/lib64目录:

# cp /root/downloads/gcc-4.9.4/gcc-build-4.9.4/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20 /usr/lib64/

切换工作目录至/usr/lib64;由于libstdc++.so.6对应的是旧版本文件,删除原来的软连接:

# cd /usr/lib64
# ll libstdc++.so.6*

# rm -rf libstdc++.so.6

 将默认库的软连接指向最新动态库:

# ln -s libstdc++.so.6.0.20 libstdc++.so.6
 

 更新C++的工作完成后,继续Node的安装。

 

 回到node的源代码目录,继续编译并安装Node的源码:

# ./configure --prefix=/usr/local/node
# make && make install

验证安装是否成功:

# node -v
如果看到以下错误提示:
  
原因是,在/usr/local/bin目录中没有node可执行文件,需要手工添加到环境变量。
export PATH=$PATH:/usr/local/node/bin
  

 

5. 安装MySQL

安装前,先删除系统预装的MariaDB。

- 因为CentOS的默认数据库已经不再是MySQL了,而是MariaDB,为什么呢?

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 

查看当前安装的mariadb包:
# rpm -qa | grep mariadb

卸载mariadb:
# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

Mysql数据库安装过程如下:

下载mysql的repo源(CentOS 7.2的yum源中默认没有mysql,要先下载mysql的repo源):

# wget http://repo.mysql.com/mysql57-community-release-el7.rpm
安装mysql57-community-release-el7.rpm包:
# rpm -ivh mysql57-community-release-el7.rpm --nodeps --force

安装这个包后,会获得两个mysql的yum repo源:
# ls -l /etc/yum.repos.d/mysql-community*

确认存在下列两个repo源文件:

 - mysql-community.repo
 - mysql-community-source.repo 

安装mysql:

# yum install -y mysql-server

启用mysql服务:

# systemctl enable mysqld
# systemctl start mysqld

查看MySQL服务是否已启动:
# systemctl status mysqld

重置root密码:

MySQL5.7会在安装后为root用户生成一个随机密码,而不是像以往版本的空密码。可以安全模式修改root登录密码或者用随机密码登录修改密码。

MySQL为root用户生成的随机密码通过mysqld.log文件可以查找到:

# grep 'temporary password' /var/log/mysqld.log
  

  # mysql -u root -p

  mysql> Enter password: (输入刚才查询到的随机密码, NjAh84pp,(-g

 修改root用户密码:(MySQL的密码策略比较复杂,过于简单的密码会被拒绝)。首先修改安全策略,避免过于简单的密码被拒绝:

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=4;

 重置用户密码,完成后,保存退出::

mysql> alter user 'root'@'localhost' identified by 'root-1234';

mysql> flush privileges;
mysql> quit;

 使用刚刚设置的新密码登录:

# mysql -u root -p

如果进行操作出现下面的提示:
You must reset your password using ALTER USER statement before executing this statement.

就再设置一遍密码:
mysql> set password = password('root-1234');

开放3306端口:

允许使用用户名root密码root-1234从任何主机连接到mysql服务器。

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root-1234' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

 

以上是Hitchhiker所有依赖的组建安装,后面的步骤请阅读官方手册。

这里说一下,如果运行node setup.js时,看到错误提示:

/bin/sh: pm2: command not found

这是由于pm2没有安装,解决方法如下:

# npm install pm2 -g

  # whereis pm2
  创建pm2的软连接文件
  # ls -n /usr/local/node/bin/pm2 /usr/bin/pm2

然后再次执行node setup.js,就可以打开Hitchhiker的设置页面了。

 

另外,BrookShi已经在最新的文档中注明了,如果是升级,记得保留pm2.json,这里有你所有的配置,如果覆盖了需要重新设置!

升级时,可以拷贝build/pm2.json文件到别处、 移动旧版本Hitchhiker文件夹到备份目录。然后,解压Hitchhiker最新版的zip文件到原路径,再用之前的pm2.json文件覆盖同名文件就好了。

 

关于Hitchhiker的启动,可以写一个小脚本,runAPP.sh:

# vim runApp.sh
pm2 start ./pm2.json &

# chmod +x runApp.sh

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
15天前
|
人工智能 数据可视化 测试技术
Postman 性能测试教程:快速上手 API 压测
本文介绍API上线后因高频调用导致服务器告警,通过Postman与Apifox进行压力测试排查性能瓶颈。对比两款工具在批量请求、断言验证、可视化报告等方面的优劣,探讨API性能优化策略及行业未来发展方向。
Postman 性能测试教程:快速上手 API 压测
|
2月前
|
XML 安全 测试技术
【干货满满】分享什么是API接口测试
API接口测试是验证应用程序编程接口功能、性能、安全性及兼容性的关键环节,通过模拟请求并验证响应结果,确保接口能正确处理各种输入和场景。测试内容涵盖功能验证、性能评估、安全防护、兼容性验证及系统可靠性。相比UI测试,API测试无需界面依赖,支持数据驱动与自动化,适用于持续集成流程。常见接口类型包括RESTful、SOAP和GraphQL API,广泛应用于电商、金融及社交平台,保障系统间数据交互的安全与高效。
|
3月前
|
人工智能 监控 安全
API安全测试工具:数字经济的免疫防线
API安全面临漏洞盲区、配置错误与合规碎片三大挑战,传统手段难抵新型风险。破局需构建智能漏洞探针、配置审计中枢与合规映射引擎三位一体防御矩阵。Burp Suite、Noname Security、Traceable AI与板栗看板等工具助力企业实现自动化检测、精准响应与高效合规,打造API安全免疫体系。
|
3月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
27天前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
276 11
|
7月前
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
6月前
|
监控 测试技术 数据库连接
RunnerGo API 性能测试实战:从问题到解决的全链路剖析
API性能测试是保障软件系统稳定性与用户体验的关键环节。本文详细探讨了使用RunnerGo全栈测试平台进行API性能测试的全流程,涵盖测试计划创建、场景设计、执行分析及优化改进。通过电商平台促销活动的实际案例,展示了如何设置测试目标、选择压测模式并分析结果。针对发现的性能瓶颈,提出了代码优化、数据库调优、服务器资源配置和缓存策略等解决方案。最终,系统性能显著提升,满足高并发需求。持续关注与优化API性能,对系统稳定运行至关重要。
|
2月前
|
监控 安全 测试技术
API测试工具评测:Apipost与Apifox的优劣深度解读
本文对比了Apipost与Apifox在API设计、数据建模、代码生成、测试能力、协作权限、性能监控、插件生态、文档管理及安全合规等方面的差异。Apifox在专业性、自动化、扩展性及团队协作上表现更优,尤其适合中大型项目与复杂管理需求,而Apipost功能较基础,适用于轻量级使用场景。
|
2月前
|
JSON 安全 测试技术
什么是API接口测试?这可能是全网最全的教程了!
API 是应用程序间的“中间人”,用于实现通信和数据交换。随着微服务架构的普及,API 数量激增,其质量对系统稳定性至关重要。API 测试可验证功能、性能与安全性,帮助开发者在部署前发现并修复问题,提升系统可靠性。测试内容包括请求方法、URL、请求头、请求体、响应状态码与响应数据等。常用工具如 Postman、AREX 可辅助测试,确保 API 在不同场景下的正确性与稳定性。
|
3月前
|
人工智能 自然语言处理 测试技术
AI时代,Apipost和Apifox如何利用AI技术赋能API研发测试管理所需?
在数字化转型加速背景下,API成为企业互联互通的关键。Apipost与Apifox作为主流工具,在AI赋能方面差异显著。Apipost通过智能参数命名、接口设计自动化、测试用例生成、断言自动化等功能大幅提升研发效率和质量,尤其适合中大型企业及复杂业务场景。相比之下,Apifox功能依赖手动操作较多,适用性更偏向初创或小型项目。随着AI技术发展,Apipost展现出更强的智能化与前瞻性优势,为企业提供高效、稳定的API管理解决方案,助力其在竞争激烈的市场中实现创新突破。
100 0

热门文章

最新文章