superset手動安裝實踐-非pip安裝

一、環境

操作系統:
[bdapp@vdkapp31 ~]$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
python版本:
[bdapp@vdkapp31 ~]$ 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:superset@vdkapp31/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即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章