본문 바로가기
데이터엔지니어링/Airflow

airflow ec2로 설치 터미널 가상환경 열어서 설치 / sudo의 사용이유

by goemgoem-i 2024. 11. 19.
반응형

터미널로도 설치하는 방법에 대해 알아보자 

 

aws > ec2 생성을 누르고 ubuntu 클릭

 

 

인스턴스 유형을 t3.small로 변경

 

 

그리고 새로운 키페어를 생성해준다 파일형식은 윈도우 10이상이면 pem으로 아니면 ppk로 설정

 

나머진 그대로 유지하고 인스턴스 생성해준다

 

 

 

그럼 인스턴스가 생성되고 이때 퍼블릭 dns 주소 복사하고 터미널을 열어준다

 

 

 


파이썬 3.0 pip설치

ssh -i 키페어명칭.pem ubuntu@복사한 ip4 dns

처음이니까 yes 입력

 

그 다음 

sudo apt-get update
sudo apt-get upgrade

이걸 두개를 치면 되는데

 

만약 이렇게 에러나가 난다면 

 

터미널 오른쪽 마우스 클릭 > 관리자모드 로 가서

wsl -install

작성하고 다시  powershell로 돌아와 

 

wsl #하면 활성화됨

이렇게 활성화되고 다음에 sudo를 입력하면 먹힌다

clear해서 글정리

 

wget https://bootstrap.pypa.io/get-pip.py 
sudo python3 get-pip.py
sudo apt-get install -y python3-pip
#각각 설치

그럼 이제 위에 코드를 입력해서 python3 - pip를 설치한다

 

 


이제 airflow를 설치를 진행한다

 

sudo apt-get install -y libmysqlclient-dev
sudo pip3 install --ignore-installed "apache-airflow[celery,amazon,mysql,postgres]==2.9.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"
sudo pip3 install oauth2client gspread numpy pandas

이렇게 세개 적으면 된다는데

 

난 왜 에러가 나나니,,, 보아하니 

" pip을 사용해 시스템 전체에 패키지를 설치하지 못하도록 하여 시스템 안정성을 보호하려는 Debian/Ubuntu의 보안 정책 때문입니다." 라고 한다 

그래서 가상환경을 열어서 진행해주겠다 

 

 

sudo apt-get update
sudo apt-get install python3.12-venv

python3-venv 패키지 설치해주고

 

python3 -m venv airflow-env
source airflow-env/bin/activate
pip install --upgrade pip

가상환경 활성화 

 

pip install --ignore-installed "apache-airflow[celery,amazon,mysql,postgres]==2.9.1" \
  --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"

를 바로 입력하면 되는 줄 알았으나

 

 

pkg-config는 컴파일러에게 필요한 라이브러리의 위치를 알려주는 도구로 이 도구가 현재 설치가 안되어있단다

 

sudo apt-get install pkg-config
sudo apt-get install libmysqlclient-dev  # MySQL을 사용할 경우
# 또는
sudo apt-get install libmariadb-dev  # MariaDB를 사용할 경우

위에 코드 돌리고 

 

다시 

pip install --ignore-installed "apache-airflow[celery,amazon,mysql,postgres]==2.9.1" \
  --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"

돌리면 

 

이렇게 성공적으로 나온다고 뜬다

 

pip3 install oauth2client gspread numpy pandas

이제 마무리로 pandas에 필요한 기타모듈을 설치를 완료한다

 


Sudo란?

 

내가 위에 작성한 코드를 보면 별도의 sudo를 사용하지 않고 있다

sudo는 "Super User DO"의 약자로, 일반 사용자에게 관리자(슈퍼유저) 권한을 부여하는 명령하는 것이다

 

 

나는 현재 가상환경을 만들었는데

이렇게 가상환경을 사용하면 시스템에 영향을 주지 않고 독립적인 Python 환경을 만들 수 있기 때문에 sudo 권한을 사용할 필요가 없는것이다 

 

 

 


airflow 계정생성

 

이제 airflow 계정을 생성해보겠다

 

sudo groupadd airflow
sudo useradd -s /bin/bash airflow -g airflow -d /var/lib/airflow -m

하고

 

sudo apt-get install -y postgresql postgresql-contrib

postgres 설치를 한다

그러면 총 세개의 계정이 만들어진다 ubuntu계정 / ariflow 계정 / postgres계정 

 

 

sudo su postgres

이제 postgres라는 계쩡으로 로그인

 

psql

이제 여기서 airflow사용자를 만들 수 있다

 

CREATE USER airflow PASSWORD 'airflow';
CREATE DATABASE airflow;
\q
exit

#한문장씩 입력

exit으로 우분트 환경으로 돌아오기 

 

 

sudo service postgresql restart
sudo su airflow

postgress를 재시작하고 airflow를 실행해서 기본환경을 만들어보자

 

 

 

mkdir dags #새로운 폴더 생성 
AIRFLOW_HOME=/var/lib/airflow airflow db init #db초기화 해라

 

그랬더니 이렇게 에러난다,,,다시 airflow를 설치할려고하니까 ubuntu는 python 패키지는 제한이 있으니 불가능

 

그래서 다시 가상환경을 열어서 설치를 진행했다

python3 -m venv airflow-env
source airflow-env/bin/activate

위에 두문장을 작성하고

 

pip install "apache-airflow[celery,amazon,mysql,postgres]==2.9.1"

다시 패키지를 설치하면 아주 잘나온다

 

파일을 확인해보면 airflow.db와 airflow.cfg가 생긴걸 확인할 수 있다

 

 

 

ls -tl #airflow.db와 airflow.cfg가 생긴걸 확인
vi.airflow.cfg 
ls /var/lib/airflow
airflow.cfg  airflow.db  dags   logs  unittests.cfg


** 터미널 코드 정리는 clear를 치면 된다

 

반응형