Yadda zaka tura aikace-aikacen Django:

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 😉

GUnicorn takardun

Takaddun kulawa


Bar tsokaci

Your email address ba za a buga. Bukata filayen suna alama da *

*

*

  1. Wanda ke da alhakin bayanan: Miguel Ángel Gatón
  2. Manufar bayanan: Sarrafa SPAM, sarrafa sharhi.
  3. Halacci: Yarda da yarda
  4. Sadarwar bayanan: Ba za a sanar da wasu bayanan ga wasu kamfanoni ba sai ta hanyar wajibcin doka.
  5. Ajiye bayanai: Bayanin yanar gizo wanda Occentus Networks (EU) suka dauki nauyi
  6. Hakkoki: A kowane lokaci zaka iyakance, dawo da share bayanan ka.

  1.   f3niX m

    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.

    1.    uKh m

      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

  2.   Rodrigo Bravo (goidor) m

    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!

  3.   Sabis Fenriz m

    hahaha ctm Ni jiya nayi documenting din Django kuma kun riga kun shiga galaxy 999999 Gaisuwa maza xD

  4.   daniel2ac m

    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 =)

  5.   ne ozkan m

    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.

  6.   wayo m

    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?

    1.    wayo m

      Yayi aiki !!!!

  7.   Anime230 m

    kyakkyawar koyarwa amma kuna iya ɗayan ɗayan yadda zaku loda aikace-aikace a kan sabar yanar gizo wanda tuni aka samar
    gracias