首先要感謝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自動化方面的工作,沒有把搭建文檔發布到博客園。
首先是准備工作:
- 安裝Development Tools
- 安裝(更新)Python3
- 安裝Node
- 更新C++
- 安裝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源碼:
命令: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


