一步一步以安裝包的方式,搭建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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM