본문 바로가기
카테고리 없음

[AWS/Streamlit] (2/6) AWS EC2 서버 환경 구성

by WHDA 2025. 3. 28.

글 목차:

1. AWS EC2 인스턴스 생성 및 접속

2. AWS EC2 서버 환경 구성 및 Streamlit 앱 배포

3. AWS EC2 CI/CD 구축

4. AWS EC2 및 Let's Encrypt 활용 Streamlit 앱 https 활성화

5. AWS EC2 활용 Streamlit 앱에 GA4 연결

6. AWS EC2 활용 Streamlit SEO 설정

 

 

실습 사전 준비

이전 글에서는 AWS EC2에서 인스턴스를 생성하고 접속하는 방법에 대해 알아봤습니다.

해당 글에서는 서버 환경을 구성하는 방법을 알아볼 것 입니다.

우분투 환경에서 파이썬을 설치해서 가상환경에서 streamlit 앱을 배포하는 것까지 알아보겠습니다.

 

아나콘다 설치

ubuntu

'ubuntu'를 입력해 세션에 접속합니다.

 

이런 결과가 나오면 세션에 접속한 것 입니다.

 

wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh

위 코드를 입력해 리눅스 버전의 아나콘다 설치 스크립트를 다운로드합니다.

버전의 경우 다른 버전을 사용해도 괜찮습니다.

 

sh Anaconda3-2024.02-1-Linux-x86_64.sh

위 코드를 입력해 다운로드한 아나콘다를 설치를 진행합니다.

 

위 화면이 나오면 'Enter' 키를 누릅니다.

 

위 화면에서는 아래 화면처럼 입력창이 나올때까지 키보드 화살표 '↓'를 꾹 누릅니다.

 

'Do you accept the license terms? [yes|no]' 질문이 나오면 'yes'를 입력합니다.

 

위 화면에서 '[/home/ubuntu/anaconda3] >>>'는 설치 위치를 뜻하는 것으로 'Enter'를 입력합니다.

별도의 위치에 저장하려면 폴더명을 임의로 입력하면 폴더가 생성되고 입력한 폴더에 설치가 됩니다. 

 

'no'를 입력합니다.

 

위 단계를 진행하면 설치가 완료됩니다.

 

source /home/ubuntu/anaconda3/etc/profile.d/conda.sh

위 코드를 입력하여 'conda' 명령어를 활성화 시킵니다.

매번 접속마다 위 코드를 입력해야 'conda' 명령어를 활성시킵니다. 

이 과정을 생략하고 싶다면 아래 코드를 입력합니다.

echo 'export PATH="$HOME/anaconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

 

가상환경 생성

conda create -n [가상환경명] python=3.10 numpy scipy matplotlib ipython scikit-learn pandas pillow jupyter seaborn

위 코드를 통해 가상환경을 생성하면서 가상환경 내에서 사용할 여러 패키지를 한번에 설치할 수 있습니다.

 

'y'를 입력합니다.

 

설치가 정상적으로 완료되었음을 확인할 수 있습니다.

 

conda activate [가상환경명]

위 코드를 입력해 생성한 가상환경을 활성합니다.

 

입력창을 보면 ubuntu 앞에 '(streamlit_test)'가 추가되어 있는 것을 확인할 수 있습니다.

이를 통해 가상환경에 접속한 것을 확인할 수 있습니다.

 

pip install streamlit

이전에 가상환경을 생성할 때 streamlit를 설치하지 못해 위 코드로 streamlit을 설치했습니다.

 

streamlit이 정상적으로 설치되었습니다.

 

conda deactivate

위 코드를 입력하면 가상환경에서 나올 수 있습니다.

 

Github 설치 및 활용

sudo apt update

Github 설치에 앞서 위 코드를 입력해 패키지 목록을 최신 상태로 업데이트합니다.

 

정상적으로 업데이트됐습니다.

 

sudo apt install git

Github를 설치합니다.

 

Github를 정상적으로 설치합니다.

 

사전에 streamlit 앱을 설치한 Github로 이동합니다.

화면 우측 상단의 '<> Code'를 클릭하고 'HTTPS'에 있는 url를 복사합니다.

 

conda activate [가상환경명]
git clone [깃허브 레포지토리 https 링크]

가상환경으로 이동한 후에 위 코드를 통해 Git 저장소를 복제합니다.

 

다음 단계로 넘어가기 전에 리눅스 환경에서 자주 사용하는 명령어 2개에 대해 설명드리겠습니다.

1. cd <디렉터리명>: 디렉터리(폴더)를 이동하는 명령어입니다. 디렉터리명 외에 ".. | / | ~"등의 다양한 단축키가 있습니다.

2. ls: 현재 디렉터리의 파일과 폴더를 목록으로 출력하는 명령어입니다.

'ls' 명령어를 통해 Github 폴더가 새로 생성된 것을 확인할 수 있습니다.

 

cd streamlit_test

위 코드를 통해 Github에서 가져온 폴더로 이동합니다.

 

이후 과정을 진행하기 전에 AWS EC2 >  인스턴스 > 인스턴스 내에서 보안으로 이동합니다.

인바운드 규칙 안에 있는 보안그룹을 클릭합니다.

 

보안그룹 ID를 클릭합니다.

 

화면 중앙 우측의 '인바운드 규칙 편집'을 클릭합니다.

 

'규칙 추가'를 클릭하고 '유형: 사용자 지정 TCP', '포트 범위: 8501', '0.0.0.0/0'을 선택합니다.

HTTP, HTTPS도 화면과 같이 설정합니다. 이 설정은 이후 https 활성화를 진행할 때 필요합니다.

전부 설정한 후에 '규칙 저장'을 클릭합니다.

 

Streamlit 앱 배포

streamlit run app.py

위 코드를 통해 Streamlit 앱을 실행합니다.

 

화면에 나온 3개의 url 중 가장 아래에 위치한 'External URL'의 url을 검색창에 입력합니다.

배포를 중단하려면 해당 창에서 'Ctrl + c'를 입력하면 됩니다.

 

위와 같이 배포된 것을 확인할 수 있습니다.

 

다만 'streamlit run app.py' 명령어를 통해 앱을 실행하면 터미널을 종료하면 배포도 종료됩니다.

따라서 백그라운드에서 실행이 되도록 하기 위해선 아래 코드를 입력해야 합니다.

nohup streamlit run app.py &

 

백그라운드로 실행하게 된다면 이를 중지하는 방법도 알아야 합니다.

우선 아래 코드를 사용하면 백그라운드에서 실행 중인 streamlit 앱을 확인할 수 있습니다.

ps -ef | grep streamlit

 

kill [프로세스 ID]

'ps -ef | grep streamlit' 명령어로 확인한 프로세스 ID를 위 코드처럼 활용하면 중지할 수 있습니다.

 

배포가 중지된 것을 확인할 수 있습니다.

 

 

이상으로 서버 환경을 구성하고 streamlit 앱을 배포하는 방법에 대해 알아봤습니다.

이어질 내용은 맨위 혹은 아래의 글 목차를 확인 부탁드립니다.

 

글 목차:

1. AWS EC2 인스턴스 생성 및 접속

2. AWS EC2 서버 환경 구성 및 Streamlit 앱 배포

3. AWS EC2 CI/CD 구축

4. AWS EC2 및 Let's Encrypt 활용 Streamlit 앱 https 활성화

5. AWS EC2 활용 Streamlit 앱에 GA4 연결

6. AWS EC2 활용 Streamlit SEO 설정

 

참고


https://fletcher-seth.tistory.com/42

 

[Streamlit 앱 서비스 배포] 3-1. AWS EC2 인스턴스 서버 환경 구성하기(1) Anaconda 설치 및 실행

※때에 따라서 소프트웨어 또는 프레임워크의 버전 및 인터페이스에 대해,조회하시는 시간과 본 포스트 작성의 시간적 격차가 있는 경우해당 설명과 상이한 부분이 있을 수 있습니다!    반

fletcher-seth.tistory.com

https://fletcher-seth.tistory.com/43

 

[Streamlit 앱 서비스 배포] 3-2. AWS EC2 인스턴스 서버 환경 구성하기(2)Git 설치와 GitHub Repository에서 Cl

※때에 따라서 소프트웨어 또는 프레임워크의 버전 및 인터페이스에 대해,조회하시는 시간과 본 포스트 작성의 시간적 격차가 있는 경우해당 설명과 상이한 부분이 있을 수 있습니다!    반

fletcher-seth.tistory.com