Üdvözlök mindenkit, ez az első cikkem a <» FromLinuxban (több közül, ami a piszkozataimban 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
Gunicorn -> Webszerver Pythonhoz (ezt még nem fogjuk telepíteni)
Feltételezem, hogy már telepíteniük és konfigurálniuk kell a postgresql-t
psycopg2 -> PostgreSQL csatlakozó Pythonhoz (ezt sem fogjuk még telepíteni)
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 biztosítja, hogy minden, amit csinálunk, a /var/www/ENV-appname/ könyvtárban tárolódjon anélkül, hogy ez 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 pedig konfiguráljuk. Ehhez létrehozunk egy gunicorn-deploy.py nevű fájlt az 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 konfiguráljuk a supervisord-t ; ehhez létrehozzuk a konfigurációs fájlt a következővel:
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 meglehetősen egyszerű; a következő nginx konfigurációs fájlt fogjuk létrehozni az 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 a DEBUG = True sort , és megváltoztatjuk az értékét , így DEBUG = False marad.
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 az ALLOWED_HOSTS=[] sort , és hozzáadjuk a domaint vagy címet, amelyen keresztül el fogjuk érni, ami valami ilyesmit eredményez, mint 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 „ statics” nevű mappát a settings.py fájlban megadott elérési úton , amely az összes statikus fájlunk helyet fogja találni.
És végül újraindítjuk a felügyeletet az új változtatások végrehajtása érdekében:
supervisorctl restart nombreApp
És ez lenne az, végül nem volt olyan nagy baj, igaz? Nekem egyszerűnek tűnt
Remélem hasznos lesz számodra, üdv