건프의 소소한 개발이야기

[AWS-Flask 사용법] Flask 로 원격지 서버 구축 및 개발하기 - (3) 본문

개발 이야기/AWS-Flask 이야기

[AWS-Flask 사용법] Flask 로 원격지 서버 구축 및 개발하기 - (3)

건강한프로그래머 2016. 7. 15. 09:40

안녕하세요, 건프입니다.


이번에는

로컬(내 컴퓨터) 에서 Flask 환경 설정하기

-> AWS에서 nginx 설치하기

-> AWS에서 nginx 설정하기

-> AWS에서 uwsgi 에 해당하는 gunicorn 설치 및 사용법

-> AWS에서 Flask 배포하기, supervisor 이용

-> 로컬에서 git push & AWS 에서 적용 코드 git pull 받고 서버 재시동하는 방법


에서, supervisor 프로그램으로 SSH 터미널을 닫아도, gunicorn 이 꺼지지 않고, nginx 와 함께, 메모리에 올라가있고, 연동되어 있도록 만들어 봅니다.


1. supervisor 설치

> sudo apt-get update

> sudo apt-get install -y supervisor


2. Create a configuration file 

> sudo vim /etc/supervisor/conf.d/flask_settings.conf

add :

[program:flask_settings] command = << A 자리>>gunicorn <<A-1>>:<<A-2>> -b localhost:8000 directory = << B 자리>> 

user = <<C 자리>>

A 자리 : 본인의 가상환경에서 which gunicorn 명령어를 쳤을때 나오는 절대주소를 써주셔야 합니다.

A-1 : 파일명

A-2 : app 명

B 자리 : 본인이 클론한 프로젝트의 pwd

C 자리 : 본인의 username


예 :

저기 중간에 보이는 --reload 는 그냥 뻘짓이니까 안쓰셔도 됩니다..ㅠ


3. Activate supervisor

> sudo pkill gunicorn

현재 켜져있는 gunicorn 을 스탑한다.

> sudo supervisorctl reread

> sudo supervisorctl update

> sudo supervisorctl start flask_settings

이렇게 하고 터미널을 종료해도

서버가 작동한다!!


4. 코드 업데이트

서버에 올려놓고, 로컬에서 추가 작업을 한뒤에, 다시 서버에 업로드할때, 

그냥 로컬에서 git push 하고 

원격에서 git pull 만 받는다고 코드가 업데이트 되지 않는다.

supervisor 가 gunicorn 을 메모리에 올려놓고 감사하고 있기 때문에, 아무래도 캐시되어 관리되는 것 같다. 

따라서 reload 필요한데, 


새로운 코드를 업로드하고 

다음 명령어를 입력하면 된다.

> sudo supervisorctl restart flask_settings


이렇게 하면, nginx 서버 자체를 재구동 시키거나, 아마존 인스턴스를 재 가동 시킬 필요가 전혀 없이, 새 버전 코드를 서버에 올릴 수 있다. ㅎㅎ


(이것 찾느라 고생 많이 했습니다.. ㅠㅠ)


도움이 되었으면 좋겠습니다.


고맙습니다 :)



Comments