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