[AWS-Flask 사용법] Flask 로 원격지 서버 구축 및 개발하기 - (3)
안녕하세요, 건프입니다.
이번에는
로컬(내 컴퓨터) 에서 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 서버 자체를 재구동 시키거나, 아마존 인스턴스를 재 가동 시킬 필요가 전혀 없이, 새 버전 코드를 서버에 올릴 수 있다. ㅎㅎ
(이것 찾느라 고생 많이 했습니다.. ㅠㅠ)
도움이 되었으면 좋겠습니다.
고맙습니다 :)