환경 설정 (1주차)

2025. 3. 10. 16:57고급 웹프로그래밍

웹 프로그래밍, 웹 에서 서비스를 개발하기 위해선 많은 영역의 지식을 알아야 한다
ex) cs, algorithm, DB ... 등

이 고급 웹프로그래밍은 전체적인 과정을 얕게나마 한번 공부하기 위해 만들었다.

환경설정

먼저 프로젝트를 시작하기 앞서 환경을 설정해야 한다.

  1. WSL2 설치 및 설정
  2. pyenv 설치 & Python 설정
  3. Conda 설치 & 가상환경 구성
  4. Docker 설치 & 실행

pyenv와 conda는 python 명령어를 제어 할 수 있어 충돌이 발생할 수 있다. pyenv가 먼저 Python을 제어할 수 있도록 먼저 설치한다(~/ .bashrc에서 $path를 수정할 수 있는 분은 conda 다음에 설치하셔도 됨)

중요!! 데이터 분석이나 연산과 같은 작업을 안하는 분은 그냥 conda는 설치하지 않도록 하자!!


1. WSL2 설치

설치 하는 이유:

  1. WSL 2는 Docker와 완벽하게 연동됨
  2. 실제 서버 환경과 동일한 개발 환경을 구축할 수 있음
  3. 리눅스 명령어를 사용할 수 있음 (와아아앙전 편함)

WSL2

  1. 관리자 모드로 터미널에서 wsl --install 를 실행 한다.
그 후 시스템을 재부팅 한다.
  1. Microsoft Store에서 Ubuntu를 검색하여 설치한다.
    (24.04는 최신 버전이라 어떤 문제가 있을지 잘 모르니 22년04월에 나온 ubuntu 22.04를 추천)

  2. (또는 터미널에서 wsl --list --online를 하고 설치 가능 목록을 보고 wsl --install -d Ubuntu-22.04 이런식으로 설치)
  1. 마지막으로 유닉스 시스템의 이름과 패스워드를 지정 해주면 설치가 완료된다.
    (microsoft store에서 열기 누르면 된다, 혹은 ubuntu2204.exe를 터미널에서 입력해준다.)
  2. 이후에는 터미널에서 wsl을 입력하면 ubuntu를 사용할 수 있지만 그것마저 귀찮다면 터미널의 기본 설정을 ubuntu로 바꾸면 된다.

2. vscode에 WSL2 연동하기

  1. vscode의 extension에서 wsl을 검색하여 설치한다.
  2. 그 후 터미널에서 code .를 입력하면 현재 디렉터리에서 vscode가 열린다.

Pyenv 설치

설치하는 이유:

  1. 시스템 전역의 파이썬 버전 관리 가능
  2. pyenv를 사용하면 프로젝트 폴더마다 .python-version 파일을 두어 자동으로 Python 버전 전환 가능.

pyenv

  1. wsl에서 curl -fsSL https://pyenv.run | bash 를 입력하여 pyenv를 설치한다.
  2. pyenv를 path에 등록하여 컴퓨터가 경로를 읽을 수 있게 해준다.
  3. echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init --path)"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc # virtualenv 사용 시 필요
  4. 소스 코드에서 직접 Python을 빌드하기 위해 c컴파일러 및 필요 패키지 설치
  5. sudo apt update && sudo apt upgrade -y # 패키지 목록 업데이트 sudo apt install -y build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ libffi-dev liblzma-dev

사용 중인 SHELL이 zsh라면 bashrc말고 zshrc를 사용하면 된다

  1. 셀을 닫고 다시 키던가 source ~/.bashrc를 하여 변경사항을 적용한다.
  2. pyenv --version을 하여 잘 설치되었는지 확인한다.
  3. pyenv install -list를 입력하여 원하는 버전을 찾고 pyenv install 버전, pyenv global 버전을 하여 전역에 설정 (특정 폴더에만 적용할거면 pyenv local 버전)
  4. python --version을 하여 잘 적용 됐는지 확인 (현재 어떤 버전들이 깔렸는지 확인하고 싶다면 pyenv versions )

conda 설치

사실 도커가 있다면 로컬에 안깔아도 가상 환경에 설치할 수 있음, 근데 본인은 도커를 해본적이 없는 상태에서 데이터 분석을 지금 해야 할 일이 있어서 진짜 굳이굳이 설치한다

(계속 말 하지만 지금 당장 데이터 분석 할거 아니면 굳이 설치하지 말자, 본인은 데이터 분석을 해야 하는 일이 있어서 굳이 따로 설치함)

설치하는 이유:

  1. 프로젝트별 가상 환경 & 데이터 엔지니어링 패키지 관리(같은 OS 안에서 Python/R 라이브러리를 가상 환경으로 관리)
  2. pyenv install miniconda 로 설치가 아닌 개별적으로 설치하는 이유
    a. pyenv global 또는 pyenv local을 통해 Python 버전을 바꾸면, Conda도 따라 바뀜.
    b. conda 업데이트가 어려움

miniconda

  1. wsl에서 아래와 같은 명령어를 입력한다(*약관, 설치 경로, 초기화 여부에 대해 묻는데 그냥 yes, enter, yes 하면 된다)
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash ~/Miniconda3-latest-Linux-x86_64.sh
  2. source ~/.bashrc 로 변경사항을 적용한다.
  3. conda --version 을 하여 제대로 설치됐는지 확인하다.
  4. conda config --set auto_activate_base false 을 하여 시작시 자동으로 (base)환경이 시작되는것을 끝다.

conda를 만약 사용할 일이 생기면(적어도 이 프로젝트를 하는 동안에는 사용할 일이 매우 높은 확률로 없겠지만)
pyenv global system 로 기본 Python을 시스템 Python으로 변경 후 conda 가상환경 활성화 시킬 것, 반대도 콘다 가상환경 끄고 pyenv 사용할 것

뭔가 충돌이 발생한다? which python을 하여 파이썬이 어디에서 동작하는지 확인해보자.

파이썬의 경로가 miniconda

파이썬의 경로가 pyenv

docker 설치

docker 설치하는 이유

  1. 배포 환경과 동일한 개발 환경을 만들 수 있음
  2. OS 자체를 컨테이너로 격리 → 시스템 전체를 독립적으로 실행 가능
  3. 웹 서버, 데이터베이스, 캐시 서버를 각각의 컨테이너로 실행하고, 필요할 때 개별적으로 확장 가능

WSL에서 Docker 컨테이너 설치

docker

  1. 위 docker를 클릭하여 나온 링크에서 Docker Desktop for Windows. 를 클릭하여 Docker를 다운 받는다.
    •  wsl2에서 직접 설치가 가능하나 이렇게 설치하는게 더 쉽다(단점: docker desktop을 활성화 해야 사용가능)
  2. 시스템이 재부팅 되고 나면 accpet를 누른다.
  3. 설정 -> resources -> WSL integration에서 원하는 버전을 클릭 후 apply & restart를 클릭

4. wsl에서 docker --version 을 입력하여 버전 및 빌드번호 확인
5. docker run hello-world 명령을 사용하여 간단한 기본 제공 Docker 이미지를 실행하여 올바르게 설치되었는지 테스트

(대충 이미지가 없어서 다운 받았고 당신은 이걸 성공적으로 해냈다, 다른 거 보고 싶으면 아래 링크들을 봐라)
6. docker ps -a 로 실행중이거나 종료된 컨테이너 확인

반응형

'고급 웹프로그래밍' 카테고리의 다른 글

FastAPI(models)  (0) 2025.04.02
FastAPI(Header)  (0) 2025.04.02
FastAPI(Body)  (2) 2025.03.27
FastAPI(경로 매개변수)  (0) 2025.03.26
FastAPI(1)  (0) 2025.03.24