장고 - pyenv 가상환경 설정, 장고 설치, 테스팅서버 구동
pyenv 설치
curl 명령어로 pyenv 설치
1
$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
명령어를 실행하면 pyenv가 설치가 진행된다. 그리고 아마도 다음과 같은 Warning 메세지를 받게 될 것이다.
WARNING: seems you still have not added 'pyenv' to the load path.
# Load pyenv automatically by adding
# the following to ~/.bashrc:
export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"패쓰설정이 필요하다는 메세지이다. 에디터로 ~/.bashrc 파일을 열고, 다음과 같이 수정해준다.
1
2
3
export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
.bashrc 설정 파일을 수정한 이후에는, 해당 터미널 창을 종료하고, 새 터미널 창을 열어준다.
pyenv 명렁어를 입력하여 다음과 같은 메세지가 출력되면 정상적으로 설치가 된 것이다.
pyenv 1.2.9
Usage: pyenv <command> [<args>]
Some useful pyenv commands are:
commands List all available pyenv commands
local Set or show the local application-specific Python version
global Set or show the global Python version
shell Set or show the shell-specific Python version
install Install a Python version using python-build
uninstall Uninstall a specific Python version
rehash Rehash pyenv shims (run this after installing executables)
version Show the current Python version and its origin
versions List all Python versions available to pyenv
which Display the full path to an executable
whence List all Python versions that contain the given executable
See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readmePython 구동에 필요한 패키지 설치
pyenv 가상환경에 Python을 설치하기에 앞서, Python 구동에 필요한 패키지들을 설치한다.
1
sudo apt-get install build-essential libreadline-dev zlib1g-dev libbz2-dev libsqlite3-dev libssl-dev
pyenv에 Python 설치
먼저, 가상환경에 설치할 수 있는 Python의 버전을 확인해본다.
1
$ pyenv install --list
위의 명령어를 실행하면, 현재의 가상환경에서 설치할 수 있는 릴리즈 버전들이 출력된다. 이 가운데에서 각자의 프로젝트에 적합한 버전을 설치한다.
1
$ pyenv install 3.6.2
현재의 가상환경에 설치된 파이썬 버전들을 확인하는 방법은 다음과 같다.
1
2
3
$ pyenv versions
* system (set by /root/.pyenv/version)
3.6.2
\*로 표시된 부분은 현재 가상환경에 설정된 버전을 가리킨다.
앞서 설치한 파이썬 버전을 전역에서 사용하기 위해서는 다음과 같은 명령어를 실행한다.
1
$ pyenv global 3.6.2
다시 한번 파이썬 목록을 확인하면 다음과 같이 파이썬 버전이 변경된 것을 확인할 수 있다.
1
2
3
$ pyenv versions
system
* 3.6.2 (set by /root/.pyenv/version)
설치된 파이썬의 경로를 확인하는 방법은 다음과 같다.
1
2
$ pyenv which python
/root/.pyenv/versions/3.6.2/bin/python
가상환경 생성
pyenv에 가상환경을 생성하는 명령어는 pyenv virtualenv [version] [env_name]이다.
1
2
3
$ pyenv virtualenv 3.6.2 django-jiam
Requirement already satisfied: setuptools in /root/.pyenv/versions/3.6.2/envs/django-jiam/lib/python3.6/site-packages
Requirement already satisfied: pip in /root/.pyenv/versions/3.6.2/envs/django-jiam/lib/python3.6/site-packages
파이썬 목록을 확인하면 다음과 같이 출력된다.
1
2
3
4
5
$ pyenv versions
system
* 3.6.2 (set by /root/.pyenv/version)
3.6.2/envs/django-jiam
django-jiam
가상환경을 활성화시키는 명령어는 pyenv activate [env_name]이다.
가상환경을 활성화시키면, 커맨드라인에 가상환경명[env_name]이 표시된다.
1
2
3
4
5
6
$ pyenv activate django-jiam
(django-jiam)$ pyenv versions
system
3.6.2
3.6.2/envs/django-jiam
* django-jiam (set by PYENV_VERSION environment variable)
가상환경을 비활성화시키는 명령어는 pyenv deactivate이다.
1
$ pyenv deactivate
Dajngo 설치
가상환경에 장고를 설치한다.
먼저 pyenv activate [env_name] 명령어를 실행하여 가상환경을 활성화시킨다.
가상환경이 활성화되면, 다음의 명령어를 실행하여 장고를 설치한다.
1
$ pip install Django==2.1.5
Django Project 생성
장고에서 폴더 구조는 매우 중요하다.
따라서 장고 설치에 앞서 프로젝트를 위한 디렉토리 구조를 설계한다.
설계된 디렉토리 구조에 따라 원하는 디렉토리로 들어가서 장고 프로젝트를 생성한다.
장고 프로젝트 생성 명령어는 django-admin startproject [project-name] 이다.
1
(django-jiam)$ django-admin startproject mysite .
다음과 같은 구조의 장고 프로젝트가 생성되었다. tree 패키지를 사용하면 다음과 같이 트리맵의 형태로 디렉토리 구조를 출력할 수 있다.
1
2
3
4
5
6
7
8
(django-jiam)$ tree
.
├── manage.py
└── conf
├── wsgi.py
├── urls.py
├── settings.py
└── __init__.py
장고 테스팅서버 구동
장고에 내장된 테스팅서버를 구동하여 웹브라우저에 화면을 출력할 수 있다. 이를 위해 반드시 필요로 하는 설정만 진행해보면 다음과 같다.
먼저 conf/settings.py 설정 파일에서 호스트 규칙을 수정한다.
1
ALLOWED_HOSTS = '\*'
다음으로 AWS EC2 대시보드에서 인바운드 규칙을 설정한다. 네트워크 및 보안 > 보안 그룹의 인바운드 탭에서 포트를 열어준다. 여기에서는 아래의 그림과 같이 8000번 포트를 열어주었다.
마지막으로 프로젝트 디렉토리 하위의 manage.py의 runserver 명령어를 실행하여 테스팅 서버를 구동한다.
1
(django-jiam)$ python manage.py runserver 0.0.0.0:8000
웹브라우저에서 http://인스턴스IP주소:포트번호를 입력하여 서버가 정상적으로 작동하는지 확인한다. 성공하면 다음과 같이 로켓을 볼 수 있다.
동시에 runserver를 실행시킨 쉘을 확인해보면, 다음과 같은 메세지가 출력된 것을 확인할 수 있다.
빨간색으로 출력된 메세지는 아직 migrate 명령을 실행하지 않았다는 의미이다. migrate를 비롯하여 여러 설정들을 지정해주자.
Django 설정
지역시각 및 다국어 설정
1
2
3
4
5
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_L10N = True
USE_TZ = True
정적 파일 설정
STATIC_URL = '/static/' 아래에 다음과 같이 추가한다.
1
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
데이터베이스 마이그레이션
프로젝트 디렉토리에서 데이터베이스 마이그레이션을 위한 명령어를 실행한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(django-jiam)$ python manage.py migrate
perations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying sessions.0001_initial... OK