该文是基于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. TICK技术栈(一)TICK技术栈介绍

    1.什么是TICK技术栈? 1.1 简介 TICK 是由 InfluxData开发的一套开源工具栈,由 Telegraf, InfluxDB, Chronograf, Kapacitor 四个工具的首 ...

  2. Web服务器—IIS

    https://blog.csdn.net/qq_33323054/article/details/81628627 https://jingyan.baidu.com/article/67508eb ...

  3. win10 64位安装redis 及Redis Desktop Manager使用

    说多无益,先把redis在win上的开发环境搭一下. redis官方没有64位的Windows下的可执行程序,目前有个开源的托管在github上, 地址:https://github.com/Serv ...

  4. Jmeter之命令行生成HTML报告

    其实每次使用jemter.bat文件启动JMeter时,命令行窗口都会提示我们不要使用GUI窗口进行测试,除非是进行调试脚本 使用命令行生成结果也很测试报告也很简单 jmeter -n -t [jmx ...

  5. Python实现网络图形化界面多人聊天室 - Windows

    Python实现网络图形化界面多人聊天室 - Windows 项目名称:网络多人聊天室图形界面版本 项目思路: server.py 服务端文件,主进程中,创建图形化界面,询问地址(主机名,端口),点击 ...

  6. CF-1208 C.Magic Grid

    题目 大意:构造一个n行n列的矩阵,使得每一行,每一列的异或和都相等,n是4的倍数. 先看4*4的矩阵,我们很容易构造出符合要求的矩阵,比如 0    1    2    3 4    5    6  ...

  7. ST表基础模板

    ST表是用来求RMQ问题(求区间最大或最小值问题)的实用数据结构,支持\(O(nlog_n)\)建立,\(O(1)\)查询,是比较高效的结构 其原理实质上是DP(我最讨厌的东西) 题面:屠龙宝刀... ...

  8. SVG开发注意事项

    SVG Scalable Vector Graphics 可缩放的矢量图形 起源 在 2003 年一月,SVG 1.1 被确立为 W3C 标准,在过去很长一段时间,网页注重文字和图片的展示, SVG就 ...

  9. IPv6 地址生命周期

    在preferred time和valid lifetime之间叫做deprecated 状态,当地址达到这个时间段的时候,地址不能主动的发起连接只能是被动的接受连接,过了valid lifetime ...

  10. jQuery 源码解析(三) pushStack方法 详解

    该函数用于创建一个新的jQuery对象,然后将一个DOM元素集合加入到jQuery栈中,最后返回该jQuery对象,有三个参数,如下: elems Array类型 将要压入 jQuery 栈的数组元素 ...