Како применити Дјанго апликацију:

Шта кажете на поздрав свима, ово је мој први чланак у <» ФромЛинук (од неколико које имам у нацртима кД), надам се да ће вам бити од користи 

Па, на мом новом и тренутном послу, тренутно се врши миграција неколико система на Дјанго (колико је чудно, а? КСД) и један од мојих задатака, осим развоја, је стављање у производњу ових, затим као добар шегрт, пошто сам први пут пустио апликацију у продукцију на правом серверу: $ Почео сам да читам званични документ сваког од потребних пакета стека (Гуницорн и Супервисорд највише), и видећи да туторијали На шпанском нису ми били превише јасни у неким аспектима, одлучио сам да створим мини водич са корацима које сам следио за пуштање апликације у производњу, заснован на стеку Дјанго, Гуницорн, Супервисорд, Нгинк и Постгрескл.

У случају када радим, сервери и даље раде на Дебиан Скуеезе-у, али водич би требао бити потпуно важећи за друге дистрибуције ... па кренимо одмах на ствар и кренимо:

Радићу као супер корисник. Пре свега, потребни су следећи пакети:

ПИП -> Алат за инсталирање и управљање пакетима за Питхон
aptitude install python-pip

Нгинк -> Веб сервер (користићемо га као обрнути прокси и за кеширање статичких датотека 'имг, јс, цсс') Инсталирамо га са:
aptitude install nginx

Надзорник -> Апликација за управљање и надгледање наше апликације, мада се користи за много више. Инсталирамо га са:
aptitude install supervisor

Виртуаленв -> Помаже нам у стварању прилагођеног виртуелног окружења за извршавање наше апликације. Инсталирамо га са:
aptitude install python-virtualenv

Gunicorn -> Веб сервер за Python (ово још нећемо инсталирати)

Претпостављам да би већ требало да имају инсталиран и конфигурисан постгрескл

psycopg2 -> PostgreSQL конектор за Python (ни њега још нећемо инсталирати)

Створите виртуелно окружење помоћу виртуаленв:

Прво ћемо прећи на радни директоријум који ћемо користити за пуштање у производњу:
cd /var/www/

Тада ћемо у овом директоријуму створити виртуелно окружење:
virtualenv ENV-nombreApp

Прелазимо у директоријум који сам управо креирао виртуаленв
cd ENV-nombreAPP

Копирамо апликацију у овај директоријум и сада настављамо да активирамо окружење помоћу:
source bin/activate

Упит би сада требао изгледати (ENV)usuario@host:

Ово ће осигурати да се све што радимо сада чува у директоријуму /var/www/ENV-appname/ без утицаја на системске пакете

Сада прелазимо на директоријум апликације:
cd nombreApp

Настављамо са инсталирањем листе зависности апликација (ако је потребно), у којој су оне наведене у датотеци захтеве.ткт:
pip install -r requirements.txt

Такође можемо појединачно инсталирати пакете, на пример, да бисмо инсталирали конектор постгрескл:
pip install psycopg2

ГУницорн инсталација и конфигурација:

Да бисмо је инсталирали, радимо то на исти начин:
pip install gunicorn

Сада хајде да га конфигуришемо. Да бисмо то урадили, креираћемо датотеку под називом gunicorn-deploy.py у корену наше апликације (мада име може бити било које) са следећим садржајем:

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

Конфигурација супервисорда:

Сада конфигуришимо supervisord ; за то генеришемо конфигурациони фајл са

echo_supervisord_conf > /etc/supervisord.conf

Сада уређујемо конфигурациону датотеку:
vim /etc/supervisord.conf

И ми коментаришемо следеће редове уклањањем; (тацка зарез):

[уник_хттп_сервер] датотека = / тмп / супервисор.соцк [супервисорд] логфиле = / вар / лог / супервисорд.лог логфиле_макбитес = 50 МБ логфиле_бацкупс = 10 логлевел = дебуг пидфиле = / вар / рун / супервисорд.пид нодаемон = фалсе минфдс = 1024 минпроцс = 200 [рпцинтерфаце: супервизор] супервисор.рпцинтерфаце_фацтори = супервисор.рпцинтерфаце: маке_маин_рпцинтерфаце [супервисорцтл] серверурл = уник: [програм: аппнаме] цомманд = / вар / ввв / ЕНВ-аппнаме / бин / дјанго_уницорн -ц / вар / ввв / ЕНВ -Аппнаме / аппнаме / гуницорн-деплои.пи директориј = / вар / ввв / ЕНВ-аппнаме / аппнаме / аутостарт = труе ауторестарт = труе усер = Корисничко име редирецт_стдерр = труе стдоут_логфиле = / вар / ввв / логс / аппнаме / супервисорд.лог

Сада ћемо створити скрипту за надзор да започне са системом, за то ћемо створити датотеку:
vim /etc/init.d/supervisord

И додајемо следећи садржај:

 # Супервисорд ауто-старт # # десцриптион: Ауто-старт супервисорд # процесснаме: супервисорд # пидфиле: /вар/рун/супервисорд.пид СУПЕРВИСОРД = / уср / лоцал / бин / супервисорд СУПЕРВИСОРЦТЛ = / уср / лоцал / бин / супервисорцтл цасе $ 1 у старту) ецхо -н "Старт супервисорд:" $ СУПЕРВИСОРД ецхо ;; стоп) ецхо -н "Заустављање надзора:" $ СУПЕРВИСОРЦТЛ искључивање еха ;; рестарт) ецхо -н "Заустављање надзора:" $ СУПЕРВИСОРЦТЛ схутдовн ецхо ехо -н "Покретање надзора:" $ СУПЕРВИСОРД ецхо ;; да је Ц.

И сада дајемо дозволу за извршавање датотеке како би могла да почне са системом:
sudo chmod +x /etc/init.d/supervisord

Ажурирамо везе за покретање услуге:
sudo update-rc.d supervisord defaults

Услугу започињемо:
sudo /etc/init.d/supervisord start

Подешавање нгинк-а:

Овај корак је такође прилично једноставан; креираћемо следећу nginx конфигурациону датотеку за нашу апликацију:

vim /etc/nginx/sites-enabled/nombreApp

А ми ћемо вам додати следећи садржај

сервер {преслушај 9001; # порт на којем желе да нгинк сервер_наме слуша ввв.домаин.цом; # или 192.168.0.100, адреса којој ћемо приступити аццесс_лог /вар/лог/нгинк/Аппнаме.аццесс.лог; # где ћемо имати локацију евиденције апликација / {# где ће нгинк позвати када приступа ввв.доминио.цом/ проки_пасс хттп://127.0.0.1:8001; проки_сет_хеадер Хост $ хттп_хост; } лоцатион / статиц / {# где ће нгинк приступити када уђемо на ввв.доминио.цом/статиц/ алиас / вар / ввв / ЕНВ-аппнаме / аппнаме / статицфилес /; }}

И поново покрећемо нгинк:
service nginx restart

Подешавање Дјанго-а:

Изменимо дјанго датотеку за конфигурацију:
vim nombreApp/settings.py

Тражимо ред који каже DEBUG = True и мењамо његову вредност , остављајући DEBUG = False

Додамо ДБ параметре:

ДАТАБАСЕ = {'дефаулт': {'ЕНГИНЕ': 'дјанго.дб.бацкендс.постгрескл_псицопг2', # или мискл, или шта већ користе 'НАМЕ': 'ДБНаме', 'УСЕР': 'ДБУсер', 'ПАССВОРД' : 'ДБ пассворд', 'ХОСТ': 'лоцалхост', # или онај који им треба 'ПОРТ': '', # или онај који користе}}

Тражимо ред ALLOWED_HOSTS=[] и додајемо домен или адресу преко које ћемо му приступити, што резултира нечим попут ALLOWED_HOSTS=['www.domain.com']

Конфигуришемо директоријум за статичке датотеке, тражимо ред који каже STATIC_ROOT = ' ' и мењамо вредност постављајући апсолутну путању тамо где желимо да буду наше статичке датотеке, у мом случају сам је оставио мање-више овако STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

Скоро смо завршили, извршавамо следећу команду:
./manage.py collectstatic

Ово ће креирати фасциклу под називом „ statics“ у путањи коју смо навели у settings.py , где ће се налазити све наше статичке датотеке.

И на крају поново покрећемо надзорника да би узео нове промене:
supervisorctl restart nombreApp

И то би било то, на крају није била тако велика ствар, зар не? Чинило ми се једноставно 

Надам се да вам је од користи, поздрав 

ГУницорн документација

Документација супервизора


Додај као жељени извор на Гуглу