14강 / 20강
배포 — 코드를 서버에 올리기
git clone · 가상환경 · pip, 그리고 순서의 중요성
내 노트북에서는 쇼핑몰이 잘 돌아갑니다. 이제 서버에 올릴 차례예요. "파일을 복사하면 되는 거 아닌가요?" 거의 맞지만, 세 가지 함정이 있습니다.
①코드는 어떻게 옮기나USB? 이메일? → git②라이브러리는?Flask 가 서버엔 없다 → pip③다른 앱과 충돌하면?Flask 버전이 서로 다르다 → 가상환경1단계 · 코드 가져오기
git clone 은 저장소의 코드를 통째로 내려받습니다.
USB로 옮기는 것과 달리, 나중에 git pull 한 줄로 업데이트할 수 있어요.
코드를 서버로 가져옵니다
bash
내 가상 Ubuntu 서버에서 실행
2단계 · 가상환경 만들기
서버 한 대에 앱이 여러 개 돌 수 있습니다. A앱은 Flask 2.0, B앱은 Flask 3.1이 필요하다면? 서버 전체에 하나만 깔면 싸움이 납니다.
가상환경(virtual environment)은 프로젝트마다 자기만의 라이브러리 창고를 갖게 해 줍니다. 7강에서 배운 폴더 하나가 통째로 그 창고예요.
.venv 폴더 안에 이 프로젝트 전용 파이썬이 생깁니다
bash
내 가상 Ubuntu 서버에서 실행
3단계 · 라이브러리 설치
requirements.txt 는 필요한 라이브러리 목록입니다.
이 파일 하나로 어느 서버에서든 똑같은 환경을 다시 만들 수 있어요.
목록을 보고 한꺼번에 설치
bash
내 가상 Ubuntu 서버에서 실행
🎮 배포 실험실
배포 단계를 순서를 바꿔서 해 보세요. 순서가 틀리면 어디서 무엇이 깨지는지 알려 줍니다.
4단계 · 자리 잡기
앱이 놓일 자리와 권한을 정해야 합니다. 여기서 7강의 지식이 쓰입니다.
코드644실행할 필요 없음. 읽기만폴더755들어가려면 x 가 필요합니다스크립트755실행 권한 필요비밀 파일600DB 비밀번호·API 키우리 쇼핑몰의 권한 상태 점검
bash
내 가상 Ubuntu 서버에서 실행
진짜로 돌려 보기 전 마지막 확인
배포한 앱이 진짜 도는지 보려면? 직접 실행해 봅니다.
healthz 는 '살아 있니?'를 묻는 관례적인 주소입니다
bash
내 가상 Ubuntu 서버에서 실행
🤔 확인 문제
파이썬 프로젝트마다 가상환경(.venv)을 따로 만드는 이유는?
해설 A앱은 Flask 2.0, B앱은 3.1이 필요할 수 있습니다. 가상환경은 프로젝트마다 독립된 라이브러리 창고를 줍니다. 오히려 디스크는 조금 더 쓰지만, 그 값어치가 충분합니다.
🤔 확인 문제
requirements.txt 가 하는 일은?해설
pip install -r requirements.txt 한 줄로 목록 전체가 설치됩니다. "내 컴퓨터에선 됐는데" 문제를 막는 가장 기본적인 장치입니다.🤔 확인 문제
웹 앱을
root 계정으로 실행하면 안 되는 이유는?해설 앱은 인터넷에 노출되어 있어 가장 먼저 공격받는 지점입니다. 권한이 낮은 계정으로 돌리면, 구멍이 뚫려도 피해가 그 계정 범위에 갇힙니다.