Sveikinimai visiems, tai mano pirmasis straipsnis <» FromLinux (iš kelių, kuriuos turiu juodraščiuose xD), tikiuosi, kad jis jums bus naudingas
Na, mano naujame ir dabartiniame darbe šiuo metu vyksta kelių sistemų perkėlimas į Django (kaip keista, oi xD) ir viena iš mano užduočių, išskyrus plėtrą, yra šių gamyba, kaip geras mokinys, nes tai buvo mano pirmas kartas, kai programėlę pradėjau gaminti realiame serveryje: vadovėliai ispanų kalba kai kuriais aspektais nebuvo labai aiškūs, aš nusprendžiau sukurti mini vadovą su veiksmais, kuriuos atlikau įdėdamas programą į gamybą, remiantis „Django“, „Gunicorn“, „Supervisord“, „Nginx“ ir „Postgresql“ kaminu.
Tuo atveju, kai aš dirbu, serveriuose vis dar veikia „Debian Squeeze“, tačiau vadovas turėtų būti visiškai tinkamas kitiems paskirstymams ... taigi eikime tiesiai į tašką ir pradėkime:
Dirbsiu kaip super vartotojas. Visų pirma reikalingi šie paketai:
PIP -> Įrankis, skirtas įdiegti ir valdyti „Python“ paketus
aptitude install python-pip
nginx -> Žiniatinklio serveris (naudosime jį kaip atvirkštinį tarpinį serverį ir talpindami statinius failus „img, js, css“). Mes jį įdiegiame:
aptitude install nginx
Vadovas -> Programa, skirta valdyti ir stebėti mūsų programą, nors ji naudojama kur kas daugiau. Mes ją įdiegiame:
aptitude install supervisor
virtualenv -> Tai padeda mums sukurti pritaikytą virtualaus vykdymo aplinką mūsų programai. Mes ją įdiegiame:
aptitude install python-virtualenv
Ginklo ragas -> žiniatinklio serveris „Python“ (mes to dar neįdiegsime)
Manau, kad jie jau turėtų būti įdiegę ir sukonfigūravę postgresql
psichopg2 -> „Python“ „Postgresql“ jungtis (jos taip pat dar neįdiegsime)
Sukurkite virtualią aplinką naudodami „virtualenv“:
Pirmiausia pereisime prie darbinio katalogo, kurį naudosime įdėdami į gamybą:
cd /var/www/
Tada šiame kataloge sukursime virtualią aplinką:
virtualenv ENV-nombreApp
Pereiname į katalogą, kurį ką tik sukūriau virtualenv
cd ENV-nombreAPP
Mes nukopijuojame programą į šį katalogą ir dabar aktyvuojame aplinką:
source bin/activate
Dabar raginimas turėtų atrodyti (ENV)usuario@host:
Dabar viskas, ką darome, bus išsaugota kataloge / var / www / ENV-appname / nedarant įtakos sistemos paketams
Dabar mes pereiname į programų katalogą:
cd nombreApp
Mes pradedame diegti programų priklausomybių sąrašą (jei reikia), kuriame jie nurodyti faile reikalavimai.txt:
pip install -r requirements.txt
Mes taip pat galime įdiegti paketus atskirai, pavyzdžiui, norėdami įdiegti jungtį postgresql:
pip install psycopg2
„GUnicorn“ diegimas ir konfigūravimas:
Norėdami jį įdiegti, tai darome taip pat:
pip install gunicorn
Dabar mes jį sukonfigūruosime, tam sukursime failą, vadinamą gunicorn-deploy.py mūsų programos šaknyje (nors vardas gali būti bet koks) su tokiu turiniu:
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
Prižiūrėtojo konfigūracija:
Dabar nustatykime vadovas, tam mes generuojame konfigūracijos failą su
echo_supervisord_conf > /etc/supervisord.conf
Dabar mes redaguojame konfigūracijos failą:
vim /etc/supervisord.conf
Mes pašaliname šias eilutes pašalindami; (kabliataškis):
[unix_http_server] failas = / tmp / supervizorius.kojinė [prižiūrėtojas] logfile = / var / log / supervord.log logfile_maxbytes = 50 MB logfile_backups = 10 loglevel = derinti pidfile = / var / run / supervord.pid nodaemon = false minfds = 1024 minprocs = 200 [rpcinterface: supervizorius] supervizorius.rpcinterface_factory = prižiūrėtojas.rpcinterface: make_main_rpcinterface [supervorctl] serverurl = unix: [programa: programos pavadinimas] komanda = / var / www / ENV-appname / bin / django_unicorn -c / var / www / ENV -Appname / appname / gunicorn-deploy.py directory = / var / www / ENV-appname / appname / autostart = true autorestart = true user = Vartotojo vardas redirect_stderr = true stdout_logfile = / var / www / logs / appname / supervord.log
Dabar sukursime scenarijų, kurį „supervord“ pradės nuo sistemos, tam sukursime failą:
vim /etc/init.d/supervisord
Pridedame šį turinį:
# Prižiūrėtojo automatinis paleidimas # # aprašymas: Automatiškai paleidžiami prižiūrėtojai # proceso pavadinimas: prižiūrėtojas # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervizorius SUPERVISORCTL = / usr / local / bin / supervorctl atvejis $ 1 pradžioje) echo -n "Pradinis vadovas:" $ SUPERVISORD echo ;; stop) echo -n "Sustabdomas prižiūrėtojas:" $ SUPERVISORCTL išjungimo aidas ;; paleisti iš naujo) echo -n "Stabdomas prižiūrėtojas:" $ SUPERVISORCTL išjungimo echo echo -n "Pradinis vadovas:" $ SUPERVISORD echo ;; kad C
Dabar failui suteikiame vykdyti leidimus, kad jis galėtų prasidėti nuo sistemos:
sudo chmod +x /etc/init.d/supervisord
Atnaujiname nuorodas, kad pradėtumėte paslaugą:
sudo update-rc.d supervisord defaults
Mes pradedame paslaugą:
sudo /etc/init.d/supervisord start
Nginx nustatymas:
Šis žingsnis taip pat yra gana paprastas, sukursime šį konfigūracijos failą nginx mūsų paraiškai:
vim /etc/nginx/sites-enabled/nombreApp
Ir mes jums pridėsime šį turinį
serveris {klausyti 9001; # prievadas, kuriame jie nori, kad „nginx“ klausytų serverio_vardas www.domain.com; # arba 192.168.0.100, adresas, kurį pasieksime access_log /var/log/nginx/Appname.access.log; # kur turėsime programos žurnalo vietą / {# kur „nginx“ skambins, kai pasieksite www.dominio.com/ proxy_pass http://127.0.0.1:8001; proxy_set_header Priimančioji $ http_host; } vieta / statinė / {# kur „nginx“ pasieks, kai įvesime www.domain.com/static/pseudomenė/var / www / ENV-appname / appname / staticfiles /; }}
Ir mes iš naujo paleidžiame „nginx“:
service nginx restart
Django nustatymas:
Pakeiskime „django“ konfigūracijos failą:
vim nombreApp/settings.py
Mes ieškome eilutės, kuri sako DEBUG = Tiesa ir mes keičiame vertę, likęs DEBUG = klaidingas
Pridedame DB parametrus:
DUOMENŲ BAZĖS = {'numatytasis': {'VARIKLIS': 'django.db.backends.postgresql_psycopg2', # arba mysql ar bet koks 'NAME': 'DBName', 'USER': 'DBUser', 'PASSWORD' naudoja: 'slaptažodis DB', 'HOST': 'localhost', # arba tas, kurio jiems reikia 'PORT': '', # arba tas, kurį jie naudoja}}
Mes ieškome linijos ALLOWED_HOSTS = [] ir pridedame domeną arba adresą, per kurį pasieksime, palikdami kažką panašaus ALLOWED_HOSTS = ['www.domenas.com']
Mes sukonfigūruojame statinių failų katalogą, ieškome eilutės, kurioje sakoma STATIC_ROOT = ' ' ir mes pakeičiame vertę, pateikdami absoliutų kelią ten, kur norime, kad būtų mūsų statiniai failai, mano atveju aš jį palikau maždaug taip STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'
Beveik baigėme, mes vykdome šią komandą:
./manage.py collectstatic
Tai sukurs aplanką pavadinimu 'statika kelyje, kurį nurodome settings.py ", ten bus visi mūsų statiniai failai.
Galiausiai mes iš naujo paleidžiame vadovą, kad atliktume naujus pakeitimus:
supervisorctl restart nombreApp
Ir tai būtų viskas, galų gale tai nebuvo toks didelis dalykas, tiesa? Man tai atrodė paprasta
Tikiuosi, kad tai jums naudinga, sveikinimai