Шта кажете на поздрав свима, ово је мој први чланак у <» DesdeLinux (de varios que tengo en mis borradores xD), espero les sea de utilidad 😀
Па, на мом новом и тренутном послу, тренутно се врши миграција неколико система на Дјанго (колико је чудно, а? КСД) и један од мојих задатака, осим развоја, је стављање у производњу ових, затим као добар шегрт, пошто сам први пут пустио апликацију у продукцију на правом серверу: $ Почео сам да читам званични документ сваког од потребних пакета стека (Гуницорн и Супервисорд највише), и видећи да туторијали На шпанском нису ми били превише јасни у неким аспектима, одлучио сам да створим мини водич са корацима које сам следио за пуштање апликације у производњу, заснован на стеку Дјанго, Гуницорн, Супервисорд, Нгинк и Постгрескл.
У случају када радим, сервери и даље раде на Дебиан Скуеезе-у, али водич би требао бити потпуно важећи за друге дистрибуције ... па кренимо одмах на ствар и кренимо:
Радићу као супер корисник. Пре свега, потребни су следећи пакети:
ПИП -> Алат за инсталирање и управљање пакетима за Питхон
aptitude install python-pip
Нгинк -> Веб сервер (користићемо га као обрнути прокси и за кеширање статичких датотека 'имг, јс, цсс') Инсталирамо га са:
aptitude install nginx
Надзорник -> Апликација за управљање и надгледање наше апликације, мада се користи за много више. Инсталирамо га са:
aptitude install supervisor
Виртуаленв -> Помаже нам у стварању прилагођеног виртуелног окружења за извршавање наше апликације. Инсталирамо га са:
aptitude install python-virtualenv
Гуницорн -> веб сервер за питхон (ово још нећемо инсталирати)
Претпостављам да би већ требало да имају инсталиран и конфигурисан постгрескл
псицопг2 -> Постгрескл конектор за питхон (нећемо га још ни инсталирати)
Створите виртуелно окружење помоћу виртуаленв:
Прво ћемо прећи на радни директоријум који ћемо користити за пуштање у производњу:
cd /var/www/
Тада ћемо у овом директоријуму створити виртуелно окружење:
virtualenv ENV-nombreApp
Прелазимо у директоријум који сам управо креирао виртуаленв
cd ENV-nombreAPP
Копирамо апликацију у овај директоријум и сада настављамо да активирамо окружење помоћу:
source bin/activate
Упит би сада требао изгледати (ENV)usuario@host:
Ово ће сада учинити да све што радимо буде смештено у директоријум / вар / ввв / ЕНВ-аппнаме / без утицаја на системске пакете
Сада прелазимо на директоријум апликације:
cd nombreApp
Настављамо са инсталирањем листе зависности апликација (ако је потребно), у којој су оне наведене у датотеци захтеве.ткт:
pip install -r requirements.txt
Такође можемо појединачно инсталирати пакете, на пример, да бисмо инсталирали конектор постгрескл:
pip install psycopg2
ГУницорн инсталација и конфигурација:
Да бисмо је инсталирали, радимо то на исти начин:
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
И ми коментаришемо следеће редове уклањањем; (тацка зарез):
[уник_хттп_сервер] датотека = / тмп / супервисор.соцк [супервисорд] логфиле = / вар / лог / супервисорд.лог логфиле_макбитес = 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
Подешавање нгинк-а:
Овај корак је такође прилично једноставан, створићемо следећу конфигурациону датотеку од Апацхе за нашу апликацију:
vim /etc/nginx/sites-enabled/nombreApp
А ми ћемо вам додати следећи садржај
сервер {преслушај 9001; # порт на којем желе да нгинк сервер_наме слуша ввв.домаин.цом; # или 192.168.0.100, адреса којој ћемо приступити аццесс_лог /вар/лог/нгинк/Аппнаме.аццесс.лог; # где ћемо имати локацију евиденције апликација / {# где ће нгинк позвати када приступа ввв.доминио.цом/ проки_пасс хттп://127.0.0.1:8001; проки_сет_хеадер Хост $ хттп_хост; } лоцатион / статиц / {# где ће нгинк приступити када уђемо на ввв.доминио.цом/статиц/ алиас / вар / ввв / ЕНВ-аппнаме / аппнаме / статицфилес /; }}
И поново покрећемо нгинк:
service nginx restart
Подешавање Дјанго-а:
Изменимо дјанго датотеку за конфигурацију:
vim nombreApp/settings.py
Тражимо линију која каже ДЕБУГ = Тачно а ми мењамо вредност, преостало ДЕБУГ = Нетачно
Додамо ДБ параметре:
ДАТАБАСЕ = {'дефаулт': {'ЕНГИНЕ': 'дјанго.дб.бацкендс.постгрескл_псицопг2', # или мискл, или шта већ користе 'НАМЕ': 'ДБНаме', 'УСЕР': 'ДБУсер', 'ПАССВОРД' : 'ДБ пассворд', 'ХОСТ': 'лоцалхост', # или онај који им треба 'ПОРТ': '', # или онај који користе}}
Тражимо линију АЛЛОВЕД_ХОСТС = [] и додамо домен или адресу преко које ћемо приступити, остављајући нешто попут АЛЛОВЕД_ХОСТС = ['ввв.домаин.цом']
Конфигуришемо директоријум за статичке датотеке, тражимо ред који каже STATIC_ROOT = ' '
и мењамо вредност постављајући апсолутну путању тамо где желимо да буду наше статичке датотеке, у мом случају сам је оставио мање-више овако STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'
Скоро смо завршили, извршавамо следећу команду:
./manage.py collectstatic
Ово ће створити директоријум са именом 'статика на путу који смо навели у сеттингс.пи ', ту ће бити све наше статичке датотеке.
И на крају поново покрећемо надзорника да би узео нове промене:
supervisorctl restart nombreApp
И то би било све, на крају то није било толико тачно? чинило ми се једноставно 😀
Надам се да ће вам бити од користи, поздрав 😉
Разумем да апликација Дјанго не би требало да се налази у корену фасцикле веб сервера (/ вар / ввв)? Због сигурности не знам да ли грешим.
Поздрав.
У реду !!! Било је то нешто чега нисам био потпуно свестан, ажурираћу унос 😛 и чим се вратим у понедељак извршићу измене у кД апликацији
хвала
Епале брат добар туториал. Такође сам недавно био у истој ствари, али у Дебиану 7 сам морао мање-више да претражујем и читам. Препоручујем вам да креирате виртуелно окружење виртуаленв у корисниковом дому у скривеној фасцикли.
Поздрав!
хахаха цтм јуче сам документовао Дјанго и већ пролазите кроз галаксију 999999 Поздрав мушкарци кД
Врло добар чланак =) пре само недељу дана применио сам своју дјанго апликацију, али урадио сам је са увсги и нгинк, да ли знате какву предност има гуницорн? Видео сам да се много спомиње.
Лепо је видети да дјанго постаје веома популаран, истина је најбољи оквир који сам видео =)
За СТАТИЦ_РООТ оно што радим је дефинисање глобалне променљиве. Овако нешто:
import os
PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')
Где је позадина апликација коју сам креирао. Тако да се уверавам да је тамо где примењујем пројекат глобални пут исти.
Занимљиво, покушаћу у будућности.
Иначе, да ли неко зна како да омогући акценте и не-асции знакове у дјанго апликацији?
Гледао сам свуда, ниједна од следећих метода ми не одговара:
сис.сетдефаултенцодинг ('утф-8') # у ситес.пи
# - * - кодирање: утф-8 - * - # у свакој питхон датотеци
Уређивање сите.пи и стављање утф-8 уместо асции требало би да функционише, али $ филе моделс.пи ме обавештава да је моја датотека и даље асции.
Неки предлог?
Успело је!!!!
врло добар водич, али могли бисте да направите један од начина за постављање моје апликације на веб сервер који је већ у фази израде
хвала