아나콘다를 통해 설치되는 버전은 django 2.0.5 이다. 금일 기준 최신 공식버전은 2.0.6 이다 (https://www.djangoproject.com/download/).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | (redsparrow) fukaerii@server:~$ conda install -c anaconda django Solving environment: done ## Package Plan ## environment location: /home/fukaerii/anaconda3/envs/redsparrow added / updated specs: - django The following packages will be downloaded: package | build ---------------------------|----------------- certifi-2018.4.16 | py36_0 142 KB anaconda django-2.0.5 | py36hd476221_0 4.7 MB anaconda openssl-1.0.2o | h20670df_0 3.4 MB anaconda pytz-2018.4 | py36_0 212 KB anaconda ca-certificates-2018.03.07 | 0 124 KB anaconda ------------------------------------------------------------ Total: 8.6 MB The following NEW packages will be INSTALLED: django: 2.0.5-py36hd476221_0 anaconda pytz: 2018.4-py36_0 anaconda The following packages will be UPDATED: ca-certificates: 2018.03.07-0 --> 2018.03.07-0 anaconda certifi: 2018.4.16-py36_0 --> 2018.4.16-py36_0 anaconda openssl: 1.0.2o-h20670df_0 --> 1.0.2o-h20670df_0 anaconda Proceed ([y]/n)? | cs |
파이썬을 통해 Django 설치가 정상적으로 이루어졌는지 검증한다.
1 2 3 4 5 6 7 8 9 | (redsparrow) fukaerii@server:~$ python Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) [GCC 7.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> print(django.get_version()) 2.0.5 >>> | cs |
아래와 같이 간단하게도 가능하다
1 2 | (redsparrow) fukaerii@server:~$ django-admin --version 2.0.5 | cs |
Django가 설치된 경로는 다음과 같다.
/home/fukaerii/anaconda3/envs/redsparrow/lib/python3.6/site-packages/django
그러면 프로젝트를 만들어보자.
django-admin 을 통해 어플리케이션을 생성할 수 있다(/home/fukaerii/anaconda3/envs/redsparrow/lib/python3.6/site-packages/django/bin/django-admin.py).
startproject
명령을 통해 프로젝트 디렉토리 구조를 만든다.
다음의 명령을 실행해보자. django-admin startproject <projectname>
명령은 프로젝트 디렉토리와 프로젝트 패키지 이름을 <projectname> 으로 명명하게 되고, 명령이 실행된 디렉토리에 프로젝트를 생성하게 된다.
만약 옵션인 <destination> 파라메터를 넣게되면, Django 는 제공된 목적지 디렉토리를 프로젝트 디렉토리로 사용하게 되고, 그 디렉토리 안에 manage.py 과 프로젝트 패키지 파일을 생성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | (redsparrow) fukaerii@server:~$ django-admin startproject dominika (redsparrow) fukaerii@server:~$ ls -al total 48 drwxr-xr-x 5 fukaerii fukaerii 4096 Jun 15 16:44 . drwxr-xr-x 3 root root 4096 Jun 14 12:24 .. drwxrwxr-x 23 fukaerii fukaerii 4096 Jun 14 16:56 anaconda3 -rw------- 1 fukaerii fukaerii 36 Jun 14 16:46 .bash_history -rw-r--r-- 1 fukaerii fukaerii 220 Jun 14 12:24 .bash_logout -rw-r--r-- 1 fukaerii fukaerii 3852 Jun 14 16:56 .bashrc -rw-r--r-- 1 fukaerii fukaerii 3771 Jun 14 16:56 .bashrc-anaconda3.bak drwxrwxr-x 3 fukaerii fukaerii 4096 Jun 14 16:58 .conda drwxrwxr-x 3 fukaerii fukaerii 4096 Jun 15 16:44 dominika -rw-rw-r-- 1 fukaerii fukaerii 825 Jun 14 18:04 environment.yaml -rw-r--r-- 1 fukaerii fukaerii 807 Jun 14 12:24 .profile -rw------- 1 fukaerii fukaerii 54 Jun 15 16:31 .python_history (redsparrow) fukaerii@server:~$ pwd /home/fukaerii | cs |
그러면 어떤 식으로 프로젝트 파일들이 생성되는지 살펴보자. 해당 디렉토리에는 manage.py
파일과 dominika
라는 폴더가 있다. 여기서 manage.py
파일은 django-admin
과 유사한 파일로 프로젝트 패키지를 sys.path
에 올린다. 그리고 DJANGO_SETTINGS_MODULE
환경변수가 생성된 프로젝트의 settings.py
file 을 가리키도록 하는 역할도 한다.
여기서 manage.py
파일의 내용을 살펴보자. 나올 때는 q
를 누르면 된다.
1 | (redsparrow) fukaerii@server:~$ less manage.py | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dominika.settings") try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) from exc execute_from_command_line(sys.argv) manage.py (END) | cs |
dominika
폴더 아래에는 다음과 같이 4개의 파일이 있음을 알 수 있다.
여기에는 __init__.py settings.py urls.py wsgi.py 이렇게 4개의 파일이 있는데 각각의 용도는 다음과 같다.
__init__.py
는 여러분의 파이썬 프로젝트의 시작점을 나타낸다.
settings.py
는 Django 설치 구성에 대해 언급하고, Django 로 하여금 어느 셋팅이 유효한지 알려준다.
urls.py
는 라우팅과 URL을 각각의 views로 매핑하는 기능을 가진 urlpatterns
리스트를 가지고 있다. list, that routes and maps URLs to their .
wsgi.py
는 웹서버 게이트웨이 인터페이스에 대한 설정을 담고 있다. Web Server Gateway Interface (WSGI) 는 웹서버와 어플리케이션을 배포하는 파이썬 플랫폼 표준이다.
runserver
명령을 통해 서버를 구동한 후 구현된 웹사이트를 눈으로 확인해보자.
서버 ip 주소를 /home/fukaerii/dominika/dominika/
경로 상의 settings.py
을 열어 ALLOWED_HOSTS
에 등록해야 한다.
Django 문서에 따르면, ALLOWED_HOSTS
변수는 Django 사이트가 서브할 수 있는 호스트/도메인 이름을 나타내는 문자열의 집합이다. 이는 HTTP 호스트 헤더 공격을 막기 위한 보안 방법 중 하나이다.
해당 파일의 Allowed Hosts 란에 서버 IP 를 입력해주면 된다. 그리고 저장 후 빠져나온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = ['***.***.**.**'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] | cs |
다시 manage.py
파일이 위치한 디렉토리로 이동하여 아래의 명령을 실행한다. 여기서 ***.***.**.** 는 앞서 입력한 여러분의 서버 IP 주소이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | (redsparrow) fukaerii@server:~/dominika$ python manage.py runserver ***.***.**.**:8000 Performing system checks... System check identified no issues (0 silenced). You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. June 16, 2018 - 02:43:45 Django version 2.0.5, using settings 'dominika.settings' Starting development server at http://***.***.**.**:8000/ Quit the server with CONTROL-C. | cs |
브라우저를 열고 http://***.***.***.**:8000/ 을 주소창에 넣으면 다음과 같이 완성된 화면을 볼 수 있다.
'프로그래밍 Programming' 카테고리의 다른 글
우분투에 클로져 설치하기 Installing clojure on ubuntu (0) | 2018.08.04 |
---|---|
우분투 사용자 패스워드 변경하기 (0) | 2018.06.19 |
아나콘다 환경설정 저장하기 Save the Environment with Anaconda (0) | 2018.06.14 |
우분투 18.04 아나콘다 설치하기 How To Install the Anaconda Python Distribution on Ubuntu 18.04 (0) | 2018.06.14 |
우분투 사용자 추가 - Add user to Ubuntu via command line (0) | 2018.06.14 |