/* 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
'시스템 > 리눅스' 카테고리의 다른 글
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 |
댓글