본문 바로가기
시스템/리눅스

ubuntu22.04 airflow2.6.0설치

by cbwstar 2023. 5. 15.
728x90
반응형

/* postgresql 설치 */

  -- 설치하기전에 설치가능한 버전확인

apt show postgresql

 

apt show postgresql-14

  -- postgresql 설치를 위한 패키지 등록하기

최상위 경로 이동

cd /

 

sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list. d/pgdg.list'

 

  • GPG Key 추가

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

 

  • 패키지 목록 업데이트

apt-get update

/* postgresql 최신버전 설치 */

apt-get -y install postgresql

/* postgresql 특정버전 설치 */

apt-get -y install postgresql-14

  

/* postgresql 실행 */

systemctl start postgresql

systemctl status postgresql

 

/* postgresql 계정으로 접속 */

su - postgres

/* 외부접속 환경 셋팅 */

vi /etc/postgresql/14/main/pg_hba.conf

vi pg_hba.conf

 

host    all             all             127.0.0.1/32            trust

host    all             all             0.0.0.0/0               md5

 

/* 환경설정후 재기동 */

systemctl restart postgresql

 

/* airflow 설정 */

리눅스 사용자 계정 생성

adduser airflow

 

/* sudo 권한 부여 */

apt install sudo

 

cd /etc

chmod +w sudoers

vi /etc/sudoers

airflow ALL=(ALL:ALL) ALL

postgres ALL=(ALL:ALL) ALL

 

chmod -w sudoers

 

 

su - airflow

mkdir airflow

 

/* 파이썬 pip3 설치하기 */

sudo apt install python3-pip

/* pip 버전 업그레이드 */

python3 -m pip install --upgrade pip

 

/* 환경설정 */

vi .profile

export AIRFLOW_HOME=~/airflow

export AIRFLOW_VERSION="2.6.0"

export PYTHON_VERSION="$(python3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"

export CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

export PATH=$PATH:/home/airflow/.local/bin

 

source .profile

 

/* 부가적으로 필요한 패키지 설치 */

sudo apt-get update

 

pip3 install cryptography psycopg2-binary boto3 botocore

 

sudo apt install libmysqlclient-dev -y

 

pip3 install mysqlclient

 

/* airflow  설치 */

--pip3 install apache-airflow

pip3 install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

 

/* sqlite db 초기화 */

/home/airflow/.local/bin/airflow db init

 

/* airflow 웹서비스 사용자 생성 */

airflow users create -u admin -f chu -l byoung -r Admin -e cbwstar@gmail.com

 

/* 웹서버 기동 */

airflow webserver -p 8080

 

/* 스케줄러 기동 */

airflow scheduler

 

/* postgresql 접속정보 변경 */

/* postgresql 계정 생성 */

psql

\list

CREATE DATABASE airflow;

\list

CREATE USER airflow WITH ENCRYPTED PASSWORD 'airflow';

\du

GRANT ALL PRIVILEGES ON DATABASE airflow TO airflow;

 

cd $ARIFLOW_HOME/airflow

vi airflow.cfg

 

sql_alchemy_conn = postgresql+psycopg2://airflow:airflow@localhost:5432/airflow

base_url = http://localhost:8080

web_server_port = 8080

executor = LocalExecutor

load_examples = False

 

/* postgreslq db 생성 */

airflow db init

 

/* airflow 웹서비스 사용자 생성 */

airflow users create -u admin -f chu -l byoung -r Admin -e cbwstar@gmail.com

 

/* airflow 백그라운드 실행 */

airflow scheduler -D > /dev/null

airflow webserver -D

 

/* jupyter notebook 설치 */

pip3 install jupyter

/* 설치확인 */

jupyter --version

/* 디폴트 실행 */

jupyter notebook

 

 

/* jupyter notebook 외부접속 설정 */

jupyter notebook --generate-config

jupyter notebook password

Enter password

Verify password

/* 패스워드 해시파일 생성 */

cat /home/airflow/.jupyter/jupyter_notebook_config.json

 

/* 환경파일 수정 */

vi /home/airflow/.jupyter/jupyter_notebook_config.py

c.NotebookApp.allow_origin = '*'  /* 외부접속을 허용합니다 */

c.NotebookApp.notebook_dir = '/home/airflow/airflow'   /* 작업절대경로 */

c.NotebookApp.ip = '*'   /* 외부접속 전체 오픈 보안을 위해서는 특정아이피만 설정 */

c.NotebookApp.port = 8888   /* 접속포트 */

c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$2RZq1nRwFQtA8CiP8OBOug$t4a0Qc5QdAkKNqHOw6M1GDTbtinGTr/Qg/yyQqLtaEs'  /* 해시화된 암호 */

c.NotebookApp.password_required = True  /* 비밀번호을 요구합니다. */

c.NotebookApp.open_browser = False   /* 서버 pc에서 자동으로 브라우저가 열리지 않도록 합니다. */

 

c.NotebookApp.allow_origin = '*' 

c.NotebookApp.notebook_dir = '/home/airflow/ai'

c.NotebookApp.ip = '*'

c.NotebookApp.port = 8888

c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$9WHS0cahbWqW2ExwYrlzuw$pS/A7FKJgQwO6/qF/SHU7BVX42o9ambosUFy7CXTnfc'

c.NotebookApp.password_required = True

c.NotebookApp.open_browser = False

 

 

 

/* 주피터 노트북 백그라운드 실행 */

nohup jupyter notebook & 

 

/* 노트북 서비스 등록 */

/* 설치 경로를 찾는다 */

 whereis jupyter-notebook

/* 해당 경로를 복사한다 */

/home/airflow/.local/bin/jupyter-notebook

 

/* 서비스 파일을 만든다 */

 sudo vim /etc/systemd/system/jupyter.service

 

[Unit]

Description=Jupyter Notebook Server

 

[Service]

Type=test

PIDFile=/run/jupyter.pid

User=airflow

ExecStart=/home/airflow/.local/bin/jupyter-notebook

WorkingDirectory=/home/airflow/airflow

 

[Install]

WantedBy=multi-user.target

 

/* 서비스 등록 */

sudo systemctl enable jupyter.service

sudo systemctl start jupyter.service

 

/* airflow 웹서비스 등록 */

/* 서비스 파일을 만든다 */

 sudo vim /etc/systemd/system/airflow-webserver.service

 

[Unit]

Description=Airflow webserver daemon

After=postgresql

 

[Service]

Type=simple

PIDFile=/run/airflow-webserver.pid

User=airflow

ExecStart=/home/airflow/.local/bin/airflow webserver

Restart=on-failure

RestartSec=10s

PrivateTmp=true

 

 

[Install]

WantedBy=multi-user.target

 

/* 서비스 등록 */

sudo systemctl enable airflow-webserver.service

sudo systemctl start airflow-webserver.service

 

/* airflow 스케줄 서비스 등록 */

/* 서비스 파일을 만든다 */

 sudo vim /etc/systemd/system/airflow-scheduler.service

 

[Unit]

Description=Airflow scheduler daemon

After=postgresql

 

[Service]

Type=simple

PIDFile=/run/airflow-scheduler.pid

User=airflow

ExecStart=/home/airflow/.local/bin/airflow scheduler

Restart=on-failure

RestartSec=10s

PrivateTmp=true

 

 

[Install]

WantedBy=multi-user.target

 

/* 서비스 등록 */

sudo systemctl enable airflow-scheduler.service

sudo systemctl start airflow-scheduler.service

 

/* 작업한 도커 파일 새로운 이미지 생성 */

docker commit -a "by cbw" aecb0efb7195 cbwstar/ubuntu-airflow:2.6.0

 

/* 생성확인 */

docker images

 

/* 새로만든 이미지 되는지 테스트 */

 

--도커 저장

docker save -o ubunto-airflow_2.6.0.tar cbwstar/ubuntu-airflow:2.6.0

 

/* centos-8 stream load 하여 테스트 */

/* 백업 받은 docker 파일 로딩 */

podman load -i ubunto-airflow_2.6.0.tar

 

 

/* centos podman 컨테이너 실행 */

podman run -d --name ubuntu -p 2222:22 -p 8080:8080 -p 3306:3306 -p 8888:8888 --privileged=true --hostname ubuntu22 -v /docker_share/airflow:/home/airflow/ai:z cbwstar/ubuntu-airflow:2.6.0 /sbin/init

 

/* 도커 접속 */

접속 : docker exec -it  ubuntu bash

 

 

/* airflow 백그라운드 실행 */

airflow scheduler -D > /dev/null

airflow webserver -D

 

/* 주피터 노트북 백그라운드 실행 */

nohup jupyter notebook & 

 

/* 도커허브 push */

/* 허브에 가입된 명으로 변경한다 윈도우에서만 push 된다 리눅스는 안되는지 */

docker tag localhost/cbwstar/ubuntu-airflow:2.6.0 cbwstar/ubuntu-airflow:2.6.0

 

/* 도커에 로그인한다 */

docker login

 

/* push 한다 */

docker push cbwstar/ubuntu-airflow:2.6.0

 

/* airflow db 접속 providers 설치 */

/* 버전에 맞는 pip 패키지 설치 */

python -m pip install apache-airflow-providers-mysql

728x90
반응형

'시스템 > 리눅스' 카테고리의 다른 글

centos 도커 설치  (0) 2023.11.20
백업받은 airflow 설정및 기동  (0) 2023.05.15
리눅스에서 우분투 도커 설치(systemctl 적용)  (0) 2023.05.15
Docker postgres 설치  (0) 2023.05.10
Docker 오라클 19c설치  (0) 2023.05.10

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading