A Django alkalmazás telepítése:

Üdvözlök mindenkit, ez az első cikkem a <» DesdeLinux (több közül, ami a piszkozatomban szerepel xD), remélem hasznos lesz számodra 😀

Nos, új és jelenlegi munkámban jelenleg több rendszer migrációja zajlik Django-ba (milyen furcsa eh ?? xD), és a fejlesztésen kívül az egyik feladatom ezek előállítása, mint jó tanonc, mivel először alkalmaztam egy alkalmazást egy valós szerveren termelni: $ elkezdtem elolvasni a verem minden szükséges csomagjának (mindenekelőtt a Gunicorn és a Supervisord) hivatalos dokumentumát, és láttam, hogy a oktatóanyagok spanyolul, ezek számomra bizonyos szempontból nem voltak túl világosak, úgy döntöttem, hogy elkészítek egy mini útmutatót azokkal a lépésekkel, amelyeket az alkalmazás gyártásba helyezéséhez követtem a Django, Gunicorn, Supervisord, Nginx és Postgresql verem alapján.

Abban az esetben, ha dolgozom, a szerverek még mindig a Debian Squeeze-t futtatják, de az útmutatónak teljes mértékben érvényesnek kell lennie más disztribúciókra is ... szóval térjünk rá a lényegre és kezdjük el:

Szuper felhasználóként fogok dolgozni. Először a következő csomagokra van szükség:

PIP -> Eszköz a Python csomagjainak telepítéséhez és kezeléséhez
aptitude install python-pip

nginx -> Webszerver (fordított proxy-ként fogjuk használni, és az 'img, js, css' statikus fájlokat gyorsítótárba helyezzük) A következővel telepítjük:
aptitude install nginx

Felügyelő -> Alkalmazás az alkalmazásunk kezeléséhez és nyomon követéséhez, bár sokkal többre használják. Telepítjük:
aptitude install supervisor

virtualenv -> Ez segít nekünk testreszabott virtuális végrehajtási környezetet létrehozni alkalmazásunk számára. Telepítjük:
aptitude install python-virtualenv

puskaszarvú -> webszerver a python számára (ezt még nem telepítjük)

Feltételezem, hogy már telepíteniük és konfigurálniuk kell a postgresql-t

pszichopg2 -> Postgresql csatlakozó a pythonhoz (mi sem telepítjük még)

Hozzon létre virtuális környezetet a virtualenv segítségével:

Először át fogunk lépni arra a munkakönyvtárra, amelyet a termeléshez fogunk használni:
cd /var/www/

Ekkor ebben a könyvtárban létrehozzuk a virtuális környezetet:
virtualenv ENV-nombreApp

Áthelyezzük a könyvtárba, amelyet most létrehoztam a virtualenv-ben
cd ENV-nombreAPP

Az alkalmazást átmásoljuk ebbe a könyvtárba, és most folytatjuk a környezet aktiválását:
source bin/activate

A parancsnak most úgy kell kinéznie (ENV)usuario@host:

Ez most mindent megtesz, amit csinálunk, a könyvtárban tároljuk / var / www / ENV-appname / anélkül, hogy befolyásolná a rendszercsomagokat

Most az alkalmazás könyvtárba lépünk:
cd nombreApp

Folytatjuk az alkalmazásfüggőségek listájának telepítését (ha szükséges), amelyben megadják őket a fájlban követelmények.txt:
pip install -r requirements.txt

A csomagokat külön-külön is telepíthetjük, például a postgresql:
pip install psycopg2

GUnicorn telepítése és konfigurálása:

Telepítéséhez ugyanúgy tesszük:
pip install gunicorn

Most konfigurálni fogjuk, ehhez létrehozunk egy nevű fájlt gunicorn-deploy.py alkalmazásunk gyökerében (bár a név bármi lehet) a következő tartalommal:

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

Felügyeleti konfiguráció:

Most állítsuk be a felügyelő, ehhez generáljuk a konfigurációs fájlt a

echo_supervisord_conf > /etc/supervisord.conf

Most szerkesztjük a konfigurációs fájlt:
vim /etc/supervisord.conf

És eltávolítjuk a következő sorokat azáltal, hogy eltávolítjuk a; (pontosvessző):

[unix_http_server] file = / tmp / superver.sock [supervord] logfile = / var / log / supervord.log logfile_maxbytes = 50 MB logfile_backups = 10 loglevel = debug pidfile = / var / run / supervord.pid nodaemon = false minfds = 1024 minprocs = 200 [rpcinterface: felügyelő] supervor.rpcinterface_factory = felügyelő.rpcinterface: make_main_rpcinterface [supervorctl] serverurl = unix: [program: alkalmazásnév] parancs = / var / www / ENV-appname / bin / django_unicorn -c / var / www / ENV -appname / appname / gunicorn-deploy.py könyvtár = / var / www / ENV-appname / appname / autostart = true autorestart = true user = felhasználónév redirect_stderr = true stdout_logfile = / var / www / logs / appname / supervord.log

Most létrehozzuk a szkriptet a supervord számára, hogy elinduljon a rendszerrel, ehhez létrehozzuk a fájlt:
vim /etc/init.d/supervisord

És hozzáadjuk a következő tartalmat:

 # Felügyelő automatikus indítása # # leírás: Automatikusan elindítja a felügyeletet # folyamatnév: felügyelő # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervord SUPERVISORCTL = / usr / local / bin / supervorctl eset $ 1 az elején) echo -n "Kezdő felügyelő:" $ SUPERVISORD echo ;; stop) echo -n "Leállítási felügyelő:" $ SUPERVISORCTL kikapcsolási visszhang ;; újraindítás) echo -n "Leállítási felügyelő:" $ SUPERVISORCTL leállítás echo echo -n "Indító felügyelő:" $ SUPERVISORD echo ;; hogy C

És most megadjuk a fájl végrehajtási engedélyeit, hogy a rendszerből indulhasson:
sudo chmod +x /etc/init.d/supervisord

A szolgáltatás elindításához frissítjük a linkeket:
sudo update-rc.d supervisord defaults

Elindítjuk a szolgáltatást:
sudo /etc/init.d/supervisord start

Az nginx beállítása:

Ez a lépés is elég egyszerű, létrehozzuk a következő konfigurációs fájlt nginx alkalmazásunkhoz:

vim /etc/nginx/sites-enabled/nombreApp

És a következő tartalmat adjuk hozzá

szerver {hallgat 9001; # port, ahol azt akarják, hogy az nginx szerver_neve meghallgassa a www.domain.com címet; # vagy 192.168.0.100, az a cím, amelyhez hozzáférni fogunk: access_log /var/log/nginx/Appname.access.log; # ahol meg lesz az alkalmazásnapló helye / {# ahol az nginx felhívni fogja a www.dominio.com/ proxy_pass http://127.0.0.1:8001 elérésekor; proxy_set_header Host $ http_host; } location / static / {# ahová az nginx hozzáférni fog, amikor belépünk a www.dominio.com/static/ alias / var / www / ENV-appname / appname / staticfiles / oldalba; }}

És újraindítjuk a nginx-et:
service nginx restart

Django beállítása:

Módosítsuk a django konfigurációs fájlt:
vim nombreApp/settings.py

Megkeressük azt a sort, amely azt mondja DEBUG = Igaz és megváltoztatjuk az értéket, megmaradt DEBUG = Hamis

Hozzáadjuk a DB paramétereket:

DATABASES = {'alapértelmezett': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # vagy mysql, vagy bármi 'NAME': 'DBName', 'USER': 'DBUser', 'PASSWORD' használja: 'jelszó DB', 'HOST': 'localhost', # vagy az, amelyre szükségük van 'PORT': '', # vagy az általuk használt}}

Megkeressük a sort ALLOWED_HOSTS = [] és hozzáadjuk azt a domaint vagy címet, amelyen keresztül hozzáférünk, valami hasonlót hagyva ALLOWED_HOSTS = ['www.domain.com']

Konfiguráljuk a statikus fájlok könyvtárát, megkeressük a mondatot STATIC_ROOT = ' ' és megváltoztatjuk az értéket, az abszolút elérési utat oda helyezzük, ahova a statikus fájljaink szeretnénk STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

Majdnem kész, végrehajtjuk a következő parancsot:
./manage.py collectstatic

Ez létrehoz egy mappát a következő névvel:statika azon az útvonalon, amelyet a beállítások.py ", ott lesz az összes statikus fájlunk.

És végül újraindítjuk a felügyeletet az új változtatások végrehajtása érdekében:
supervisorctl restart nombreApp

És ez minden lenne, végül nem volt annyira igaz? nekem egyszerűnek tűnt 😀

Remélem, hasznos lesz neked, üdvözlet ings

GUnicorn dokumentáció

Felügyeleti dokumentáció


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   f3niX dijo

    Megértem, hogy a Django alkalmazást nem szabad a webkiszolgáló mappa gyökerébe (/ var / www) tenni? A biztonság kedvéért nem tudom, hogy tévedek-e.

    Üdvözlet.

    1.    urKh dijo

      Rendben !!! Olyan volt, amiről teljesen nem tudtam, frissítem a bejegyzést 😛, és amint hétfőn visszatérek, változtatásokat fogok végezni az xD alkalmazásban
      Köszönöm

  2.   Rodrigo Bravo (goidor) dijo

    Epale testvér jó bemutató. Nemrégiben ugyanabban voltam, de a Debian 7-ben, többé-kevésbé keresni és olvasni kellett. Javaslom, hogy hozzon létre egy virtuális virtuális környezetet a felhasználó otthonában egy rejtett mappában.

    Üdvözlet!

  3.   szerv fenriz dijo

    hahaha ctm tegnap dokumentálom Djangót, és máris végigmész a 999999 galaxison.

  4.   Daniel2ac dijo

    Nagyon jó cikk =) csak egy hete telepítettem a django alkalmazást, de uwsgi-val és nginx-szel csináltam, tudod, milyen előnye van a fegyveresnek? Sokat láttam említeni.
    Örülök, hogy a django nagyon népszerűvé válik, az igazság a legjobb keret, amit láttam =)

  5.   ozkar dijo

    A STATIC_ROOT számára megadok egy globális változót. Valami ilyesmi:

    import os
    PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
    STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')

    Ahol a háttérprogram egy olyan alkalmazás, amelyet én hoztam létre. Tehát gondoskodom arról, hogy ahol a projektet telepítem, a globális út ugyanaz legyen.

  6.   sgmart dijo

    Érdekes, a jövőben megpróbálom.

    Egyébként valaki tudja, hogyan lehet engedélyezni az ékezetes és nem ascii karaktereket egy django alkalmazásban?

    Bárhová néztem, a következő módszerek egyike sem működik számomra:
    sys.setdefaultencoding ('utf-8') # a sites.py fájlban

    # - * - kódolás: utf-8 - * - # minden python fájlban

    A site.py szerkesztése és az utf-8 elhelyezése az ascii helyett állítólag működik, de a $ file models.py arról tájékoztat, hogy a fájlom továbbra is ascii.

    Valami javaslat?

    1.    sgmart dijo

      Működött!!!!

  7.   anime 230 dijo

    nagyon jó oktatóanyag, de meg tudná csinálni, hogy hogyan tölthetem fel az alkalmazásomat egy már gyártott webszerverre
    gracias