BackEnd/인프라

[AWS Lightsail] 가상환경 생성 및 패키지 설치

Jong_seoung 2024. 8. 6. 12:50
반응형

가상환경 생성 및 활성화

# 현재 유저 확인
ubuntu@django-instance:~$ whoami
ubuntu

ubuntu@django-instance:~$ groups
ubuntu adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd

ubuntu@django-instance:~$ cd /srv

ubuntu@django-instance:/srv$ ls -al
total 8
drwxr-xr-x  2 root root 4096 Jul  1 15:38 .
drwxr-xr-x 19 root root 4096 Aug  5 06:54 ..

# 권한 변경
ubuntu@django-instance:/srv$ sudo chown ubuntu:ubuntu /srv/

ubuntu@django-instance:/srv$ ls -al
total 8
drwxr-xr-x  2 ubuntu ubuntu 4096 Jul  1 15:38 .
drwxr-xr-x 19 root   root   4096 Aug  5 06:54 ..

ubuntu@django-instance:/srv$ python3.12 --version
Python 3.12.4

# 파이썬 3.12버전 가상환경 생성
ubuntu@django-instance:/srv$ python3.12 -m venv /srv/venv

ubuntu@django-instance:/srv$ ls
venv

# 가상환경 활성화
ubuntu@django-instance:/srv$ source ./venv/bin/activate

(venv) ubuntu@django-instance:/srv$ which python
/srv/venv/bin/python

(venv) ubuntu@django-instance:/srv$ python --version
Python 3.12.4

(venv) ubuntu@django-instance:/srv$ deactivate

ubuntu@django-instance:/srv$ /srv/venv/bin/python --version
Python 3.12.4

# pip list
ubuntu@django-instance:/srv$ /srv/venv/bin/python -m pip list
Package Version
------- -------
pip     24.0

[notice] A new release of pip is available: 24.0 -> 24.2
[notice] To update, run: /srv/venv/bin/python -m pip install --upgrade pip
ubuntu@django-instance:/srv$

 

 

소스코드 복제 및 패키지 설치

# psycopg2 라이브러리 설치에 필요한 패키지 설치
sudo apt install -y build-essential python3.12-dev libpq-dev postgresql-client

git clone 레포지토리 주소 /srv/course-repo
cd /srv/course-repo

cd /srv/course-repo/myproj
# psycopg2 라이브러리 설치 필수!
/srv/venv/bin/python -m pip install -r requirements/prod.txt

 

psycopg2 라이브러리 설치에 필요한 패키지 설치가 안되면 아래처럼 에러가 발생한다.

아래처럼 오래된 라이브러리를 재시작할 것이냐고 묻는 창이 뜨면 tab키를 이용하여 Ok 선택하면 된다.

 

 

환경 변수 파일  구성

  • mkdir /srv/config/ : 설정 파일
  • mkdir /srv/data/ : 데이터
  • mkdir /srv/statcfiles : STATIC_ROOT 경로
  • mkdir /srv/data/mediafiles : MEDIA_ROOT 경로
ubuntu@django-instance:/srv/course-repo/mypro$ cd /srv

ubuntu@django-instance:/srv$ ls
course-repo  venv

ubuntu@django-instance:/srv$ mkdir config

ubuntu@django-instance:/srv$ mkdir data

ubuntu@django-instance:/srv$ mkdir staticfiles

ubuntu@django-instance:/srv$ mkdir -p data/mediafiles

ubuntu@django-instance:/srv$ ls
config  course-repo  data  staticfiles  venv

ubuntu@django-instance:/srv$ vim /srv/config/django.env

ubuntu@django-instance:/srv$ cat -n /srv/config/django.env
더보기
# DEBUG 환경은 .env에 직접 하지 않고, gunicorn 명령을 통해 지정하겠습니다.
# 손쉽게 DEBUG 환경을 끄고 켤 수 있어야, 배포 상황을 보다 손쉽게 디버깅할 수 있습니다.
# DEBUG=false

ALLOWED_HOSTS=localhost,127.0.0.1,공인아이피

# 직접 아이피로 http 프로토콜로 서비스되기에 설정할 필요가 없습니다.
# CSRF_TRUSTED_ORIGINS=

# PostgreSQL 데이터베이스를 사용하기 전에, sqlite3 데이터베이스를 사용하겠습니다.
DATABASE_URL=sqlite:////srv/data/db.sqlite3

# 정적파일 경로 지정
STATIC_ROOT=/srv/staticfiles
MEDIA_ROOT=/srv/data/mediafiles

 

환경변수 검증

db.sqlite3 데이터베이스로 동작을 테스트

# 프로젝트 디렉토리로 이동
$ cd /srv/course-repo/mypro

# 가상환경 활성화 및 확인
$ source /srv/venv/bin/activate

$ which python

# 장고 쉘을 통해, django.env를 통한 설정 확인
$ ENV_PATH=/srv/config/django.env python manage.py shell
>>> from django.conf import settings
>>> settings.DEBUG
>>> settings.ALLOWED_HOSTS
>>> settings.EMAIL_HOST_USER
>>> settings.EMAIL_HOST_PASSWORD
>>> settings.DEFAULT_FROM_EMAIL
>>> settings.STATIC_ROOT
>>> settings.MEDIA_ROOT
>>> settings.DATABASES

# 마이그레이션 내역 확인 및 migrate
$ ENV_PATH=/srv/config/django.env python manage.py showmigrations
$ ENV_PATH=/srv/config/django.env python manage.py migrate

 

 

서버 구동

80번 포트로 서버 구동

sudo ENV_PATH=/srv/config/django.env /srv/venv/bin/python manage.py runserver 0.0.0.0:80

 

gunicorn으로 서버 구동

gunicorn에서는 static 파일 서빙을 지원하지 않음

sudo /srv/venv/bin/gunicorn --bind "0.0.0.0:80" --user ubuntu --group ubuntu --env ENV_PATH=/srv/config/django.env --env DEBUG=true config.wsgi:application
반응형