服务器版本:
CentOS Linux release 7.9.2009 (Core)
部署程序版本:
python 3.9.0
airflow 2.2.3
mysql-8.0.28
一 安装python
为了避免不必要的报错直接全部运行安装以下命令
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel
yum install gcc-c++
安装wget命令
# yum -y install wget
通过wget下载python
# wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
解压Python-3.9.0.tgz
# tar xzvf Python-3.9.0.tgz
解压后可以看到目录
进入目录
# cd Python-3.9.0
执行以下命令
./configure --with-ssl --prefix=/service/python3
执行完成后
# make
执行完成后
# make install
如果遇到报错
ModuleNotFoundError: No module named '_ctypes'
解决办法
# yum install libffi-devel -y
然后在 make install
制作新的指向Python3的软连接
# ln -s /service/python3/bin/python3 /usr/bin/python -f
建立pip的软连接
# ln -s /service/python3/bin/pip3 /usr/bin/pip -f
查看Python版本
# python -V
检测pip版本
# pip -V
#升级pip
# pip install
--upgrade pip
如果报错
python 版本问题,现在是python 3版本,需要改成2版本,修改完成后再次执行即可。
# vim /usr/libexec/urlgrabber-ext-down
检查 yum 是否为2.7 ,如果不是在后面添加即可
# vim /usr/
bin/yum
二 安装airflow
#设置临时环境变量
# export SLUGIFY_USES_TEXT_UNIDECODE=yes
#添加编辑环境变量
# vim /etc/profile
# 在最后添加以下内容:
export PS1="[\u@\h \w]\$ "
#Python环境变量
export PYTHON_HOME=/service/python3
export PATH=$PATH:$PYTHON_HOME/bin
#Airflow环境变量
export AIRFLOW_HOME=/root/airflow
export SITE_AIRFLOW_HOME=/service/python3/lib/python3.9/site-packages/airflow
export PATH=$PATH:$SITE_AIRFLOW_HOME/bin
#生效环境变量
# source /etc/profile
#安装apache-airflow并且指定2.2.3版本
# pip install apache-airflow===2.2.3
#为airflow安装mysql模块
# pip install
'apache-airflow[mysql]'
如果遇见报错
可能需要安装 Python 3 和 MySQL 开发头文件和库,如下所示:
$ sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
# Debian / Ubuntu
% sudo yum install python3-devel mysql-devel
# 红帽/CentOS
然后你现在可以通过 pip 安装 mysqlclient:
$ pip install mysqlclient
这时发现可以运行
# pip install
'apache-airflow[mysql]'
这里安装完成后启动airflow 报错
看了下 是下载airflow mysql时安装了jinja2-2.11.3 我把 jinja2-2.11.3 卸载 重新安装jinja2 后发现正常启动。
# pip uninstall Jinja2 --卸载
# pip install Jinja2 --安装
启动db
# airflow db init
创建airflow登陆用户
airflow users create \
--username root \
--firstname s \
--lastname am \
--role Admin \
--email 123456@qq.com
启动web服务和监控程序
# airflow webserver --port 8080 -D
# airflow scheduler -D
安装到这里你可以在浏览器通过localhost:8080打开页面了
三 Mysql安装
下载地址 MySQL :: Download MySQL Community Server
我这里下载的这个
下载上传到服务器后解压,当然也可以用 wget直接下载
# tar -xvf mysql-8.0.28-el7-x86_64.tar.gz
移动并重命名一下
# mv mysql-8.0.28-el7-x86_64 /usr/local/mysql
创建mysql用户组和用户并修改权限
# groupadd mysql
# useradd -r -g mysql mysql
创建数据目录并赋予权限
# mkdir -p /data/mysql #创建目录
# chown mysql:mysql -R /data/mysql #赋予权限
配置my.cnf 没有就新建
# vim /etc/my.cnf
内容如下
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
初始化数据库
进入mysql的bin目录
# cd /usr/local/mysql/bin/
初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql –initialize
查看密码 并记录密码
# cat /data/mysql/mysql.err
启动mysql,并更改root 密码
先将mysql.server放置到/etc/init.d/mysql中
# cp
/usr/local
/mysql/support-files
/mysql.server /etc
/init.d/mysql
启动!!!
# service mysql start
查看进程
# ps -ef|grep mysql
如果遇到报错
发现并没有/var/log/mariadb/mariadb.log这个路径,那我们就创建, 并给mysql用户授权即可
# mkdir /var/log/mariadb
# touch /var/log/mariadb/mariadb.log
# chown -R mysql:mysql /var/log/mariadb/
再输入开启mysql服务, 搞定!
到这里说明mysql已经安装成功了!!
下面修改密码
首先登录mysql,输入前面的那个是随机生成的。
# ./mysql -u root -p #bin目录下
输入新密码
再执行下面三步操作,然后重新登录。
alter user 'root'@'localhost' identified by '123456';
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
为了能从外部访问 继续设置
use mysql #访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES; #刷新
不希望每次都到bin目录下使用mysql命令则执行以下命令
# ln -s /usr/local/mysql/bin/mysql /usr/bin
四 把airflow数据库换成mysql数据库
登陆mysql输入下面4段
create database airflow;
create user 'airflow'@'%' identified by '123456';
grant all privileges on *.* to 'airflow'@'%';
FLUSH PRIVILEGES;
设置MySQL对null的处理
set explicit_defaults_for_timestamp = 1;
对airflow配置文件(airflow.cfg)的设置
我的是在 /root/airflow/airflow.cfg
#打开你安装airflow的文件夹
# vim /root/airflow/airflow.cfg
#设置两个属性
executor = LocalExecutor
sql_alchemy_conn = mysql+mysqlconnector://airflow:123456@localhost:3306/airflow
#这里可以设置时区为上海
default_timezone = Asia/Shanghai
#这里可以设置页面默认时区为上海
default_ui_timezone = Asia/Shanghai
为了airflow可以顺利重启把运行的进程全部 kill
#查询airflow运行的进程
ps aux |grep airflow
#数据库加载
airflow db init
#启动web服务
airflow webserver --port 8080 -D
#启动监听
airflow scheduler -D
#数据库重启
airflow db upgrade
如果重启后不能访问,把这两个文件删除再次启动即可。
airflow-scheduler.pid
airflow-webserver-monitor.pid
本次部署到这里就结束了,快登陆你部署的airflow愉快的使用吧~
如果遇到什么问题欢迎留言探讨!