Yaya game da gaisuwa, wannan shine labarina na farko a cikin <» DesdeLinux (da yawa waɗanda nake da su a cikin zane na xD), Ina fatan yana da amfani a gare ku 😀
Da kyau, a cikin sabon aiki da na yanzu, a halin yanzu ana aiwatar da ƙaura daga tsarin da yawa zuwa Django (yaya ban mamaki eh ?? xD) kuma ɗayan ayyukana, ban da ci gaba, yana sanya waɗannan cikin samarwa, don haka ta yaya kyakkyawan mai koyo, tunda shine karo na farko da na sanya aikace-aikace a cikin sabuwa ta ainihi: $ Na fara karanta doc official na kowane ɗayan buƙatun da ake buƙata na tari (Gunicorn da Supervisord yafi duka), kuma ganin cewa koyarwar A cikin Sifaniyanci ba su bayyana min sosai ba a wasu fannoni, na yanke shawarar ƙirƙirar ƙaramin jagora tare da matakan da na bi don sanya aikace-aikacen cikin samarwa, dangane da django, Gunicorn, Supervisord, Nginx da Postgresql stack.
A cikin yanayin da nake aiki, sabobin suna ci gaba da Debian Squeeze, amma jagorar yakamata ya zama cikakke ingantacce don sauran rarrabawa ... don haka bari mu tashi tsaye zuwa batun mu fara:
Zan yi aiki a matsayin mai amfani sosai. Da farko dai, ana buƙatar kunshin masu zuwa:
Bututu -> Kayan aiki don shigarwa da sarrafa fakitoci don Python
aptitude install python-pip
Nginx -> Sabar yanar gizo (za mu yi amfani da shi azaman wakili na baya kuma don adana fayilolin tsaye 'img, js, css') Mun girka shi da:
aptitude install nginx
Supervisord -> Aikace-aikace don sarrafawa da saka idanu akan aikace-aikacenmu, kodayake ana amfani dashi don ƙari. Mun shigar da shi tare da:
aptitude install supervisor
virtualenv -> Yana taimaka mana ƙirƙirar keɓaɓɓiyar yanayin zartar da yanayi don aikace-aikacenmu. Mun shigar da shi tare da:
aptitude install python-virtualenv
gunicorn -> sabar yanar gizo don Python (ba za mu girka wannan ba)
Ina tsammanin ya kamata sun riga sun girka kuma an saita su
dabaru2 -> Mai haɗin Postgresql don python (ba za mu girka shi ba ko dai)
Irƙiri yanayin kama-da-wane tare da virtualenv:
Da farko za mu matsa zuwa kundin adireshin aiki wanda za mu yi amfani da shi don samarwa:
cd /var/www/
Sannan a cikin wannan kundin adireshin za mu ƙirƙirar yanayi mai kyau:
virtualenv ENV-nombreApp
Muna matsawa cikin kundin adireshin da kawai na ƙirƙira virtuallenv
cd ENV-nombreAPP
Muna kwafin aikace-aikacen a cikin wannan kundin adireshin kuma yanzu muna ci gaba don kunna yanayin tare da:
source bin/activate
Abin hanzari ya kamata yanzu yayi kama (ENV)usuario@host:
Wannan yanzu zai sanya duk abin da muke yi a ajiye shi a cikin kundin adireshi / var / www / ENV-sunan mai suna / ba tare da shafar fakitin tsarin ba
Yanzu mun matsa zuwa kundin adireshin aikace-aikace:
cd nombreApp
Muna ci gaba da shigar da jerin abubuwan dogaro na aikace-aikace (idan ya cancanta), wanda a ciki aka bayyana su a cikin fayil ɗin bukatun.txt:
pip install -r requirements.txt
Hakanan zamu iya shigar da fakiti daban-daban, misali, don shigar da mahaɗin postgresql:
pip install psycopg2
Sanya GUnicorn da sanyi:
Don shigar da shi muna yin shi a cikin wannan hanya:
pip install gunicorn
Yanzu za mu saita shi, don wannan za mu ƙirƙiri fayil da ake kira gunicorn-deploy.py a cikin tushen aikace-aikacenmu, (kodayake sunan na iya zama komai) tare da abubuwan da ke gaba:
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
Saitunan kulawa:
Yanzu bari mu saita dubawa, don wannan muke samar da fayil ɗin sanyi tare da
echo_supervisord_conf > /etc/supervisord.conf
Yanzu muna shirya fayil ɗin daidaitawa:
vim /etc/supervisord.conf
Kuma muna damuwa da layuka masu zuwa ta cirewa; (semicolon):
[unix_http_server] file = / tmp / supervisor.sock [supervisord] logfile = / var / log / supervisord.log logfile_maxbytes = 50MB logfile_backups = 10 loglevel = debug pidfile = / var / run / supervisord.pid nodaemon = minfds na ƙarya = 1024 minprocs = 200 [rpcinterface: mai kulawa] supervisor.rpcinterface_factory = mai kulawa.rpcinterface: make_main_rpcinterface [supervisorctl] serverurl = unix: [program: appname] command = / var / www / ENV-sunan mai suna / bin / django_unicorn -c / var / www / ENV -Appname / sunan mai amfani / gunicorn-deploy.py directory = / var / www / ENV-appname / appname / autostart = gaskiya autorestart = mai amfani na gaskiya = Sunan mai amfani redirect_stderr = gaskiya stdout_logfile = / var / www / rajista / sunan suna / supervisord.log
Yanzu zamu ƙirƙiri rubutun don kulawa don farawa tare da tsarin, don haka zamu ƙirƙiri fayil ɗin:
vim /etc/init.d/supervisord
Kuma mun ƙara waɗannan abubuwan masu zuwa:
# Supervisord auto-start # # description: Auto-farawa supervisord # tsari mai suna: supervisord # pidfile: /var/run/supervisord.pid SUPERVISORD = / usr / local / bin / supervisord SUPERVISORCTL = / usr / local / bin / supervisorct case $ 1 a farawa) amsa kuwwa -n "Fara farawa supervisord:" $ SUPERVISORD amsa kuwwa ;; dakatar) amsa kuwwa -n "Tsayawa mai kulawa:" $ SUPERVISORCTL rufe amsa kuwwa ;; sake kunnawa) echo -n "Tsayawa mai kulawa:" $ SUPERVISORCTL rufe echo echo -n "Fara aikin dubawa:" $ SUPERVISORD echo ;; cewa C
Kuma yanzu muna ba da izini don aiwatar da fayil ɗin don ya fara tare da tsarin:
sudo chmod +x /etc/init.d/supervisord
Muna sabunta hanyoyin don fara aikin:
sudo update-rc.d supervisord defaults
Mun fara sabis:
sudo /etc/init.d/supervisord start
Kafa nginx:
Wannan matakin shima yana da sauki, zamu kirkiri fayil ɗin daidaitawa mai zuwa na nginx don aikace-aikacenmu:
vim /etc/nginx/sites-enabled/nombreApp
Kuma za mu kara muku wadannan abubuwan
saba {saurare 9001; # tashar jiragen ruwa inda suke son nginx don sauraren uwar garken_name www.domain.com; # ko 192.168.0.100, adireshin da za mu sami damar_log /var/log/nginx/Appname.access.log; # inda zamu sami wurin shigar da aikace-aikacen / {# inda nginx zai kira yayin shiga www.dominio.com/proxy_pass http://127.0.0.1:8001; proxy_set_header Mai watsa shiri $ http_host; } Wuri / tsaye / {# inda nginx zai isa lokacin da muka shiga www.dominio.com/static/ alias / var / www / ENV-appname / appname / staticfiles /; }}
Kuma mun sake farawa nginx:
service nginx restart
Kafa Django:
Bari mu gyara fayil ɗin sanyi na django:
vim nombreApp/settings.py
Muna neman layin da yake faɗi CUTA = Gaskiya ne kuma mun canza ƙimar, saura CUTA = Karya
Mun ƙara sigogin DB:
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', # or mysql, ko kuma duk abin da suke amfani da 'SUNA': 'DBName', 'USER': 'DBUser', 'PASSWORD' : 'password DB', 'HOST': 'localhost', # ko wacce suke bukata 'PORT': '', # ko wacce suke amfani da ita}}
Muna neman layin ALLOWED_HOSTS = [] kuma muna ƙara yankin ko adireshin da zamu sami damar shiga, muna barin wani abu kamar ALLOWED_HOSTS = ['www.domain.com']
Mun saita kundin adireshi don fayilolin tsaye, muna neman layin da yake faɗi STATIC_ROOT = ' '
kuma mun canza ƙimar, tare da sanya cikakkiyar hanya inda muke son fayilolinmu masu tsayayyu su kasance, a halin da nake ciki na bar shi ƙari ko ƙasa da wannan STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'
Kusan an gama, muna aiwatar da umarni mai zuwa:
./manage.py collectstatic
Wannan zai ƙirƙiri babban fayil tare da suna 'tsaye a cikin hanyar da muke tantancewa a cikin saituna.py ', wannan shine inda duk fayilolin mu masu rikodin zasu kasance.
Kuma a ƙarshe zamu sake farawa mai kulawa don ɗaukar sabbin canje-canje:
supervisorctl restart nombreApp
Kuma wannan zai zama duka, a ƙarshe ba gaskiya bane sosai? ya zama mini mai sauƙi 😀
Ina fatan zai amfane ku, gaisuwa 😉
Na fahimci cewa bai kamata a sanya aikin Django a cikin tushen jakar uwar garken gidan yanar gizo ba (/ var / www)? Don tsaro, ban sani ba idan na kuskure.
Na gode.
Shi ke nan !!! Wani abu ne wanda ban sani ba kwata-kwata, zan sabunta shigowar 😛 kuma da zarar na dawo ranar Litinin zan yi canje-canje a cikin aikace-aikacen xD
Gracias
Epale dan uwa mai kyau koyawa. Kwanan nan ni ma iri ɗaya nake amma a cikin Debian 7, dole ne in bincika kuma in kara karantawa ko lessasa. Ina ba da shawarar cewa ka ƙirƙiri keɓaɓɓiyar yanayin virtual a cikin gidan mai amfani a cikin ɓoyayyen fayil.
Na gode!
hahaha ctm Ni jiya nayi documenting din Django kuma kun riga kun shiga galaxy 999999 Gaisuwa maza xD
Labari mai kyau =) mako guda da ya gabata na tura aikace-aikacen django na amma nayi shi da uwsgi da nginx, shin kun san fa'idar gunicorn? Na ga an ambace shi da yawa.
Yana da kyau ganin cewa django ya zama sananne sosai, gaskiyar ita ce mafi kyawun tsarin da na gani =)
Ga STATIC_ROOT abin da nake yi shine ma'anar canjin duniya. Wani abu kamar haka:
import os
PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')
Inda backend wani app ne wanda na kirkira. Don haka na tabbata cewa duk inda na tura aikin, hanyar duniya daya ce.
Abin sha'awa, zan gwada nan gaba.
Af, ko wanene ya san Yadda ake kunna lafazi da ba haruffa a cikin aikace-aikacen django?
Na duba ko'ina, babu ɗayan hanyoyin da ke amfani a gare ni:
sys.setdefaultencoding ('utf-8') # a shafukan yanar gizo.py
# - * - coding: utf-8 - * - # a kowane fayil ɗin python
Gyara site.py, da saka utf-8 maimakon ascii yakamata suyi aiki, amma $ file model.py ya sanar dani cewa har yanzu fayel ɗin na shine na ascii.
Duk Shawara?
Yayi aiki !!!!
kyakkyawar koyarwa amma kuna iya ɗayan ɗayan yadda zaku loda aikace-aikace a kan sabar yanar gizo wanda tuni aka samar
gracias