环境:Linux 7.6+python3.7+airflow 1.10
- 准备一台和离线环境一样的虚拟机,安装Linux 7.6 redhat,配置上网(ping www.baidu.com 能通)
- 下载准备好 python3.7, pip ,setuptools 包,并安装 python 包官方网站
- 找到python 的requiresment.txt 清单
- 在线安装airflow
- 打包进入离线环境安装
3 .1: 登录github 搜索 apache-airflow
选择2020当年最新版 v1-10-stable
找到python 下载包清单,选择对应的python 版本,本人选的python3.7
在虚拟机上做如下操作:
1 安装python3.7 解压缩,进入./config make makeinstall
安装完成: python3
如何机器带有python2.7.5
ln -s /usr/local/bin/python3 /usr/bin/python
ln -s /usr/local/bin/pip3.7 /usr/bin/pip
4,在线安装airflow
注意: 准备好一个缓存路径,用于收集离线安装的包
pip install download --cache-dir /xxx apache-airflow==1.10.10 --constraint /xxx/requirements-python3.7.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
若有setproctitle 相关的包错误 可以 尾巴加 --ignore-installed setproctitle
若有snowflake-connector-python 找不到 ,直接去python 包官方网站搜索并下载对应版本(requirement-python3.7有版本要求)
若有其他报错,则按照报错信息安装即可,但是安装必须带着
pip install download --cache-dir /xxxx snowflake-connector-python-2.1.3.tar.gz -i https://pypi.tuna.tsinghua.edu.cn/simple
最后安装:
pip install download --cache-dir /xxx apache-airflow[postgres,gcp]==1.10.10 --constraint /xxxx/requirements-python3.7.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
同样的套路安装完毕:
airflow initdb 不报错,则可以打包了
5 打包: 1 上面4中 --cache-dir 所对应的缓存目录 tar -czvf xxxx.tar.gz xxxxxx
2 打包 /usr/local/lib tar -czvf lib.tar.gz lib
3 打包 本地环境中的 python 3.7 , pip ,setuptools 工具包
4 /usr/local/bin/airflow 文件复制到离线Linux 相同位置备用 并建立软连接
ln -s /usr/local/bin/airflow /usr/bin/airflow
6 将tar 包上传至离线网络环境
- 6.1 安装 python3.7, pip , setuptools
- 6.2 解压 cache-dir 包, 备用
- 6.3 将 lib.tar.gz 迁移至 /usr/local 解压,(若仍然不放心,则将lib 迁移至别处,解压后再次将/usr/local/lib/python3.7/site-packages 中所有文件迁移至 当前环境相同的目录路径下)
- 6.4 离线安装
pip install --no-index --find-links=/xxx apache-airflow==1.10.10 --constraint /xxx/requirements-python3.7.txt
pip install --no-index --find-links=/xxx apache-airflow[postgres,gcp]==1.10.10 --constraint /xxx/requirements-python3.7.txt
- 6.6 chmod 777 /usr/local/bin/airflow
最后 airflow initdb 不报错就可以了
airflow webserver -p 18080
在网页上 连接所在机器 ip:18080 能够看到页面,安装基本完成。
一般报错,都是因为兼容和缺包,安装就是了,在有线环境下多安装,在离线环境下才顺利。