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