Ü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
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.
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
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!
hahaha ctm tegnap dokumentálom Djangót, és máris végigmész a 999999 galaxison.
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 =)
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.
É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?
Működött!!!!
nagyon jó oktatóanyag, de meg tudná csinálni, hogy hogyan tölthetem fel az alkalmazásomat egy már gyártott webszerverre
gracias