본문 바로가기
IT 프로그래밍 관련/streamlit 대시보드

Streamlit EC2 연결하기.

by 지나는행인 2021. 4. 26.
728x90

완성된 Streamlit 을 EC2로 배포하는 것을 해보려고 한다.

 

아마존의 EC2 서버를 이용하여 배포해 보겠다.

 

먼저 AWS  로그인을 한 뒤에

 

EC2  메뉴로 가서  ,   지역을 서울로 바꿔준후에 인스턴스 시작을 누른다.

 

( 여기까지는 해 놓아서 사진이 없다... )

 

프리티어로 하기 때문에 서버는 하나가 있어야하고 , 기존에 있다면 종료 후 해야한다.

 

인스턴스 등록시에 , 키페어를 새로 발급받아 파일로 다운로드하여 잘 가지고 있어야 추후에도 서버사용이 가능하다.

  ( .pem 으로 만들어진다.)

서버를 만들면 이런 화면이 나온다.

* EC2 인스턴스 생성

여기 인스턴스 ID를 들어가면 자신이 쓸수 있는 퍼블릭 주소가 나오는데 여기에 쓰여있는 주소로 나의 Streamlit이 배포가 되는 것이다.

 

* 퍼블릭 주소

 

윈도우기 때문에 파워셀을 이용하여 서버에 접속하여 streamlit을 구동하기 위한 설정을 해줄것이다.

 

파워셀을 키고 서버에 접속한다.

 

접속 방법은

 

ssh  ec2주소  -i  키페어pem파일경로  -l  우분투사용자명

 

명령어로 접속한다.   ( 첫 서버 설정시 별도의 설정이 없다면 사용자명은 ubuntu이다 )

* ssh 로 접속
* ssh로 접속 완료

 

이렇게 까지 나온다면 일단은 서버를 만들고 , 접속까지 완료한 것이다.

 

여기서 streamlit 을 위한 streamlit 가상환경을 만들고 git 와 연동하려한다.

 

가상환경설치를 위해 아나콘다 홈페이지 다운로드 페이지로 가서 Linux용으로 된 링크창을

 

주소 복사해서 파워셀에서 다운 받는다.

* anaconda 다운로드 명령어

 

다운로드가 다 되었다면 , 아나콘다를 설치해야한다.

 

아나콘다를 설치한다.

* anaconda 설치 명령어

 

아나콘다 설치가 완료 되었다면 가상 환경을 만든다. 가상환경 이름은 streamlit 으로 , 파이썬 3.7버전으로 한다.

 

( 가상 환경을 만들기 전 파워셀을 한번 껐다 켜야 콘다 명령어가 된다!!! )

 

* streamlit 가상환경 만들기

 

후에 conda 업데이트를 한번 하고 streamlit 가상 환경에 접속한다.

 

conda update -n base -c defaults conda

 

conda activate streamlit

 

이제 깃허브를 연동한다 깃은 아마 깔려있을 것이다 없으면 , 설치하는 방법은.. 검색!!

 

내가 클론하고자 하는 깃허브 레파지토리를 가서 클론 주소를 복사하고 

 

git clone 깃허브주소   로   연동을 한다.   

* 가상환경에서 깃 클론

클론이 완료 된 후에는  apt  업데이트들은 하고,  파이썬 패키지 관리자인 pip도 설치한다. ( streamlit 도 )

 

$ sudo apt update

$ sudo apt upgrade

$ sudo apt install python3-pip

$ pip install streamlit

 

후에 클론된 디렉토리로 이동 후 

 

streamlit run 실행파일.py 를 실행하면 , 로컬브라우저가 뜨면서 페이지 접속이 되려 한다.

 

하지만 . 접속불가!!!

 

이것은 EC2에서 포트를 열어주지 않았기 때문이다.

 

다시 EC2로 가서 내 인스턴스를 클릭하고 , 보안에서 보안그룹에 있는 창을 클릭하고,

 

거기서 인바운드 규칙을 추가한다.

* 인바운드 규칙 편집

 

 

인바운드 규칙 편집 창에서 ,

 

규칙 추가후에 , 내 streamlit 포트인 , 8501을 추가해준다. (TCP소스에 있다. )

 

( http도 추가해준다. )

 

* 규칙 저장 화면

 

규칙 편집이 되어 있다면 , 다시 브라우저에서 주소로 들어가 본다.

 

( 그 전에 필요한 라이브 러리를 다 설치해야 화면이 실행되니 참고

 

ex) conda install tensorflow numpy scipy matplotlib ipython scikit-learn==0.23.2 pandas pillow jupyter seaborn joblib keras

 

이제 실행이 될 것이다.

* STEAMLIT EC2 화면

 

**  지금 설정은 내가 파워셀을 끈다면 이 ec2 서버의 스트림릿도 꺼진다.

 

아래의 설정은 ec2 서버가 재부팅이 되지 않는 한 내가 파워셀을 꺼도 서버가 작동하게끔 하는 설정이다.

 

가상환경에서 스트림릿 실행시킬 디렉토리로 이동 후 

 

$ nohup streamlait run 실행파일.py &   

을 실행한다 . 위의 명령어를 실행하면 파워셀을 꺼도 서버는 계속 살아 있다!

 

나중에 이 서버를 닫으려면  아래의 명령어를 입력한다. 아래에서 4657 은 현재 돌고 있는 스트림릿의 PID값이다.

* 동작중인 프로세스 중 streamlit을 찾아 끈다!

 

 

이 설정은 서버가 재부팅 되면 자동으로 이 스트림릿 서버가 실행되지 않는다.

 

수동으로 다시 켜줘야하는데

 

아예 시스템으로 , 서버 재시동시 자동으로 스트림릿 활성화를 시킬수 있는 방법이 있다.

 

그것도 포스팅하겠다!

 

 

댓글