반응형
파이썬 프로젝트를 배포할 때 우분투 서버에 직접 접속하여 git pull, 서비스 종료, 서비스 시작 등의 커맨드를 일일이 치는 것보다, 뭔가 스크립트 하나로 쉽게 배포하면 얼마나 좋을까를 고민할 때 쓸 수 있는 파이썬 패키지로 fabric이 있다.
fabric을 사용하면 서버에 ssh 접속을 하지 않아도, 스크립트가 알아서 ssh 접속을 한 뒤 미리 정의해둔 명령어들을 자동으로 입력해준다.
from fabric.api import *
env.roledefs = {
'dev': ['user@dev-example.com',],
'release' : ['user@example.com',]
}
@roles('dev')
def dev():
deploy("dev")
@roles('release')
def release():
deploy("release")
def restart_uwsgi():
with warn_only():
sudo('service my_service stop')
sudo('rm /tmp/tb*')
sudo('service my_service start')
def deploy(mode="release"):
with cd("/my-project/"):
run("git pull -f git@my-example-git.git")
run("sudo pip install -r requirements.txt")
run("echo yes | python my-project/manage.py collectstatic -c")
restart_uwsgi()
위 코드에서 roledefs는 배포할 환경(서버)을 정의하는 것이며, restart_uwsgi 함수는 uwsgi 서비스를 껐다 켜는 함수이다. deploy 함수는 fab dev / fab real 같은 명령어를 쳤을 때 환경에 맞게 서버에 ssh 접속을 한 후에 my-project 디렉토리에 찾아간 후에 git pull, pip install, collectstatic 등의 명령어를 자동으로 처리해주는 함수이다.
이렇게 스크립트를 짠 후에 커맨드라인에 fab dev, fab real만 치면 서버에 직접 들어가지 않아도 편하게 배포할 수 있다.
반응형
'개발 이야기 > Python' 카테고리의 다른 글
Python 이중 for loop 를 itertools 를 활용하여 개선하기 (0) | 2024.02.26 |
---|---|
gunicorn 멀티프로세스 Crontab 을 활용한 날짜별 file log 로테이션 돌리기 (0) | 2023.04.25 |
Multi Thread 결과 값 리턴하여 저장하기 (0) | 2021.07.22 |
베트남어 성조 제거하여 알파벳으로 변환하기 (0) | 2021.06.30 |
Dictionary List 를 key에 따라 sort 하기 (0) | 2020.12.02 |
댓글