本文介紹通過離線的方式安裝airflow 1.10.9,将安裝包上傳至伺服器。
1. 安裝必要的元件
1.1安裝gcc
進入dependencies目錄,依次執行安裝(注意順序)
1. rpm -ivh kernel-headers-3.10.0-1062.12.1.el7.x86_64.rpm
2. rpm -ivh glibc-headers-2.17-292.el7.x86_64.rpm
3. rpm -ivh glibc-devel-2.17-292.el7.x86_64.rpm
4. rpm -ivh mpfr-3.1.1-4.el7.x86_64.rpm
5. rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpm
6. rpm -ivh cpp-4.8.5-39.el7.x86_64.rpm
7. rpm -ivh gcc-4.8.5-39.el7.x86_64.rpm
1.2安裝openssl-devel, 依次執行安裝(注意順序)
1. rpm -ivh libverto-devel-0.2.5-4.el7.x86_64.rpm
2. rpm -ivh keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm
3. rpm -ivh libcom_err-devel-1.42.9-16.el7.x86_64.rpm
4. rpm -ivh libsepol-devel-2.5-10.el7.x86_64.rpm
5. rpm -ivh krb5-libs-1.15.1-37.el7_7.2.x86_64.rpm --force
6. rpm -ivh libkadm5-1.15.1-37.el7_7.2.x86_64.rpm
7. rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm
8. rpm -ivh libselinux-devel-2.5-14.1.el7.x86_64.rpm
9. rpm -ivh krb5-devel-1.15.1-37.el7_7.2.x86_64.rpm
10. rpm -ivh zlib-devel-1.2.7-18.el7.x86_64.rpm
11. rpm -ivh openssl-devel-1.0.2k-19.el7.x86_64.rpm
1.3安裝sqlite-devel, 依次執行安裝(注意順序)
1. rpm -ivh sqlite-3.7.17-8.el7_7.1.x86_64.rpm --force
2. rpm -ivh sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm
1.4安裝gcc-c++, 依次執行安裝(注意順序)
1. rpm -ivh libstdc++-devel-4.8.5-39.el7.x86_64.rpm
2. rpm -ivh gcc-c++-4.8.5-39.el7.x86_64.rpm
1.5安裝mysql-devel gcc gcc-devel python-devel, 依次執行安裝(注意順序)
1. rpm -ivh python-srpm-macros-3-32.el7.noarch.rpm
2. rpm -ivh python-rpm-macros-3-32.el7.noarch.rpm
3. rpm -ivh python2-rpm-macros-3-32.el7.noarch.rpm
4. rpm -ivh python-devel-2.7.5-86.el7.x86_64.rpm
5. rpm -ivh mariadb-devel-5.5.64-1.el7.x86_64.rpm
1.6安裝sasl, 依次執行安裝(注意順序)
1. rpm -ivh cyrus-sasl-2.1.26-23.el7.x86_64.rpm
2. rpm -ivh cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
2. 安裝python3.6.5
2.1編譯安裝zlib
解壓python-3.6.5.tgz,進入Modules/zlib目錄
1. #解壓
2. tar -zxvf Python-3.6.5.tgz
3. #進入python-3.6.5/Modules/zlib
4. cd Python-3.6.5/Modules/zlib
5. #編譯安裝zlib
6. ./configure
7. make install
2.2編譯安裝python 3.6.5
将python3.6.5安裝至/usr/local/python3目錄
1. #建立目錄
2. mkdir /usr/local/python3
3. #進入Python-3.6.5目錄,執行編譯安裝
4. cd Python-3.6.5
5. ./configure --prefix=/usr/local/python3 --enable-shared --with-ssl
6. make && make install
2.3建立python3和pip3的軟鍊
1. #建立python3的軟鍊
2. ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
3. #建立pip3 的軟鍊
4. ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
2.4添加環境變量
1. #編輯.bash_profile檔案
2. vi ~/.bash_profile
3. #加入以下内容
4. #環境變量,否則會報找不到libpython3.6m.so.1.0
5. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/python3/lib
6. #配置airflow需要的環境變量,
7. export AIRFLOW_HOME=~/airflow
8. export AIRFLOW_GPL_UNIDECODE=yes
9. #添加python3的目錄,否則無法識别airflow指令
10. export PATH=$PATH:/usr/local/python3/bin
11. #儲存退出,加載環境變量
12. source ~/.bash_profile
測試pip3和python3指令,出現如下版本号則安裝成功
1. [root@localhost Python-3.6.5]# pip3 -V
2. pip 9.0.3 from /usr/local/python3/lib/python3.6/site-packages (python 3.6)
3. [root@localhost Python-3.6.5]# python3
4. Python 3.6.5 (default, Feb 28 2020, 22:31:30)
5. [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
6. Type "help", "copyright", "credits" or "license" for more information.
7. >>>
2.5更新pip3的版本
如上圖,pip3版本号為9.0.3,版本太低,如不更新會報pip目前版本無效的錯誤
進入安裝包的pip20.0.2目錄,執行以下語句:
1. #進入安裝包pip20.0.2目錄
2. cd pip20.0.2
3. #安裝pip新版本
4. pip3 install pip-20.0.2-py2.py3-none-any.whl
5. #再次檢視版本,已更新為20.0.2
6. pip3 -V

3. 安裝airflow
3.1安裝airflow
進入安裝包airflow_1.10.9_all,執行安裝
1. #進入安裝包airflow_1.10.9_all目錄
2. cd airflow_1.10.9_all
3. #執行安裝
4. pip3 install apache-airflow[all] --no-index -f ./
安裝時間會比較長,如出現版本不相容的報錯,可忽略,如出現報錯,參考以下方法解決:
報錯:
1. distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('pytest-runner')
解決方法:
1. #執行以下指令後,重新執行安裝
2. pip3 install pytest_runner-5.2-py2.py3-none-any.whl
1. gcc: error trying to exec 'cc1plus': execvp: No such file or directory
進入安裝包的dependencies目錄,按照1.4的方法重新安裝gcc-c++,再傳回airflow_1.10.9_all目錄重新執行安裝
1. distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('Cython!=0.25,<0.30,>=0.20')
2. pip3 install Cython-0.29.15-cp36-cp36m-manylinux1_x86_64.whl
注:如還出現其他類似的缺少包的提示,都可使用pip3 install進行安裝,所有依賴的包都在airflow_1.10.9目錄裡,最終出現Successfully installed,表示安裝成功。
3.2初始化資料庫
1. #初始化資料庫
2. airflow initdb
3.3啟動airflow
1. #啟動airflow web
2. #指定端口
3. airflow webserver -p xxx
4. #不指定端口,預設為8080,啟動成功後,通過
http://x.x.x.x:8080通路
5. airflow webserver
6. #使用以下指令可使airflow不随視窗關閉而關閉,并将日志輸出(追加)到指定目錄
7. nohup airflow webserver >> /airflow.log &
8. #啟動airflow scheduler,必須啟動scheduler,否則web界面不更新新的dag等内容,
9. airflow scheduler
3.4更改資料庫為mysql
Airflow預設資料庫為SQLite,如需更改資料庫為mysql,請修改$AIRFLOW_HOME/airflow.cfg檔案,預設在~/airflow/airflow.cfg,加入以下内容
1. #加入以下語句,格式如下:
2. #mysq://[db_username]:[db_password]@[db_host]:[db_port]/[db_name]
3. #例:
4. sql_alchemy_conn = mysql://root:root@localhost:3306/airflow?charset=utf8
注:配置完後,重新使用airflow initdb初始化資料庫,請提前準備好資料庫及設定通路權限
3.5 中文化
進入airflow_1.10.9_all目錄,安裝Flask-BabelEx和PyMySQL
1. pip3 install Flask_BabelEx-0.9.4-py3-none-any.whl
2. pip3 install PyMySQL-0.9.3-py2.py3-none-any.whl
修改配置檔案,~/airflow/airflow.cfg
1. #修改時區
2. default_timezone = Asia/Shanghai
3. #不加載示例
4. load_examples = False
将漢化包裡的檔案替換/usr/local/python3/lib/python3.6/site-packages/airflow目錄裡的檔案,再重新始初化資料庫,重新啟動服務