오늘은 구름 IDE의 항상 켜두기 기능을 이용해서 flask 웹 서버를 구동하는 방법에 대해서 살펴보도록 하겠습니다. 참고로 저는 이 방식을 이용해서 다음과 같은 웹 사이트를 구동시켰습니다. 이미지를 업로드하면 이미지에서 색을 빼줘서 색칠 공부 도안을 만들어주는 웹 사이트입니다. https://coloring.dev-sim.com/
항상 켜두기 컨테이너 생성하기
자! 그럼 이제 시작해보겠습니다. 먼저 구름 IDE에서 컨테이너를 하나 생성해주세요. 소프트웨어 스택에서 Flask를 선택해주세요.
컨테이너 생성을 마치신 분들은 컨테이너 설정 버튼을 클릭한 후에 컨테이너 항상 켜두기를 해줍니다. 이 항상 켜두기 기능은 예전에는 유료였는데 지금은 무료 사용자도 한 개의 컨테이너에 한해서 사용할 수 있습니다.
컨테이너 설정 화면에서 아래 좀 더 내려가시면 URL과 포트번호가 나옵니다. 우리의 웹 사이트는 이 주소로 접근이 가능합니다.
이제 컨테이너에 들어가신 후에 웹 사이트를 만듭니다. 우리가 원하는 것은 이 구름 IDE의 컨테이너를 닫더라도 웹 서버가 계속 작동하게 만드는 것입니다.
웹 서버 백그라운드에서 실행되게 하기
먼저 vim my_shellscript.sh로 my_shellscript.sh라는 파일을 연 후에 다음과 같은 내용을 담습니다. 저는 main.py를 FLASK_APP 파일로 설정했고, 그것을 실행해야 플라스크 웹 서버가 구동됩니다.
#!/bin/bash
export FLASK_APP=main.py
python3 main.py
참고로 제가 코딩한 main.py의 끝부분은 다음과 같이 생겼습니다.
그 다음에 nohup을 이용해서 다음과 같은 명령을 터미널에 주면 백그라운드에서 my_shellscript.sh가 실행됩니다.
sudo nohup ./my_shellscript.sh > nohup_script.out &
즉, 터미널을 꺼도, 컨테이너를 닫아도 우리가 만든 웹 사이트가 구동됩니다. 한 번 컨테이너를 닫아보시고 웹 페이지를 열어보세요. 잘 열리시죠? 참고로 nohup은 no hang up의 약자로, "끊지마"의 뜻을 지닙니다.
또한 nohup_script.out에 로그가 남습니다.
백그라운드에서 실행한 프로그램을 종료하고자 할 때는 먼저 프로세스의 아이디를 알아내야 합니다.
ps ux
위와 같은 명령을 주면 두번째 열에 PID, 즉 프로세스 아이디가 출력됩니다.
만약 PID가 5392인 프로세스를 종료시키려면, 다음과 같은 명령을 터미널에 주면 됩니다.
kill -9 5392
그러면 더 이상 웹 사이트가 작동하지 않습니다.
관련 글
- [flask] flask로 웹 어플리케이션 만들기 (코로나 19 오늘 확진자 수 알림)
(이 글은 마지막으로 2022-11-4에 수정되었습니다)
'Dev > python' 카테고리의 다른 글
[python] 리스트 안의 숫자 요소들을 문자로 변경하려면, map() 함수 사용 (4) | 2021.04.12 |
---|---|
[anaconda+python] spyder 5.0.0 버전 열자마자 나오는 에러 메시지(You have missing dependencies! # Mandatory: spyder_kernels)에 관하여 (0) | 2021.04.10 |
[python+openpose] openpose 라이브러리를 사용해서 관절 포인트 검출하기 (window 10 환경) (7) | 2021.04.05 |
[python] 파일의 확장자를 알려주는 함수, os.path.splitext() (0) | 2021.04.02 |
[flask] 색칠 공부 도안 만들어주는 사이트 제작 (18) | 2021.03.24 |
[python] 넘파이 배열에서 어떤 값의 위치를 알고 싶다면, np.where 함수 (0) | 2021.03.15 |
[python] matplotlib로 플롯 그릴 때 한글 깨짐 문제 해결 방법 (윈도우) (2) | 2021.03.08 |
[python] 외장 웹캠을 사용할 때 cv2.VideoCapture(1)로 했는데 안되면? (4) | 2021.01.28 |