반응형
가상환경 생성 및 활성화
# 현재 유저 확인
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
반응형
'인프라 > AWS' 카테고리의 다른 글
[AWS] 예산 설정해서, 초과되는 비용 확인하기 (1) | 2024.09.18 |
---|---|
[AWS Lightsail] 관리형 데이터베이스 생성 및 연동 (0) | 2024.08.07 |
[AWS Lightsail] 시스템 서비스로 장고 애플리케이션 배포 (0) | 2024.08.06 |
[AWS Lightsail] 비공식 PPA를 통한 파이썬 설치하기 (3.12) (0) | 2024.08.06 |
[AWS Lightsail] 리눅스 가상머신 생성 (0) | 2024.08.06 |