Ubuntu 16.04에서 PostgreSQL 및 Nginx와 함께 Django를 설치하는 방법
이 페이지에서
- 1단계 - Django, Virtualenv 및 Gunicorn 설치
- 2단계 - PostgreSQL 설치 및 구성
- 3단계 - 새 Django 프로젝트 시작\n
- 새 사용자 만들기
- 새 Virtualenv 생성 및 Django 설치
- 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/activatevim을 사용하여 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_django6단계 - 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/