该文是基于python虚拟化环境来安装,非虚拟化也是一样,虚拟化我只是不想破环系统环境。

安装python虚拟环境

pip install virtualenv

设置环境变量

sudo vi /etc/profile

将如下内容添加到末尾

export PYTHON_HOME=/usr/local/python3

export PATH=$PATH:$PYTHON_HOME/bin

source /etc/profile

创建虚拟环境存储文件夹

mkdir /softwares/pyenv_for_airflow

cd pyenv_for_airflow/

创建python虚拟环境

virtualenv --no-site-packages airflow_env

赋权

chmod +x -R *

激活虚拟环境

cd bin

source ./activate

安装依赖组件

yum -y install gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

yum -y install python-devel mysql-devel

yum -y install python3-devel

yum -y install cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib

pip install paramiko

pip install pymysql

pip install sqlalchemy

vi /etc/profile

export AIRFLOW_HOME=/softwares/airflow

export SLUGIFY_USES_TEXT_UNIDECODE=yes

#即时生效

source /etc/profile

安装airflow,all全安装

pip install apache-airflow[all]

初始化数据库

cd /softwares/pyenv_for_airflow/airflow_env/lib/python3.7/site-packages/airflow/bin

./airflow initdb

查看其生成文件

cd /softwares/airflow/

创建mysql后台数据库

create database airflow_db default charset utf8 collate utf8_general_ci;

create user 'airflow'@'%' identified by 'airflow_db';

create user 'airflow'@'localhost' identified by 'airflow_db';

grant all on airflow_db.* to 'airflow'@'%';

flush privileges;

-----------------------------------------utf8mb4字符的---------------------------------------------------------------

create database airflow_db default charset utf8mb4 collate utf8mb4_unicode_ci;

create user 'airflow'@'%' identified by 'airflow_db';

create user 'airflow'@'localhost' identified by 'airflow_db';

grant all on airflow_db.* to 'airflow'@'%';

flush privileges;

配置airflow使用LocalExecutor执行器,及使用MySQL数据库

vi airflow/airflow.cfg

executor = LocalExecutor

sql_alchemy_conn = mysql://root:123456@airflow.mn01:3306/airflow_db

[webserver]

base_url = http://airflow.mn01:8085

web_server_port = 8085

时区

default_timezone = Asia/Shanghai

还需要修改3个文件

#1、修改webserver页面上右上角展示的时间:

vi ${PYTHON_HOME}/lib/python3.7/site-packages/airflow/www/templates/admin/master.html

var UTCseconds = (x.getTime() + x.getTimezoneOffset()*60*1000);

$("#clock").clock({

"dateFormat":"Y-m-d ",

"timeFormat":"H:i:s %UTC%",

"timestamp":UTCseconds

}).click(function(){

alert('{{ hostname }}');

});

改为:

var UTCseconds = x.getTime();

$("#clock").clock({

"dateFormat":"Y-m-d ",

"timeFormat":"H:i:s",

"timestamp":UTCseconds

}).click(function(){

alert(

#2、修改airflow/utils/timezone.py

#在 utc = pendulum.timezone('UTC') 这行(第27行)代码下添加

from airflow import configuration as conf

try:

tz = conf.get("core", "default_timezone")

if tz == "system":

utc = pendulum.local_timezone()

else:

utc = pendulum.timezone(tz)

except Exception:

pass

#修改utcnow()函数 (在第69行)

#d = dt.datetime.utcnow()

d = dt.datetime.now()

#3、修改airflow/utils/sqlalchemy.py

#在utc = pendulum.timezone('UTC') 这行(第37行)代码下添加

from airflow import configuration as conf

try:

tz = conf.get("core", "default_timezone")

if tz == "system":

utc = pendulum.local_timezone()

else:

utc = pendulum.timezone(tz)

except Exception:

pass

重新初始化数据库

./airflow initdb

启动服务

cd /softwares/pyenv_for_airflow/airflow_env/lib/python3.7/site-packages/airflow/bin

./airflow webserver -D

可能错误

错误1:启动可能报错:FileNotFoundError: [Errno 2] No such file or directory: 'gunicorn' ,找不到gunicorn。

airflow webserver启动时,会调用subprocess.Popen创建子进程,webserver使用gunicorn,启动参数:

1: ['gunicorn', '-w', '4', '-k', 'sync', '-t', '120', '-b', '0.0.0.0:8080', '-n', 'airflow-webserver', '-p', '/home/admin/airflow/airflow-webserver.pid', '-c', 'airflow.www.gunicorn_config', '--access-logfile', '-', '--error-logfile', '-', 'airflow.www.app:cached_app()']

执行gunicorn启动时,因为在PATH中找不到该命令报错。

创建gunicorn软连接

ln –fs /home/admin/python3.6/bin/gunicorn/bin/gunicorn /bin/gunicorn

或者将/usr/local/python3/bin添加到PATH,export PATH=$PATH:/usr/local/python3/bin

#即使生效

source /etc/profile

错误2:有可能会启动不了,可以查看err日志,

一般报错什么pid已经存在,这时候需要删除airflow目录下的airflow-webserver-monitor.pid文件

启动其它服务

./airflow scheduler -D

./airflow worker -D

#启动flower

./airflow flower-D

默认的端口为 5555,您可以在浏览器地址栏中输入 "http://hostip:5555" 来访问 flower ,对 celery 消息队列进行监控。

设置开机启动服务

#1、创建启动shell脚本

cd /softwares/

mkdir shellscripts

cd shellscripts/

touch startairflow.sh

vi startairflow.sh

#!/bin/bash

# chkconfig: 2345 10 90

# description:airflow开机自启脚本

#因为pid文件存在启动会报错,所以启动服务前先判定是否存在pid文件,存在删除先

airflow_path="/softwares/airflow/"

airflow_webserver_monitor_name="airflow-webserver-monitor.pid"

airflow_webserver_pid_name="airflow-webserver.pid"

airflow_scheduler_pid_name="airflow-scheduler.pid"

airflow_worker_pid_name="airflow-worker.pid"

if [ -x "$airflow_path" ]; then

echo "$airflow_path existed"

cd "$airflow_path"

if [ -f "$airflow_webserver_monitor_name" ]; then

echo "$airflow_webserver_monitor_name existed, i can delete it"

rm -rf "$airflow_webserver_monitor_name"

fi

if [ -f "$airflow_webserver_pid_name" ]; then

echo "$airflow_webserver_pid_name existed, i can delete it"

rm -rf "$airflow_webserver_pid_name"

fi

if [ -f "$airflow_scheduler_pid_name" ]; then

echo "$airflow_scheduler_pid_name existed, i can delete it"

rm -rf "$airflow_scheduler_pid_name"

fi

if [ -f "$airflow_worker_pid_name" ]; then

echo "$airflow_worker_pid_name existed, i can delete it"

rm -rf "$airflow_worker_pid_name"

fi

fi

#进入python虚拟环境

cd /softwares/pyenv_for_airflow/airflow_env/bin

#激活虚拟环境

source ./activate

#启动相应的airflow 服务

/softwares/pyenv_for_airflow/airflow_env/lib/python3.7/site-packages/airflow/bin/airflow webserver -D

/softwares/pyenv_for_airflow/airflow_env/lib/python3.7/site-packages/airflow/bin/airflow scheduler -D

#LocalExecutor模式不需要启动worker

#/softwares/pyenv_for_airflow/airflow_env/lib/python3.7/site-packages/airflow/bin/airflow worker -D

#2、将bash脚本cp到inti.d

sudo cp startairflow.sh /etc/init.d/startairflow

#3、加入到自启动中

#增加执行权限

cd /etc/init.d/

sudo chmod +x startairflow

#加入自动启动

sudo chkconfig startairflow on

#查看是否增加到自启动,2345为on即设置OK

chkconfig --list

将airflow命令加入PATH系统变量中,不需要每次指定到airflow bin目录下执行

sudo vi /etc/profile

#增加如下内容到末尾

export AIRFLOW_CLI_HOME=/usr/local/python3/lib/python3.7/site-packages/airflow/

export PATH=$PATH:$AIRFLOW_CLI_HOME/bin

#立即生效

source /etc/profile

如果您觉得此文章对您有帮助,请点击右下方【推荐】让更多人看到,thanks!

【原创】CentOS 7 安装airflow的更多相关文章

  1. CentOS 7 安装 vmware-tools

    [原创]标题:<CentOS 7 安装 vmware-tools>:作者:肖雪峰,QQ:35360657. 用 VMware Workstation 11 新安装了CentOS 7虚拟机, ...

  2. 如何在centos上安装epel源

    一.EPEL是什么? EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/Cent ...

  3. 于CentOS 6 安装 Wordpress

    1.两种方式给Wordpress 首先,你可以去wordpress最新的官方网站看看wordpress多少下载.例wordpress 3.9.1下载地址: http://cn.wordpress.or ...

  4. centos 下安装jdk、tomcat 以及tomcat无法从外部访问的解决办法

    centos 下安装jdk.tomcat 以及tomcat无法从外部访问的解决办法 原创 2014年08月28日 10:24:33 标签: selinux enforce cent 2223 昨天在c ...

  5. (转)CentOS 7 安装 Docker

    原文:http://www.cnblogs.com/stulzq/p/7743073.html http://www.cnblogs.com/stulzq/p/8629165.html-------- ...

  6. CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

    转载自:https://linux.cn/article-4314-1.html 编译自:http://xmodulo.com/install-lemp-stack-centos.html 作者: D ...

  7. [乐意黎原创]Centos 7里apache(httpd)自启动

    最近,Aerchi在折腾 ECS服务器 (Centos 7),每次重启后都要手动开启apache服务,好繁琐. 仔细研究了下:Apache 的服务第一.启动.终止.重启systemctl start ...

  8. CentOS7安装Airflow

    实验环境: centos7python3.6 安装配置: 1.看看是否有gcc,没有的话需要进行安装: yum install gcc  (后续安装airflow如果不成功,可以再次执行,它会更新包) ...

  9. [转帖]CentOS 7安装并启动Google浏览器(★firecat亲测有效★)

    CentOS 7安装并启动Google浏览器(★firecat亲测有效★) https://blog.csdn.net/libaineu2004/article/details/82821405 自己 ...

随机推荐

  1. 联邦学习 Federated Learning 相关资料整理

    本文链接:https://blog.csdn.net/Sinsa110/article/details/90697728代码微众银行+杨强教授团队的联邦学习FATE框架代码:https://githu ...

  2. vue 组件之纯表格渲染--没有事件交互

    组件 名称小写==> 用-链接 02===> 属性==> empty-text="暂无数据" 当表格中没有数据 就会显示 暂无数据 <el-table-co ...

  3. Html学习之七(CSS选择器的使用--基础选择器优先级问题)

    二.基础选择器的综合使用 优先级顺序:id选择器>class选择器>元素选择器.也就是说,如果这三种选择器同时为某一个元素设定样式,那么冲突的部分按优先级的顺序依次决定. <!DOC ...

  4. Django views 中的装饰器

    关于装饰器 示例: 有返回值的装饰器:判断用户是否登录,如果登录继续执行函数,否则跳回登录界面 def auth(func): def inner(request, *args, **kwargs): ...

  5. 关于 Noip的考纲

    关于 \(\text{Noip}\) 的考纲 先放一张图 : 此图包含了 \(\text{Noip}\) 自开始到结束 的所有真题的考察知识点 算法分类标准主要来自于 \(\text{Luogu}\) ...

  6. Unity 2018 Cookbook (Matt Smith 著)

    1. Displaying Data with Core UI Elements (已看) 2. Responding to User Events for Interactive UIs (已看) ...

  7. gradle 多模块Springboot项目 compile project引用其他模块的坑

    本来以为子项目中compile project(':xxx'),就能引用其他模块了,因为之后idea也没在引用时候标红 然而我gradle build的时候,居然各种找不到引用模块的类 最后在stac ...

  8. 在Windows下的virtualenv中搭建Flask+MySQLDb开发环境

    virtualenv和Flask的安装前面已经介绍过了,这里主要讲如何在venv中安装MySQL 安装MySQLdb 下载MySQL-python-1.2.3.win32-py2.7.exe并安装. ...

  9. HTTPS 相关问题

    什么是 HTTPS? HTTPS,是指超文本传输安全协议(Hypertext Transfer Protocol Secure),是一种在 HTTP 协议基础上进行传输加密的安全协议,能够有效保障数据 ...

  10. 容器网络插件那么多,博云为什么基于OVS深度自研?

    背景 从2015年开始,博云开始基于Kubernetes和容器帮助客户交付应用管理平台.在开始阶段,博云选择了业界使用度非常广泛且成熟稳定的calico作为默认的网络方案并在calico方面积累了大量 ...