글 목차:
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://www.gabia.com/)
- Github 회원가입 및 streamlit 앱 생성 (https://github.com/)
- Putty 설치 (https://www.putty.org/)
이전 글에서는 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