Django-sovelluksen käyttöönotto:

Entä terveisiä kaikille, tämä on ensimmäinen artikkelini <» FromLinuxissa (useista luonnoksissani olevista xD), toivottavasti siitä on sinulle hyötyä 

No, uudessa ja nykyisessä työssäni tällä hetkellä suoritetaan useiden järjestelmien siirtyminen Djangoon (kuinka outoa eh ?? xD) ja yksi tehtäväni, paitsi kehitys, on näiden asettaminen tuotantoon, joten kuinka hyvä oppipoika, koska olin ensimmäinen kerta, kun laitin sovelluksen tuotantoon todelliselle palvelimelle: $ aloin lukea jokaisen vaadittavan pinon paketin (Gunicorn ja Supervisord enemmän kuin kaikki) virallista asiakirjaa ja nähdä, että opetusohjelmat Espanjan kielellä ne eivät olleet minulle kovin selkeitä joistakin näkökohdista. Päätin luoda pienen oppaan vaiheilla, joita seurasin sovelluksen tuotantoon, Django-, Gunicorn-, Supervisord-, Nginx- ja Postgresql-pinoihin perustuen.

Jos työskentelen, palvelimet käyttävät edelleen Debian Squeeze -ohjelmaa, mutta oppaan tulisi olla täysin voimassa muille jakeluille ... joten aloitetaan suoraan asiaan ja aloitetaan:

Työskentelen superkäyttäjänä. Ensinnäkin vaaditaan seuraavat paketit:

PIP -> Työkalu Pythonin pakettien asentamiseen ja hallintaan
aptitude install python-pip

nginx -> Verkkopalvelin (käytämme sitä käänteisenä välityspalvelimena ja välimuistiin staattiset tiedostot 'img, js, css') Asennamme sen:
aptitude install nginx

Supervisord -> Sovellus sovelluksemme hallintaan ja seurantaan, vaikka sitä käytetään paljon enemmän. Asennamme sen seuraavilla tavoilla:
aptitude install supervisor

virtualenv -> Se auttaa meitä luomaan räätälöidyn virtuaalisen suoritusympäristön sovelluksellemme. Asennamme sen seuraavilla tavoilla:
aptitude install python-virtualenv

Gunicorn -> Pythonille tarkoitettu web-palvelin (emme asenna tätä vielä)

Oletan, että postgresql: n pitäisi olla jo asennettu ja määritetty

psycopg2 -> PostgreSQL-liitin Pythonille (emme aio asentaa sitäkään vielä)

Luo virtuaaliympäristö virtualenv: n avulla:

Ensin aiomme siirtyä työhakemistoon, jota käytämme tuotannon aloittamiseen:
cd /var/www/

Sitten tässä hakemistossa luomme virtuaalisen ympäristön:
virtualenv ENV-nombreApp

Siirtymme hakemistoon, jonka juuri luin virtualenv
cd ENV-nombreAPP

Kopioimme sovelluksen tähän hakemistoon ja aktivoimme nyt ympäristön seuraavasti:
source bin/activate

Kehotteen pitäisi nyt näyttää (ENV)usuario@host:

Tämä varmistaa, että kaikki tekemämme tallennetaan nyt /var/www/ENV-appname/ -hakemistoon vaikuttamatta järjestelmäpaketteihin.

Nyt siirrymme sovellushakemistoon:
cd nombreApp

Asennamme luettelon sovellusriippuvuuksista (tarvittaessa), joissa ne on määritelty tiedostossa requirements.txt:
pip install -r requirements.txt

Voimme myös asentaa paketteja yksitellen esimerkiksi liittimen asentamiseksi PostgreSQL:
pip install psycopg2

GUnicornin asennus ja konfigurointi:

Asentaaksemme sen teemme samalla tavalla:
pip install gunicorn

Seuraavaksi konfiguroidaan se. Tätä varten luomme sovelluksemme juureen tiedoston nimeltä gunicorn-deploy.py (nimi voi olla mikä tahansa) seuraavalla sisällöllä:

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

Esimiehen kokoonpano:

Konfiguroidaan nyt supervisord ; sitä varten luomme konfiguraatiotiedoston, jossa on

echo_supervisord_conf > /etc/supervisord.conf

Nyt muokkaamme kokoonpanotiedostoa:
vim /etc/supervisord.conf

Ja me kommentoimme seuraavia rivejä poistamalla; (puolipiste):

[unix_http_server] tiedosto = / tmp / supervisor.sock [valvoja] logitiedosto = / var / log / supervord.log lokitiedosto_maxtavua = 50 Mt logfile_backups = 10 logitaso = debug pidfile = / var / run / supervord.pid nodaemon = false minfds = 1024 minprocs = 200 [rpcinterface: valvoja] valvoja.rpcinterface_factory = valvoja.rpcinterface: make_main_rpcinterface [supervorctl] serverurl = unix: [ohjelma: sovelluksen nimi] komento = / var / www / ENV-sovelluksen nimi / bin / django_unicorn -c / var / www / ENV -Appname / appname / gunicorn-deploy.py hakemisto = / var / www / ENV-appname / appname / autostart = true autorestart = true user = Käyttäjätunnus redirect_stderr = true stdout_logfile = / var / www / lokit / sovelluksen nimi / supervord.log

Nyt luomme komentosarjan supervordille järjestelmän aloittamiseksi, sitä varten luomme tiedoston:
vim /etc/init.d/supervisord

Ja lisäämme seuraavan sisällön:

 # Valvojan automaattinen käynnistys # # kuvaus: Käynnistää automaattisesti valvojan # prosessin nimi: valvoja # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervord SUPERVISORCTL = / usr / local / bin / supervorctl tapaus $ 1 alussa) echo -n "Aloitusvalvoja:" $ SUPERVISORD kaiku ;; stop) echo -n "Pysäytysvalvoja:" $ SUPERVISORCTL sammutuskaiku ;; uudelleenkäynnistys) echo -n "Pysäyttävä valvoja:" $ SUPERVISORCTL shutdown echo echo -n "Käynnistävä valvoja:" $ SUPERVISORD echo ;; että C

Ja nyt annamme tiedostolle suoritusoikeudet, jotta se voi aloittaa järjestelmästä:
sudo chmod +x /etc/init.d/supervisord

Päivitämme linkit palvelun käynnistämiseksi:
sudo update-rc.d supervisord defaults

Aloitamme palvelun:
sudo /etc/init.d/supervisord start

Nginxin asettaminen:

Tämä vaihe on myös melko yksinkertainen; luomme seuraavan nginx- määritystiedoston sovelluksellemme:

vim /etc/nginx/sites-enabled/nombreApp

Ja me lisäämme sinulle seuraavan sisällön

palvelin {kuuntele 9001; # portti, jossa he haluavat nginxin kuuntelevan palvelimen_nimi www.domain.com; # tai 192.168.0.100, osoite, johon pääsemme access_log /var/log/nginx/Appname.access.log; # missä meillä on sovelluslokin sijainti / {# mihin nginx soittaa, kun hän käyttää osoitetta www.dominio.com/proxy_pass http://127.0.0.1:8001; proxy_set_header Isäntä $ http_host; } sijainti / staattinen / {# mihin nginx pääsee, kun kirjoitamme www.dominio.com/static/ alias / var / www / ENV-sovelluksen nimi / sovelluksen nimi / staticfiles /; }}

Ja käynnistämme nginxin uudelleen:
service nginx restart

Djangon asettaminen:

Muutetaan django-määritystiedostoa:
vim nombreApp/settings.py

Etsimme rivin, jossa lukee DEBUG = True , ja muutamme sen arvon , jolloin DEBUG = False muuttuu.

Lisätään DB-parametrit:

DATABASES = {'oletus': {'MOOTTORI': 'django.db.backends.postgresql_psycopg2', # tai mysql tai mitä tahansa he käyttävät 'NAME': 'DBName', 'USER': 'DBUser', 'SALASANA' : 'password DB', 'HOST': 'localhost', # tai tarvitsemansa 'PORT': '', # tai käyttämäsi}}

Etsimme rivin ALLOWED_HOSTS=[] ja lisäämme verkkotunnuksen tai osoitteen, jonka kautta käytämme sitä, jolloin tuloksena on jotain tällaista: ALLOWED_HOSTS=['www.domain.com']

Määritämme hakemiston staattisille tiedostoille, etsimme riviä, joka sanoo STATIC_ROOT = ' ' ja muutamme arvoa sijoittamalla absoluuttisen polun sinne, missä haluamme staattisten tiedostojemme olevan, tapauksessani jätin sen suunnilleen tälle STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

Lähes valmis, suoritamme seuraavan komennon:
./manage.py collectstatic

Tämä luo kansion nimeltä ' statics' tiedostossa settings.py määrittämäämme polkuun . Tämä on kansio, jonne kaikki staattiset tiedostomme tulevat.

Ja lopuksi käynnistämme esimiehen uudelleen ottamaan uudet muutokset:
supervisorctl restart nombreApp

Ja siinä se olisi, eihän se lopulta niin iso juttu ollut, eihän? Minusta se vaikutti yksinkertaiselta 

Toivottavasti siitä on sinulle hyötyä, tervehdys 

GUnicornin dokumentaatio

Valvojan dokumentaatio


Lisää ensisijaiseksi lähteeksi Googlessa