Jak nasadit aplikaci Django:

Co takhle pozdravit všechny, toto je můj první článek v <» FromLinux (z několika, které mám ve svých konceptech xD), doufám, že pro vás bude užitečný 

No, v mém novém a současném zaměstnání v tuto chvíli probíhá migrace několika systémů na Django (jak divné, eh ?? xD) a jedním z mých úkolů, kromě vývoje, je zavádění do výroby, tak jak dobrý učeň, protože to bylo poprvé, co jsem uvedl aplikaci do výroby na reálném serveru: $ Začal jsem číst oficiální dokument každého z požadovaných balíčků zásobníku (Gunicorn a Supervisord ze všeho nejvíc) a viděl jsem, že výukové programy Ve španělštině mi v některých aspektech nebyli příliš jasní, rozhodl jsem se vytvořit mini průvodce s kroky, kterými jsem postupoval při uvedení aplikace do výroby, založený na zásobníku Django, Gunicorn, Supervisord, Nginx a Postgresql.

V případě, že pracuji, na serverech stále běží Debian Squeeze, ale průvodce by měl být plně platný pro jiné distribuce ... pojďme tedy rovnou k věci a začněme:

Budu pracovat jako super uživatel. Nejprve jsou vyžadovány následující balíčky:

PIP -> Nástroj pro instalaci a správu balíčků pro Python
aptitude install python-pip

Nginx -> Webový server (použijeme jej jako reverzní proxy a do mezipaměti statických souborů 'img, js, css') Instalujeme jej pomocí:
aptitude install nginx

Supervisord -> Aplikace pro správu a sledování naší aplikace, i když se používá mnohem více. Instalujeme jej pomocí:
aptitude install supervisor

virtualenv -> Pomáhá nám vytvořit přizpůsobené prostředí virtuálního spuštění pro naši aplikaci. Instalujeme jej pomocí:
aptitude install python-virtualenv

Gunicorn -> Webový server pro Python (tento zatím nebudeme instalovat)

Předpokládám, že by již měli mít nainstalovaný a nakonfigurovaný postgresql

psycopg2 -> PostgreSQL konektor pro Python (zatím ho také nebudeme instalovat)

Vytvořte virtuální prostředí pomocí virtualenv:

Nejprve se přesuneme do pracovního adresáře, který použijeme pro uvedení do výroby:
cd /var/www/

Pak v tomto adresáři vytvoříme virtuální prostředí:
virtualenv ENV-nombreApp

Přesunuli jsme se do adresáře, který jsem právě vytvořil virtualenv
cd ENV-nombreAPP

Zkopírujeme aplikaci do tohoto adresáře a nyní pokračujeme v aktivaci prostředí pomocí:
source bin/activate

Výzva by nyní měla vypadat (ENV)usuario@host:

Tím se zajistí, že vše, co děláme, bude nyní uloženo v adresáři /var/www/ENV-appname/ bez ovlivnění systémových balíčků.

Nyní se přesuneme do adresáře aplikace:
cd nombreApp

Pokračujeme v instalaci seznamu závislostí aplikace (je-li to nutné), ve kterém jsou uvedeny v souboru požadavky.txt:
pip install -r requirements.txt

Můžeme také nainstalovat balíčky jednotlivě, například k instalaci konektoru postgresql:
pip install psycopg2

Instalace a konfigurace GUnicorn:

Chcete-li jej nainstalovat, uděláme to stejným způsobem:
pip install gunicorn

Nyní to nakonfigurujeme. Abychom to udělali, vytvoříme soubor s názvem gunicorn-deploy.py v kořenovém adresáři naší aplikace (název může být libovolný) s následujícím obsahem:

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

Konfigurace supervizoru:

Nyní nakonfigurujme supervisord ; k tomu vygenerujeme konfigurační soubor s

echo_supervisord_conf > /etc/supervisord.conf

Nyní upravíme konfigurační soubor:
vim /etc/supervisord.conf

Následující řádky odkomentujeme odstraněním; (středník):

[unix_http_server] file = / tmp / supervisor.sock [supervisord] logfile = / var / log / supervisord.log logfile_maxbytes = 50 MB logfile_backups = 10 loglevel = debug pidfile = / var / run / supervisord.pid nodaemon = false minfds = 1024 minprocs = 200 [rpcinterface: supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface: make_main_rpcinterface [supervisorctl] serverurl = unix: [program: appname] command = / var / www / ENV-appname / bin / django_unicorn -c / var / www / ENV -Appname / appname / gunicorn-deploy.py adresář = / var / www / ENV-appname / appname / autostart = true autorestart = true user = username redirect_stderr = true stdout_logfile = / var / www / logs / appname / supervisord.log

Nyní vytvoříme skript pro supervizor, který má začít se systémem, pro který vytvoříme soubor:
vim /etc/init.d/supervisord

A přidáme následující obsah:

 # Supervisord auto-start # # description: Auto-runs supervisord # processname: supervisord # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervisord SUPERVISORCTL = / usr / local / bin / supervisorctl případ $ 1 na začátku) echo -n "Počáteční dohled:" $ SUPERVISORD echo ;; stop) echo -n "Stopping supervisord:" $ SUPERVISORCTL shutdown echo ;; restart) echo -n "Zastavení supervizoru:" $ SUPERVISORCTL vypnutí echo echo -n "Spuštění supervizoru:" $ SUPERVISORD echo ;; že C.

A teď dáváme souboru oprávnění ke spuštění, aby mohl začít se systémem:
sudo chmod +x /etc/init.d/supervisord

Aktualizujeme odkazy pro spuštění služby:
sudo update-rc.d supervisord defaults

Spouštíme službu:
sudo /etc/init.d/supervisord start

Nastavení nginx:

Tento krok je také docela jednoduchý; pro naši aplikaci vytvoříme následující konfigurační soubor nginx :

vim /etc/nginx/sites-enabled/nombreApp

A přidáme vám následující obsah

server {poslouchat 9001; # port, kde chtějí, aby nginx poslouchal název_serveru www.domain.com; # nebo 192.168.0.100, adresa, na kterou budeme mít přístup access_log /var/log/nginx/Appname.access.log; # kde budeme mít umístění protokolu aplikace / {# kde nginx zavolá při přístupu na www.dominio.com/ proxy_pass http://127.0.0.1:8001; proxy_set_header Host $ http_host; } umístění / static / {#, kde bude nginx přistupovat, když zadáme www.dominio.com/static/ alias / var / www / ENV-appname / appname / staticfiles /; }}

A restartujeme nginx:
service nginx restart

Nastavení Django:

Pojďme upravit konfigurační soubor django:
vim nombreApp/settings.py

Hledáme řádek s hodnotou DEBUG = True a změníme jeho hodnotu na DEBUG = False.

Přidáme parametry DB:

DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # nebo mysql, nebo cokoli jiného používají 'NAME': 'DBName', 'USER': 'DBUser', 'HESLO' : 'password DB', 'HOST': 'localhost', # or the one they need 'PORT': '', # or the one they are using}}

Hledáme řádek ALLOWED_HOSTS=[] a přidáme doménu nebo adresu, přes kterou k němu budeme přistupovat, což vede k něčemu jako ALLOWED_HOSTS=['www.domain.com']

Nakonfigurujeme adresář pro statické soubory, hledáme řádek, který říká STATIC_ROOT = ' ' a změníme hodnotu tak, že umístíme absolutní cestu tam, kde chceme, aby byly naše statické soubory, v mém případě jsem to nechal víceméně takto STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

Téměř hotovo, provedeme následující příkaz:
./manage.py collectstatic

Tím se v cestě, kterou jsme zadali v souboru settings.py , vytvoří složka s názvem „ statics“ , kde budou umístěny všechny naše statické soubory.

A nakonec restartujeme supervizora, abychom provedli nové změny:
supervisorctl restart nombreApp

A to by bylo vše, nakonec to nebyl tak velký problém, že? Přišlo mi to jednoduché 

Doufám, že je to pro vás užitečné, zdravím vás 

Dokumentace GUnicorn

Dokumentace dohledu


Přidat jako preferovaný zdroj v Googlu