Streamlit App Deployment with nohup in Google Compute Engine
개요
- Streamlit과 Bigquery를 연동하는 코드를 구현한다.
- 가상환경 설정 부터 VS Code 연동까지 준비가 안되어 있다면 이전 글을 참조하기를 바란다.
- 만약 GCP가 처음이신 분들은 이전 글을 순차적으로 읽어본다.
개요
- Streamlit Sample 코드를 작성한 후 배포를 진행한다.
- VS Code 접속 시 고정 IP를 할당한다.
- 이 때 터미널이 종료되거나 사용자가 로그아웃해도 계속 실행되도록 nohup을 사용한다.
Nohup의 기본 개념
- nohup은 “no hang up"의 약자로, 백그라운드에서 다른 명령을 실행하는 데 사용되는 UNIX 명령으로, 로그아웃한 후에도 계속 실행됨.
- 원격 서버에서 장기간 실행되는 프로세스를 시작하려는 경우 세션 연결이 끊어지거나 터미널이 닫힐 때 프로세스가 종료되지 않도록 하려는 경우에 특히 유용함.
- foreground에서 명령이나 프로세스를 실행할 때 터미널이나 셸 세션이 종료되면 해당 명령이나 프로세스가 종료될 수 있다.
- nohup을 사용하면 기본적으로 터미널에서 프로세스를 분리하고 종료(HUP) 신호를 수신하지 못하도록 하여 로그아웃하거나 연결을 끊어도 프로세스가 완료될 때까지 실행할 수 있다.
- Python에서 nohup을 실행할 때는 다음과 같다.
- 출력(로그 및 오류)을 특정 파일로 리디렉션하려면 다음 명령을 사용할 수 있다.
- 이렇게 하면 Streamlit 앱의 표준 출력과 표준 오류가 모두 streamlit.log라는 파일로 리디렉션 된다.
nohup streamlit run my_app.py > streamlit.log 2>&1 &
- Streamlit 앱을 중지해야 하는 경우 ps 명령을 사용하여 프로세스 ID를 찾은 다음 종료 명령을 사용하면 된다.
ps aux | grep "streamlit run"
- 그러면 Streamlit과 관련된 프로세스 목록이 표시된다. 삭제하고자 하는 프로세스 ID를 찾아서 종료한다.
kill -9 PROCESS_ID
고정 IP 할당
- 왼쪽 사이드바 메뉴 > VPC 네트워크 > IP 주소 클릭한다.




















































