완성된 Streamlit 을 EC2로 배포하는 것을 해보려고 한다.
아마존의 EC2 서버를 이용하여 배포해 보겠다.
먼저 AWS 로그인을 한 뒤에
EC2 메뉴로 가서 , 지역을 서울로 바꿔준후에 인스턴스 시작을 누른다.
( 여기까지는 해 놓아서 사진이 없다... )
프리티어로 하기 때문에 서버는 하나가 있어야하고 , 기존에 있다면 종료 후 해야한다.
인스턴스 등록시에 , 키페어를 새로 발급받아 파일로 다운로드하여 잘 가지고 있어야 추후에도 서버사용이 가능하다.
( .pem 으로 만들어진다.)
서버를 만들면 이런 화면이 나온다.
여기 인스턴스 ID를 들어가면 자신이 쓸수 있는 퍼블릭 주소가 나오는데 여기에 쓰여있는 주소로 나의 Streamlit이 배포가 되는 것이다.
윈도우기 때문에 파워셀을 이용하여 서버에 접속하여 streamlit을 구동하기 위한 설정을 해줄것이다.
파워셀을 키고 서버에 접속한다.
접속 방법은
ssh ec2주소 -i 키페어pem파일경로 -l 우분투사용자명
명령어로 접속한다. ( 첫 서버 설정시 별도의 설정이 없다면 사용자명은 ubuntu이다 )
이렇게 까지 나온다면 일단은 서버를 만들고 , 접속까지 완료한 것이다.
여기서 streamlit 을 위한 streamlit 가상환경을 만들고 git 와 연동하려한다.
가상환경설치를 위해 아나콘다 홈페이지 다운로드 페이지로 가서 Linux용으로 된 링크창을
주소 복사해서 파워셀에서 다운 받는다.
다운로드가 다 되었다면 , 아나콘다를 설치해야한다.
아나콘다를 설치한다.
아나콘다 설치가 완료 되었다면 가상 환경을 만든다. 가상환경 이름은 streamlit 으로 , 파이썬 3.7버전으로 한다.
( 가상 환경을 만들기 전 파워셀을 한번 껐다 켜야 콘다 명령어가 된다!!! )
후에 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
이제 실행이 될 것이다.
** 지금 설정은 내가 파워셀을 끈다면 이 ec2 서버의 스트림릿도 꺼진다.
아래의 설정은 ec2 서버가 재부팅이 되지 않는 한 내가 파워셀을 꺼도 서버가 작동하게끔 하는 설정이다.
가상환경에서 스트림릿 실행시킬 디렉토리로 이동 후
$ nohup streamlait run 실행파일.py &
을 실행한다 . 위의 명령어를 실행하면 파워셀을 꺼도 서버는 계속 살아 있다!
나중에 이 서버를 닫으려면 아래의 명령어를 입력한다. 아래에서 4657 은 현재 돌고 있는 스트림릿의 PID값이다.
이 설정은 서버가 재부팅 되면 자동으로 이 스트림릿 서버가 실행되지 않는다.
수동으로 다시 켜줘야하는데
아예 시스템으로 , 서버 재시동시 자동으로 스트림릿 활성화를 시킬수 있는 방법이 있다.
그것도 포스팅하겠다!
'IT 프로그래밍 관련 > streamlit 대시보드' 카테고리의 다른 글
streamlit으로 머신(모델) 구동하기 (0) | 2021.03.11 |
---|---|
streamlit 여러가지 차트 나타내기 (0) | 2021.03.10 |
streamlit multiselect를 이용하여 Chart 나타내기 (0) | 2021.03.08 |
streamlit pdf file을 화면 출력하도록 변환하는 함수 (0) | 2021.03.08 |
streamlit upload받은 파일을 저장하는 함수 (0) | 2021.03.08 |
댓글