웹사이트 검색

Ubuntu 16.04에서 PostgreSQL 및 Nginx와 함께 Django를 설치하는 방법


이 페이지에서

  1. 1단계 - Django, Virtualenv 및 Gunicorn 설치
  2. 2단계 - PostgreSQL 설치 및 구성
  3. 3단계 - 새 Django 프로젝트 시작\n
    1. 새 사용자 만들기
    2. 새 Virtualenv 생성 및 Django 설치
    3. PostgreSQL로 새 프로젝트 시작\n

    Django는 Python 기반의 무료 오픈 소스 웹 프레임워크입니다. MVT(Model-View-Template) 아키텍처 패턴을 사용하는 고급 Python 웹 프레임워크입니다. Django는 Django Software Foundation(DSF)에서 관리합니다. Django 웹 프레임워크는 빠르며 개발자가 애플리케이션을 신속하게 구축(RAD)할 수 있도록 도와줍니다. var slotId=div-gpt-ad-howtoforge_com-box-3-0;var ffid=1;var alS=1002%1000;var container=document.getElementById(slotId);container.style.width=100%;var ins =document.createElement(ins);ins.id=slotId+-asloaded;ins.className=adsbygoogle ezasloaded;ins.dataset.adClient=pid;ins.dataset.adChannel=cid;if(ffid==2){ins.dataset .fullWidthResponsive=참;}

    이 튜토리얼에서는 Django 웹 프레임워크를 설치하고 PostgreSQL 데이터베이스를 개발용으로 사용하도록 구성하는 방법을 보여드리겠습니다. 속도와 보안상의 이유로 Django 웹 프레임워크의 리버스 프록시로 Nginx를 실행할 것입니다. Django는 Python WSGI HTTP 서버 Gunicorn에서 실행되며 프로세스 제어 시스템으로 Supervisor를 사용하여 Gunicorn을 관리하고 제어합니다.

    전제 조건

    • 우분투 16.04
    • 루트 권한\n

    1단계 - Django, Virtualenv 및 Gunicorn 설치

    시스템의 기본 Python 버전으로 python3을 사용하겠습니다. Ubuntu 16.04에 python3 및 pip3를 설치합니다. Pip3는 Python으로 작성된 소프트웨어 패키지를 설치하고 관리하는 패키지 관리 시스템입니다.

    터미널에서 또는 SSH를 통해 서버에 루트 사용자로 연결하고(여기에서 하는 것처럼) Ubuntu 리포지토리를 업데이트합니다.

    ssh 
    sudo apt-get update

    다음 apt 명령으로 python3 및 pip3를 설치합니다.

    sudo apt-get install python3-pip python3-dev

    "pip3" 대신 "pip"로 사용할 수 있도록 pip3 명령에 대한 새 심볼릭 링크를 생성하고 업그레이드합니다.

    ln -s /usr/bin/pip3 /usr/bin/pip
    pip install --upgrade pip

    다음으로 pip 명령을 사용하여 필요한 Python 패키지를 설치합니다. 여기에 Django, Virtualenv 및 Gunicorn을 설치합니다.

    pip install django virtualenv gunicorn

    2단계 - PostgreSQL 설치 및 구성

    Django 프로젝트의 데이터베이스로 PostgreSQL을 사용할 것입니다. 이 apt 명령으로 PostgreSQL을 설치합니다.

    sudo apt-get install postgresql postgresql-contrib libpq-dev

    설치가 완료되면 pip를 사용하여 psycopg2라는 새 Python 패키지를 설치합니다. python-postgreSQL 데이터베이스 어댑터입니다.

    pip install psycopg2

    이제 postgres 사용자에 액세스하고 psql 명령으로 PostgreSQL 셸을 엽니다.

    su - postgres
    psql

    아래 명령을 사용하여 postgres 사용자의 새 비밀번호를 설정하십시오.

    \password postgres
    Enter new password:

    다음으로 PostgreSQL에서 django 프로젝트에 대한 새 데이터베이스와 새 사용자/역할을 만듭니다. 사용자/역할 python_dev로 django_db라는 새 데이터베이스를 생성하겠습니다. PostgreSQL 셸에서 아래 명령을 입력합니다.

    CREATE USER python_dev WITH PASSWORD 'aqwe123';
    CREATE DATABASE django_db OWNER python_dev;

    데이터베이스 목록 및 역할을 참조하십시오.

    \list

    3단계 - 새 Django 프로젝트 시작

    hello_django라는 이름으로 첫 번째 Django 프로젝트를 시작합니다. 우리는 프로젝트에 대해 루트 권한을 사용하지 않을 것입니다. 프로젝트에 대해 일반 Linux 사용자 natsume을 사용하겠습니다. 프로젝트를 설명하는 다른 사용자 이름을 사용해도 됩니다.

    새 사용자 만들기

    아래 명령을 사용하여 새 Linux 사용자를 만듭니다.

    useradd -m -s /bin/bash natsume
    passwd natsume

    -m = 홈 디렉토리를 자동으로 생성합니다.
    -s = 사용자의 기본 셸을 정의합니다.

    새 Virtualenv 생성 및 Django 설치

    natsume 사용자로 로그인:

    su - natsume

    python3을 기본 Python 버전으로 사용하여 Django 프로젝트용 myproject 디렉토리에 새 가상 환경을 만듭니다.

    mkdir myproject
    virtualenv --python=python3 myproject/

    myproject 디렉토리로 이동하여 virtualenv를 활성화합니다.

    cd myproject/
    source bin/activate

    다음으로 해당 환경에서 pip 명령으로 Django, gunicorn 및 psycopg2를 설치합니다.

    pip install django gunicorn psycopg2

    PostgreSQL로 새 프로젝트 시작

    아래의 django-admin 명령을 사용하여 Django 프로젝트 hello_django를 시작합니다.

    django-admin startproject hello_django

    새 디렉토리 hello_django를 생성하고 해당 디렉토리로 이동하여 vim으로 설정 파일 setting.py를 편집합니다.

    cd hello_django/
    vim hello_django/settings.py

    아래 구성을 사용하여 76행에서 데이터베이스 설정을 변경하십시오.

            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'django_db',
            'USER': 'python_dev',
            'PASSWORD': 'aqwe123',
            'HOST': 'localhost',
            'PORT': '',

    파일 끝에서 아래 STATIC_ROOT 구성 줄을 추가하여 정적 URL을 구성합니다.

    STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

    저장 및 종료.

    다음으로 데이터베이스를 postgreSQL 데이터베이스로 마이그레이션하고 새 관리 사용자를 만듭니다. 그런 다음 명령을 실행할 때 자동으로 생성되는 정적 디렉터리에 모든 정적 파일을 수집합니다.

    python manage.py migrate
    python manage.py createsuperuser
    python manage.py collectstatic

    오류가 없는지 확인하고 runserver 명령어로 django 프로젝트 서버를 테스트 실행합니다.

    python manage.py runserver 0.0.0.0:8080

    웹 브라우저를 열고 포트 8080에서 서버 IP 주소를 방문합니다. 제 경우에는 http://192.168.1.115:8080입니다. Django 기본 페이지가 표시됩니다.

    종료하려면 Ctrl + c를 누르십시오.

    4단계 - Gunicorn으로 Django 프로젝트 구성

    Gunicorn 또는 Green Unicorn은 Ruby Unicorn 프로젝트에서 분기된 Python WSGI HTTP 서버입니다. 다양한 웹 프레임워크를 지원하며 구성이 쉽습니다.

    myproject 디렉토리로 이동하여 natsume 사용자 홈 디렉토리에 대한 가상 환경을 활성화합니다.

    cd ~/myproject/
    source bin/activate

    vim을 사용하여 bin 디렉토리 내에 gunicorn_start라는 새 파일을 만듭니다.

    vim bin/gunicorn_start

    아래에 구성 붙여넣기:

    #!/bin/bash

    # Project Name
    NAME="hello_django"                       

    # Django Project Directory
    DJANGODIR=/home/natsume/myproject/hello_django          

    # Run gunicorn on the socket file
    SOCKFILE=/home/natsume/myproject/hello_django/run/gunicorn.sock

    # Gunicorn running as user and group
    USER=natsume
    GROUP=natsume

    # Workers
    NUM_WORKERS=3

    #Module Setting
    #replace hello_django with your project name
    DJANGO_SETTINGS_MODULE=hello_django.settings
    DJANGO_WSGI_MODULE=hello_django.wsgi

    echo "Starting $NAME as `whoami`"

    # Activate the virtual environment
    cd $DJANGODIR
    source ../bin/activate
    export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
    export PYTHONPATH=$DJANGODIR:$PYTHONPATH

    # Create the run directory if it doesn't exist
    RUNDIR=$(dirname $SOCKFILE)
    test -d $RUNDIR || mkdir -p $RUNDIR

    # Start your Django Unicorn
    # Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
    exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
    --name $NAME \
    --workers $NUM_WORKERS \
    --user=$USER --group=$GROUP \
    --bind=unix:$SOCKFILE \
    --log-level=debug \
    --log-file=-

    저장 및 종료.

    chmod 명령으로 파일을 실행 가능하게 만드십시오.

    chmod u+x bin/gunicorn_start

    5단계 - Supervisor 설치 및 구성

    Supervisor는 Linux 운영 체제용 프로세스 제어 시스템입니다. Linux에서 여러 프로세스를 구성, 모니터링 및 제어할 수 있습니다. Supervisor는 Python을 기반으로 하며 pip 명령을 사용하여 Python 저장소 pypi에서 설치하거나 apt를 사용하여 ubuntu 저장소에서 설치할 수 있습니다.

    이 apt 명령으로 관리자를 설치합니다.

    sudo apt-get install supervisor

    Supervisor는 /ect/supervisor/ 디렉토리에 기본 구성 파일이 있습니다. 해당 디렉토리로 이동하여 Django 프로젝트에 대한 새 구성을 생성하여 감독자와 함께 제어할 수 있도록 합니다.

    cd /etc/supervisor/conf.d/
    vim hello-django.conf

    아래에 감독자 구성을 붙여넣습니다.

    [program:hello_django]
    command = sh /home/natsume/myproject/bin/gunicorn_start
    user = natsume
    stdout_logfile = /home/natsume/myproject/logs/gunicorn_supervisor.log
    redirect_stderr = true
    environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

    저장 및 종료.

    그런 다음 natsume 사용자로 로그인하고 gunicorn 소켓 파일 및 감독자 로그 파일에 필요한 디렉토리를 만듭니다.

    su - natsume

    # Directory for gunicorn sock file
    mkdir -p myproject/hello_django/run/

    # Directory and file for supervisor log files
    mkdir -p myproject/logs/
    touch myproject/logs/gunicorn_supervisor.log

    "exit"를 사용하여 루트 사용자로 돌아가서 Supervisor를 시작합니다.

    exit
    systemctl start supervisor

    프로세스의 상태 및 로그를 확인하십시오.

    supervisorctl
    tail -f hello_django

    6단계 - Django 프로젝트용 Nginx 설치 및 구성

    이 단계에서는 Nginx를 설치하고 Django 프로젝트의 역방향 프록시로 구성합니다.

    Ubuntu 리포지토리에서 Nginx를 설치합니다.

    sudo apt-get install nginx

    Nginx 가상 호스트 구성 디렉토리로 이동하여 hello_django 가상 호스트 파일을 만듭니다.

    cd /etc/nginx/sites-available/
    vim hello_django

    아래에 구성 붙여넣기:

    # Django running with Gunicorn Sock file
    upstream hello_django_project {
        server unix:/home/natsume/myproject/hello_django/run/gunicorn.sock fail_timeout=0;
    }

    server {

        listen   80;
        server_name www.django-nginx.com;

        client_max_body_size 4G;

        access_log /home/natsume/myproject/logs/nginx-access.log;
        error_log /home/natsume/myproject/logs/nginx-error.log;

        location /static/ {
            alias   /home/natsume/myproject/hello_django/static/;
        }

        location /media/ {
            alias   /home/natsume/myproject/hello_django/media/;
        }

        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;

        # Try to serve static files from nginx, no point in making an
        # *application* server like Unicorn/Rainbows! serve static files.
        if (!-f $request_filename) {
            proxy_pass http://hello_django_project;
            break;
            }
       

    # Error pages
        error_page 500 502 503 504 /500.html;
        location = /500.html {
            root /home/natsume/myproject/hello_django/static/;
            }
        }
    }

    저장 및 종료.

    가상 호스트를 활성화하고 Nginx 구성을 테스트합니다.

    ln -s /etc/nginx/sites-available/hello_django /etc/nginx/sites-enabled/
    nginx -t

    오류가 없는지 확인한 다음 Nginx를 다시 시작합니다.

    systemctl restart nginx

    7단계 - Django 테스트

    5단계에서 도메인 이름이 www.django-nginx.com인 Django 프로젝트용 가상 호스트를 만들었습니다. 브라우저를 열고 프로젝트에 대해 선택한 도메인 이름을 방문하십시오.

    www.django-nginx.com/admin/

    그러면 Django 관리 대시보드로 리디렉션됩니다.

    우리가 설정한 모든 서비스가 아래 명령으로 실행 중인지 확인합니다.

    netstat -pl

    모든 서비스에서 사용하는 pid, port 및 sock 파일이 표시됩니다.

    Ubuntu 16.04에서 PostgreSQL 및 Nginx를 사용한 Django 설치 및 구성이 성공적으로 완료되었습니다.

    연결

    • http://supervisord.org/