Airpal 部署文檔

Airpal 部署文檔

寫在前面: 如果”空氣淨化器(Airpal)”出現諸如不能查詢列信息、打開主頁空白等問題,主要問題就是它本身,而不是Presto。本人嘗試過Presto 0.145,0.175,0.179三個版本搭配沒有版本號的 Airpal(坑貨),問題都在於“空氣淨化器”,至今已有一年它沒有更新過了,相反,Presto是個版本帝。

環境

  1. centos 6.4
  2. Node v6.10.3 (當前)
  3. JDK 1.8 (官方:Java 7 or higher)
  4. yum install -y gcc-c++ (編譯需要)

1.下載

 git clone https://github.com/airbnb/airpal.git

 (建議)下載Node:
 wget https://nodejs.org/dist/v6.10.3/node-v6.10.3-linux-x64.tar.xz

2.解壓

  • 解壓airpal unzip airpal.zip
  • 解壓Node xz -d node-v6.10.3-linux-x64.tar.xz
    tar -xf node-v6.10.3-linux-x64.tar

2.1 Node 環境變量

Node安裝目錄 : /opt/node/
# Node
export NODE="/opt/node/bin/"
export PATH=$PATH:$NODE
export NODE_LIB=$NODE/lib
export NODE_ENV='development'  # 預防構建成功並啓動,訪問主頁是發現是空白頁面

3.啓動步驟

3.1構建Airpal

  • 構建過程中會去下載gradle-2.2.1-all.zip,下載速度很慢很難接受的話,可以手動完成:
 wget https://downloads.gradle.org/distributions/gradle-2.2.1-all.zip
 cp -p gradle-2.2.1-all.zip  /home/hadoop/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53
 ./gradlew -Dairpal.prestoVersion=0.175 clean shadowJar

注: /home/hadoop/.gradle/wrapper/dists/gradle-2.2.1-all/c64ydeuardnfqctvr1gm30w53 該目錄是提速關鍵
新手注意:這裏的目錄中的用戶名應該是你自己的。

使用Gradle構建工具構建後臺java代碼和基於Node.js構建前端JS代碼。

—————————————————— 有Node(當使用本地Node出現編譯不過時候,嘗試“沒有Node”情況的命令):

如果你本機有安裝node.js和npm,可以使用本地安裝的node.js來構建:
./gradlew clean shadowJar -Dairpal.useLocalNode

—————————————————— 沒有Node:————————————————————————

如果本地沒有安裝,運行如下命令行,可以自動下載node.js和npm:
./gradlew clean shadowJar

你還可以指定特定的presto版本:
./gradlew -Dairpal.prestoVersion=0.175 clean shadowJar

此處有坑:
  • 添加環境變量:
    export NODE_ENV=’development’
    如果構建成功並啓動,訪問主頁是發現是空白頁面,那麼請添加上述環境變量之後,重新構建並啓動,即可正常訪問。

3.2創建mysql數據庫

爲Airpal創建一個數據庫,建議就叫airpal

3.3配置文件設置

需要配置一個reference.yml 配置文件,可以直接copy目錄裏面的示例配置文件。
```
mv reference.example.yml reference.yml   
vim reference.yml
```
```
    # HTTP-specific options.
    # 最好查詢設置的端口是否被佔用。
    server:
    applicationConnectors:
        - type: http
        port: 8081
        idleTimeout: 10 seconds

    adminConnectors:
        - type: http
        port: 8082

    shiro:
    iniConfigs: ["classpath:shiro_allow_all.ini"]

    dataSourceFactory:
    driverClass: com.mysql.jdbc.Driver
    user: airpal
    password: passwd
    url: jdbc:mysql://localhost:3306/airpal

    flywayFactory:
    locations: ["classpath:db.migration.common", "classpath:db.migration.mysql"]

    # The URL to the Presto coordinator.
    prestoCoordinator: http://prestoCoor:9098
```

3.4數據庫初始化

當reference.yml配置了正確的mysql信息後,我們要初始化之前創建的airpal數據庫。


java -Duser.timezone=UTC -cp build/libs/airpal-*-all.jar com.airbnb.airpal.AirpalApplication db migrate reference.yml

3.5啓動Airpal

直接啓動Airpal:
java -server -Duser.timezone=UTC -cp build/libs/airpal-*-all.jar com.airbnb.airpal.AirpalApplication server reference.yml

這裏可以將命令直接寫成腳本,省去每次複製這串又臭又長的命令。

echo "java -server -Duser.timezone=UTC -cp build/libs/airpal-*-all.jar com.airbnb.airpal.AirpalApplication server reference.yml" > start-airpal.sh  && chmod 744 start-airpal.sh

3.6訪問Airpal

根據reference.yml配置的端口號即可訪問,如果是使用的默認配置,則訪問:http://ip:8081

當然,你在部署的時候可以修改端口號。

報錯

  1. 缺少g++
    解決: yum install -y gcc-c++

  2. 無效的源 java 1.8
    解決: 使用本地安裝的node.js來構建:
    ./gradlew clean shadowJar -Dairpal.useLocalNode

  3. /opt/node/lib/node_modules/
    解決: 少見的問題:
    讓其自動下載node.js和npm,補全缺少的 *類modules
    $ ./gradlew clean shadowJar
    如沒編譯成功,繼續下一步:

    使用本地安裝的node.js來構建:
           $ ./gradlew clean shadowJar -Dairpal.useLocalNode
    
  4. 用本地 node 安裝:

    Failed at the [email protected] install script ‘node-gyp rebuild’.

    參考: http://blog.csdn.net/salmonellavaccine/article/details/51573834

    npm install node-gyp-install && /opt/node/lib/node_modules/node-gyp/bin/node-gyp.js

  5. Table.java:80: 錯誤: 不兼容的類型: ConnectorId無法轉換爲String
    使用使用本地 Node 安裝;

  6. 指定明確的版本號後,編譯失敗。

  7. 編譯成功後,打開WEB-UI 主頁是一片空白。

WEB-UI :

查詢表時候:
INFO [2017-06-22 08:25:45,217] com.airbnb.shiro.filter.AllowAllFilter: onAccessDenied called
INFO [2017-06-22 08:25:45,217] com.airbnb.shiro.filter.AllowAllFilter: createToken called
WARN [2017-06-22 08:25:45,218] com.airbnb.shiro.SessionListenerLogger: Saw START of Session: [org.apache.shiro.session.mgt.SimpleSession,id=f56ef730-7999-46fe-aebc-99043fe0f499]
10.0.10.153 - - [22/六月/2017:08:25:45 +0000] “PUT /api/execute HTTP/1.1” 200 47 “http://10.0.10.82:9095/app” “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0” 10

選擇表的時候:

ERROR [2017-06-22 08:28:13,837] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: abe14b70438bb2ea

Causing: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章