superset手動安裝實踐-非pip安裝
阿新 • • 發佈:2019-02-14
一、環境
作業系統:[[email protected] ~]$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
python版本:
[[email protected] ~]$ python -V
Python 2.7.5
安裝操作使用者:root
伺服器無法連線外網
二、安裝前準備
官網介紹的superset使用pip管理的,因此官網介紹的都是pip命令安裝superset,且superset執行在Python虛擬環境中,因此需要virtualenv。
python-setuptools必須要有,安裝python模組工具包;
本次安裝不按官網介紹進行,本次安裝從github下載原始碼安裝,下載選擇版本0.20.5(之前有下週0.23版本,但此版本需要python3.5),根據安裝過程中提示需要安裝一下python模組:
安裝thrift 0.9.3以上版本,本次安裝使用0.9.3;
安裝sasl 0.2.1以上版本, 本次使用0.2.1;
安裝thrift_sasl 0.2.1以上版本,本次安裝使用0.2.1;
安裝sqlparse 0.2.3以上版本,本次安裝使用0.2.3;
安裝SQLAlchemy 1.1.9,本次使用1.1.9版本;
安裝SQLAlchemy-Utils 0.32.19,本次使用0.32.19;
安裝six 1.10.0,本次安裝1.10.0;
安裝simplejson 3.10.0,本次安裝3.10.0;
安裝certifi 2017.4.17以上版本,本次安裝2017.4.17;
安裝urllib3 1.21.1以上且1.22以下版本,本次安裝1.21.1;
安裝idna 2.5以上且2.6以下版本,本次使用2.5;
安裝setuptools_scm,本次使用1.15.4;
安裝pytest-runner ,本次安裝3.0;
安裝chardet 3.0.2以上且3.1.0以下版本,本次使用3.0.2;
安裝requests 2.17.3,本次安裝2.17.3;
安裝PyYAML 3.11以上,本次安裝3.11;
安裝python-dateutil 2.6.0,本次安裝2.6.0;
安裝fture,本次安裝0.16.0;
安裝PyHive 0.4.0,本次安裝0.4.0;
安裝pydruid 0.3.1,本次安裝0.3.1;
安裝parsedatetime 2.0.0,本次安裝2.0.0;
安裝numpy 1.7.0以上,本次安裝1.7.0;
安裝pandas0.20.3,本次安裝0.20.3;
安裝Markdown 2.6.8,本次安裝2.6.8;
安裝gunicorn 19.7.1,本次安裝19.7.1;
安裝humanize 0.5.1,本次安裝0.5.1;
安裝Babel 2.3以上,本次安裝2.3.4;
安裝tornado 4.2.0,本次安裝4.2;
安裝amqp 1.4.9以上且2.0以下,本次安裝1.4.9;
安裝anyjson 0.3.3以上,本次安裝0.3.3;
安裝kombu 3.0.37以上且3.1以下,本次安裝3.0.37;
安裝billiard 3.3.0.23以上且3.4以下,本次安裝3.3.0.23;
安裝celery 3.1.25,本次安裝3.1.25;
安裝flower 0.9.1, 本次安裝0.9.1;
安裝WTForms ,本次安裝2.0.2;
安裝Flask-Wtf 0.14.2,本次安裝0.14.2;
安裝Flask-Testing 0.6.2,本次安裝0.6.2;
安裝Flask-SQLAlchemy 2.1,本次安裝2.1;
安裝Flask-Script 2.0.5,本次安裝2.0.5;
安裝Mako,本次安裝1.0.7;
安裝alembic 0.7.0以上,本次安裝0.7.0;
安裝Flask-Migrate 2.0.3,本次安裝2.0.3;
安裝Flask-Cache 0.13.1,本次安裝0.13.1;
安裝python-openid 2.0以上,本次安裝2.2.5;
安裝Flask-OpenID 1.2.5,本次安裝1.2.5;
安裝Flask-Login 0.2.11,本次安裝0.2.11;
安裝Flask-Babel 0.11.1,本次安裝0.11.1;
安裝click 6.7,本次安裝6.7;
安裝itsdangerous 0.21以上,本次安裝0.21;
安裝Jinja2 2.4以上,本次安裝2.4;
安裝Werkzeug 0.7以上,本次安裝0.7;
安裝Flask 0.12.2,本次安裝0.12.2;
安裝colorama 0.3.9,本次安裝0.3.9;
安裝Flask-Appbuilder 1.9.4,本次安裝1.9.4;
安裝asn1crypto 0.21.0以上,本次安裝0.21.0;
安裝cffi 1.7以上,本次安裝1.7.0;
安裝enum34,本次安裝1.1.5;
安裝ipaddress,本次安裝1.0.19;
安裝cryptography 1.9,本次安裝1.9;
安裝docutils 0.10以上,本次安裝0.10;
安裝jmespath 0.7.1以上且1.0以下,本次安裝0.7.1;
安裝botocore 1.5.0以上且1.6.0以下,本次安裝1.5.0;
安裝futures 2.2.0以上且4.0以下,本次安裝2.2.0;
安裝s3transfer 0.1.10以上且0.2.0以下,本次安裝0.1.10;
安裝boto3 1.4.4,本次安裝1.4.4;
下載js包,因為npm打包指令碼中有用到yarn,而npm安裝yarn過程中發現安裝yarn依賴node版本6.5以上,故本次使用比較高的版本,選擇了nodejs8.9.0版本,
本次在本地安裝nodejs,下載完jsp包後傳到伺服器。我使用的是淘寶npm源,設定方法是
npm config set registry https://registry.npm.taobao.org
由於本人pc機使用的是代理主機聯網的,故需要配置npm代理,配置方法是
npm config set proxy http://代理主機:埠
將下載好的js包,拷貝到伺服器對應目錄下。
四、手動安裝
下載原始碼:
https://github.com/apache/incubator-superset
解壓:
unzip incubator-superset-0.20.zip
進入原始碼目錄:cd incubator-superset-0.20
打包原始碼: python setup.py build
安裝前需要將前端程式碼拷貝進build目錄下,將superset/assets目錄拷貝到build/lib/superset/static目錄下(不包括 docs及node_modles目錄),
因為呼叫setup指令碼的build命令,無法將superset/static目錄打進安裝包裡(因為裡面只有一個軟連線目錄,暫時不知道為何無法打進build目錄下里),
所以目前是build後手動拷貝到build目錄下。
安裝:python setup.py --verbose install
安裝需要root使用者,因為安裝過程中需要向本地python安裝目錄寫入檔案。
Superset依賴很多,對於內網環境來說,安裝很不方便。因此需要考慮在一臺可以聯網的主機上編譯打包一個包含所有依賴的全量包,最好能打成rpm包方便安裝。這裡就可以使用virtualenv來隔離出一個python環境,將安裝的第三方依賴存放在指定的目錄裡,最後將這個目錄與原始碼的superset目錄一起打包部署即可。
五、啟動服務
啟動服務不需要root使用者。
修改配置檔案superset/config.py
修改資料庫連線:SQLALCHEMY_DATABASE_URI = 'mysql://superset:[email protected]/superset?charset=utf8',因為預設使用的是sqlite3,
這個資料庫不熟悉,因此使用mysql,使用mysql前需要安裝mysqlclient的python模組,本次我使用的是1.3.12版本;
建立管理員使用者,執行完這一步會在mysql資料庫裡刷出幾張表
fabmanager create-admin --app superset
初始化資料庫:
superset db upgrade
資料庫初始化失敗了,修改superset/migrations/versions/2591d77e9831_user_id.py指令碼
將def upgrade():
with op.batch_alter_table('tables') as batch_op:
batch_op.add_column(sa.Column('user_id', sa.Integer()))
batch_op.create_foreign_key('user_id', 'ab_user', ['user_id'], ['id'])
改為def upgrade():
with op.batch_alter_table('tables') as batch_op:
batch_op.add_column(sa.Column('user_id', sa.Integer(), sa.ForeignKey("ab_user.id")))
重新打包安裝,然後重新upgrade即可。
載入樣例
superset load_examples
初始化
superset init
啟動
nohup superset runserver >> /var/log/superset/superset.log 2>&1 &
六、訪問服務
瀏覽器輸入http://主機:8088即可。