Како за поздрав до сите, ова е мојот прв напис во <»Од Linux (од неколку што ги имам во нацртите xD), се надевам дека ќе биде корисно
Па, на моето ново и сегашно работно место, во моментот се спроведува миграција на неколку системи кон Djанго (колку е чудно а? XD) и една од моите задачи, освен развојот, е да ги ставам во производство, па како добар чирак, бидејќи првпат пуштав апликација во производство на вистински сервер: $ Почнав да го читам официјалниот документ на секој од потребните пакети на оџакот (Gunicorn и Supervisord најмногу од сè) и да видам дека упатствата На шпански, не беа многу јасни за мене во некои аспекти, решив да создадам мини водич со чекорите што ги следев за да ја ставам апликацијата во производство, базирана на магацинот Django, Gunicorn, Supervisord, Nginx и Postgresql.
Во случајот кога работам, серверите сè уште работат со Debian Squeeze, но упатството треба да биде целосно валидно за други дистрибуции ... па ајде да се осврнеме на точката и да започнеме:
Индекс
- 0.1 Workе работам како супер корисник. Како прво, потребни се следниве пакети:
- 0.2 Претпоставувам дека тие веќе треба да имаат инсталирано и конфигурирано postgresql
- 1 Создадете виртуелна околина со virtualenv:
- 2 Инсталација и конфигурација на GUnicorn:
- 3 Конфигурација на надзорникот:
- 4 Поставување nginx:
- 5 Поставување на angанго:
Workе работам како супер корисник. Како прво, потребни се следниве пакети:
ПИП -> Алатка за инсталирање и управување со пакети за Python
aptitude install python-pip
Nginx -> Веб-сервер (ќе го користиме како обратен прокси и за кеширање на статичките датотеки 'img, js, css') Ние го инсталираме со:
aptitude install nginx
Супервизор -> Апликација за управување и следење на нашата апликација, иако се користи за многу повеќе. Ние го инсталираме со:
aptitude install supervisor
Виртуеленв -> Тоа ни помага да создадеме прилагодено опкружување за виртуелно извршување за нашата апликација. Ние го инсталираме со:
aptitude install python-virtualenv
Грозје -> веб-сервер за python (сè уште нема да го инсталираме)
Претпоставувам дека тие веќе треба да имаат инсталирано и конфигурирано postgresql
псикопкоп2 -> Postgresql конектор за python (ниту ние нема да го инсталираме уште)
Создадете виртуелна околина со virtualenv:
Прво ќе се префрлиме на работниот директориум што ќе го користиме за пуштање во производство:
cd /var/www/
Потоа, во овој директориум ќе создадеме виртуелно опкружување:
virtualenv ENV-nombreApp
Се префрлуваме во директориумот што го создадов само виртуелнав
cd ENV-nombreAPP
Ја копираме апликацијата во овој директориум и сега продолжуваме да ја активираме околината со:
source bin/activate
Предлогот сега треба да изгледа (ENV)usuario@host:
Ова сега ќе стори сè што правиме да биде зачувано во директориумот / var / www / ENV-име на апликација / без да влијае на системските пакети
Сега преминуваме во директориумот за апликации:
cd nombreApp
Ние продолжуваме да ја инсталираме листата на зависности од апликацијата (доколку е потребно), во која тие се наведени во датотеката барања.txt:
pip install -r requirements.txt
Ние исто така можеме да инсталираме пакети индивидуално, на пример, за да го инсталираме конекторот на postgresql:
pip install psycopg2
Инсталација и конфигурација на GUnicorn:
За да го инсталираме, го правиме на ист начин:
pip install gunicorn
Сега ќе го конфигурираме, за ова ќе создадеме датотека наречена пиштол-развој во коренот на нашата апликација, (иако името може да биде било што) со следнава содржина:
bind = "127.0.0.1:8001" # dirección a donde accederá Nginx
logfile = "/var/www/logs/nombreApp/gunicorn.log" # dirección donde estarán los logs de la aplicación
workers = 1 # dependerá en medida de la carga de trabajo que tenga la aplicación, también depende del hardware con que se cuente
loglevel = 'info' # tipo de logging
Конфигурација на надзорникот:
Сега да го поставиме супервизор, за тоа ја генерираме конфигурациската датотека со
echo_supervisord_conf > /etc/supervisord.conf
Сега ја уредуваме конфигурациската датотека:
vim /etc/supervisord.conf
И ги коментираме следните редови со отстранување на; (точка-запирка):
[unix_http_server] датотека = / tmp / supervisor.sock [supervisord] logfile = / var / log / supervisord.log logfile_maxbytes = 50 MB logfile_backups = 10 loglevel = дебагирање pidfile = / var / run / supervisord.pid nodaemon = false minfds = 1024 = 200] -Appname / appname / gunicorn-deploy.py директориум = / var / www / ENV-appname / appname / autostart = true autorestart = true user = Корисничко име redirect_stderr = true stdout_logfile = / var / www / logs / appname / supervisord.log
Сега ќе ја создадеме скриптата за супервизор да започне со системот, за тоа ќе ја создадеме датотеката:
vim /etc/init.d/supervisord
И ја додаваме следнава содржина:
# Автоматско започнување на надзор # # опис: автоматски започнува надзор # име на процес: надзор # пид-датотека: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervisord SUPERVISORCTL = / usr / local / bin / supervisorctl случај $ 1 во почеток) echo -n "Starting supervisord:" $ SUPERVISORD echo ;; стоп) ехо -n "Запирање на надзор:" $ SUPERVISORCTL ехо на исклучување ;; рестартирај) echo -n "Запирање на супервизор:" $ SUPERVISORCTL исклучување echo echo -n "Почеток на супервизор:" $ SUPERVISORD echo ;; дека В.
И сега даваме дозволи за извршување на датотеката за да може да започне со системот:
sudo chmod +x /etc/init.d/supervisord
Ние ги ажурираме врските за да ја започнеме услугата:
sudo update-rc.d supervisord defaults
Ја започнуваме услугата:
sudo /etc/init.d/supervisord start
Поставување nginx:
Овој чекор е исто така едноставен, ние ќе ја создадеме следнава конфигурациска датотека од nginx за нашата апликација:
vim /etc/nginx/sites-enabled/nombreApp
И ние ќе ви ја додадеме следната содржина
сервер {слушај 9001; # порта каде што сакаат nginx да го слушаат името на серверот www.domain.com; # или 192.168.0.100, адреса до која ќе пристапуваме до пристап_лог /var/log/nginx/Appname.access.log; # каде што ќе ја имаме локацијата на дневникот на апликацијата / {# каде што ќе повика nginx при пристап до www.dominio.com/ proxy_pass http://127.0.0.1:8001; proxy_set_header Домаќин $ http_host; } локација / статичко / {# каде што ќе пристапува nginx кога ќе влеземе во www.domain.com/static/ alias / var / www / ENV-апликација / име на апликација / статички датотеки /; }}
И ние го рестартираме nginx:
service nginx restart
Поставување на angанго:
Ајде да ја измениме датотеката за конфигурација django:
vim nombreApp/settings.py
Ние ја бараме линијата што вели DEBUG = Вистина и ја менуваме вредноста, останувајќи ДЕБУГ = Лажно
Ние ги додаваме параметрите ДБ:
БАЗИ НА ПОДАТОЦИ = {'стандардно': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # или mysql или што било 'NAME': 'DBName', 'USER': 'DBUser', 'PASSWORD': 'лозинка DB ',' HOST ':' localhost ', # или оној што им треба' PORT ':' ', # или оној што го користат}}
Ја бараме линијата ALLOWED_HOSTS = [] и го додаваме доменот или адресата преку која ќе пристапуваме, оставајќи нешто како ALLOWED_HOSTS = ['www.domain.com']
Ние го конфигурираме директориумот за статички датотеки, ја бараме линијата што вели STATIC_ROOT = ' '
и ја менуваме вредноста, поставувајќи ја апсолутната патека онаму каде што сакаме да бидат нашите статички датотеки, во мојот случај го оставив горе-долу вака STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'
Скоро завршена, ја извршуваме следнава команда:
./manage.py collectstatic
Ова ќе создаде папка со име 'статика во патеката што ја одредуваме во поставувања.пир ", тоа е местото каде што ќе бидат сите наши статички датотеки.
И, конечно, го рестартираме супервизорот за да ги преземе новите измени:
supervisorctl restart nombreApp
И тоа ќе беше сè, на крајот не беше толку точно? ми се чинеше едноставно
Се надевам дека е корисно за вас, поздрав
9 коментари, оставете ги вашите
Разбирам дека апликацијата Django не треба да се става во коренот на папката со веб-серверот (/ var / www)? За безбедност, не знам дали грешам.
Поздрав.
Во ред !!! Тоа беше нешто за што воопшто не бев свесен, ќе го ажурирам записот 😛 и штом ќе се вратам во понеделник ќе направам промени во апликацијата xD
Благодарам
Епале брат добро упатство. Неодамна бев исто во истата, но во Debian 7, морав да пребарувам и читам повеќе или помалку. Препорачувам да ја креирате виртуелната средина на virtualenv во домот на корисникот во скриена папка.
Честитки!
хахаха цтм јас вчера го документирав Djанго и ти веќе поминуваш низ галаксијата 999999 Поздрав мажи xD
Многу добра статија =) Само пред една недела ја распоредив мојата апликација django, но тоа го направив со uwsgi и nginx, дали знаете каква предност има пилингот? Сум видел дека се споменува многу.
Убаво е да се види дека џанго станува многу популарен, вистината е најдобрата рамка што сум ја видел =)
За STATIC_ROOT, она што го правам е да дефинирам глобална променлива. Нешто како ова:
import os
PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')
Каде што заднината е апликација што ја создадов. Затоа, се осигурувам дека каде што ќе го распоредам проектот, глобалниот пат е ист.
Интересно, ќе се обидам во иднина.
Патем, дали некој знае како да овозможи акценти и не-асии карактери во апликација џанго?
Гледав насекаде, ниту еден од следниве методи не работи за мене:
sys.setdefaultencoding ('utf-8') # во страниците.py
# - * - кодирање: utf-8 - * - # во секоја питонска датотека
Уредувањето на site.py и ставањето на utf-8 наместо ascii би требало да функционираат, но $ file models.py ме известува дека мојата датотека е сè уште ascii.
Некои предлози?
Успеа!!!!
многу добро упатство, но можете да направите како да ја поставите мојата апликација на веб-сервер што е веќе во производство
благодарение