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


    首先要感谢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
  • 相关阅读:
    Linux下的tar压缩解压缩命令详解
    python学习笔记-day9-2【面向对象】
    python学习笔记-day9-1【发送邮件模块 yagmail】
    python学习笔记-day8-4-【python 内置函数补充:zip,map,filter】
    python学习笔记-day8-3-【python 网络请求及requests模块】
    python学习笔记-day8-2-【python 异常处理 try except】
    python学习笔记-day8-1-【python flask接口开发】
    day9-Python学习笔记(二十一)单元测试
    day9-Python学习笔记(二十)数据库备份,修改父类的方法
    day8-Python学习笔记(十八)面向对象,self,私有,属性方法
  • 原文地址:https://www.cnblogs.com/JasonMa1980/p/8493630.html
Copyright © 2020-2023  润新知