જાંગો એપ્લિકેશન કેવી રીતે જમાવવી:

બધાને કેવી રીતે શુભેચ્છાઓ, <» માં આ મારો પહેલો લેખ છે DesdeLinux (મારી પાસે મારા ડ્રાફ્ટ્સ xDમાંના ઘણા બધા છે), મને આશા છે કે તે તમારા માટે ઉપયોગી છે 😀

ઠીક છે, મારી નવી અને વર્તમાન નોકરીમાં, આ ક્ષણે ઘણી સિસ્ટમોનું જાંગોમાં સ્થળાંતર થઈ રહ્યું છે (કેટલું વિચિત્ર! ?? એક્સડી) અને વિકાસ સિવાય, મારું એક કાર્ય, તેને ઉત્પાદનમાં મૂકવાનું છે, તેથી કેવી રીતે સારા એપ્રેન્ટિસ, કારણ કે પ્રત્યક્ષ સર્વર પર ઉત્પાદનમાં એપ્લિકેશન મૂકવાની તે મારી પ્રથમ વખત હતી: $ મેં સ્ટેકના દરેક જરૂરી પેકેજો (મોટાભાગે ગનિકોર્ન અને સુપરવાઇઝર) ના officialફિશિયલ ડોક વાંચવાનું શરૂ કર્યું, અને તે જોઈને કે ટ્યુટોરિયલ્સ સ્પેનિશમાં તેઓ મારા માટે કેટલાક પાસાંઓ પર ખૂબ સ્પષ્ટ ન હતા, મેં જાંગો, ગ્યુનિકornર્ન, સુપરવાઇઝર, નિજિનક્સ અને પોસ્ટગ્રેસ્કલ સ્ટેકના આધારે એપ્લિકેશનને ઉત્પાદનમાં મૂકવા માટેના પગલાઓ સાથે મીની માર્ગદર્શિકા બનાવવાનું નક્કી કર્યું.

જ્યાં હું કામ કરું છું ત્યાં સર્વર્સ હજી પણ ડેબિયન સ્ક્વિઝ પર ચાલે છે, પરંતુ અન્ય વિતરણો માટે માર્ગદર્શિકા સંપૂર્ણ માન્ય હોવી જોઈએ ... તેથી ચાલો સીધા મુદ્દા પર જઈએ અને પ્રારંભ કરીએ:

હું સુપર યુઝર તરીકે કામ કરીશ. સૌ પ્રથમ, નીચેના પેકેજો જરૂરી છે:

PIP -> પાયથોન માટે પેકેજો સ્થાપિત કરવા અને સંચાલિત કરવા માટેનું સાધન
aptitude install python-pip

Nginx -> વેબ સર્વર (અમે તેનો ઉપયોગ વિપરીત પ્રોક્સી તરીકે કરીશું અને સ્થિર ફાઇલો 'ઇમગ, જેએસ, સીએસએસ' કેશ કરવા માટે) અમે તેને આની સાથે ઇન્સ્ટોલ કરીએ છીએ:
aptitude install nginx

સુપરવાઇઝર -> અમારી એપ્લિકેશનને મેનેજ કરવા અને મોનિટર કરવા માટેની એપ્લિકેશન, જો કે તે વધુ માટે વપરાય છે. અમે તેને આ સાથે સ્થાપિત કરીએ છીએ:
aptitude install supervisor

વર્તુઆલેન્વ -> તે અમારી એપ્લિકેશન માટે કસ્ટમાઇઝ્ડ વર્ચ્યુઅલ એક્ઝિક્યુશન વાતાવરણ બનાવવામાં મદદ કરે છે. અમે તેને આ સાથે સ્થાપિત કરીએ છીએ:
aptitude install python-virtualenv

ગicનિકornર્ન -> અજગર માટે વેબ સર્વર (અમે હજી સુધી આ ઇન્સ્ટોલ કરીશું નહીં)

હું માનું છું કે તેઓ પહેલેથી જ પોસ્ટગ્રેસ્ક્લ ઇન્સ્ટોલ કરેલા અને ગોઠવેલા હોવા જોઈએ

સાયકોપગ 2 -> અજગર માટે પોસ્ટગ્રેસ્ક્લ કનેક્ટર (અમે હજી સુધી તેને ઇન્સ્ટોલ કરીશું નહીં)

વર્ચુએલેન્વ સાથે વર્ચુઅલ વાતાવરણ બનાવો:

પહેલા આપણે વર્કિંગ ડિરેક્ટરીમાં જઈશું જેનો ઉપયોગ આપણે ઉત્પાદનમાં મૂકવા માટે કરીશું:
cd /var/www/

તો પછી આ ડિરેક્ટરીમાં આપણે વર્ચુઅલ એન્વાયર્નમેન્ટ બનાવીશું:
virtualenv ENV-nombreApp

અમે ડિરેક્ટરીમાં સ્થાનાંતરિત કરીએ છીએ જે મેં હમણાં જ વર્ચ્યુએલેન્વ બનાવ્યું છે
cd ENV-nombreAPP

અમે આ ડિરેક્ટરીમાં એપ્લિકેશનની ક copyપિ કરીએ છીએ અને હવે અમે આ સાથે પર્યાવરણને સક્રિય કરવા આગળ વધીએ છીએ:
source bin/activate

પ્રોમ્પ્ટ હવે દેખાવા જોઈએ (ENV)usuario@host:

આ હવે આપણે જે બધું કરીએ છીએ તે ડિરેક્ટરીમાં સંગ્રહિત કરશે / var / www / ENV-appname / સિસ્ટમ પેકેજોને અસર કર્યા વિના

હવે આપણે એપ્લિકેશન ડિરેક્ટરીમાં જઈશું:
cd nombreApp

અમે એપ્લિકેશન અવલંબન (જો જરૂરી હોય તો) ની સૂચિ સ્થાપિત કરવા આગળ વધીએ છીએ, જેમાં તે ફાઇલમાં સ્પષ્ટ થયેલ છે જરૂરીયાતો. txt:
pip install -r requirements.txt

આપણે પેકેજ પણ વ્યક્તિગત રૂપે સ્થાપિત કરી શકીએ છીએ, ઉદાહરણ તરીકે, ના કનેક્ટરને સ્થાપિત કરવા માટે postgresql:
pip install psycopg2

GUnicorn સ્થાપન અને રૂપરેખાંકન:

તેને ઇન્સ્ટોલ કરવા માટે આપણે તે જ રીતે કરીએ છીએ:
pip install gunicorn

હવે આપણે તેને રૂપરેખાંકિત કરવા જઈ રહ્યા છીએ, આ માટે આપણે એક ફાઇલ કહેવા જઈ રહ્યા છીએ gunicorn-deploy.py અમારી એપ્લિકેશનના મૂળમાં, (જોકે નામ કંઈપણ હોઈ શકે છે) નીચેની સામગ્રી સાથે:

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

સુપરવાઇઝર રૂપરેખાંકન:

ચાલો હવે સુયોજિત કરીએ સુપરવાઈઝર, તેના માટે આપણે રૂપરેખાંકન ફાઇલ જનરેટ કરીએ છીએ

echo_supervisord_conf > /etc/supervisord.conf

હવે અમે ગોઠવણી ફાઇલને સંપાદિત કરીએ છીએ:
vim /etc/supervisord.conf

અને અમે દૂર કરીને નીચેની લીટીઓને અસામાન્ય બનાવવી; (અર્ધવિરામ):

[યુનિક્સ_એચટીટીપી_સર્વર] ફાઇલ = / ટીએમપી / સુપરવાઇઝર.સisક [સુપરવાઇઝર] લfગફાઇલ = / વાર / લોગ / સુપરવાઇઝર.લોગ લfગફileલ_મેક્સબાઇટ્સ = M૦ એમબી લોગફાયલ_બેકઅપ્સ = 50 લleગલેવલ = ડિબગ પિડફાઇલ = / વાર / રન / સુપરવિઝાર્ડ.પીડ નોડેમન = ખોટી મિનિફ્ડ્સ = 10 = 1024 [આરપીસીનટરફેસ: સુપરવાઇઝર] સુપરવાઇઝર.આઈઆરપીસીનટરફેસ_ફેક્ટરી = સુપરવાઇઝર.આઈઆરપીસીંટરફેસ: મેક_મેઇન_આરપીસીંટરફેસ [સુપરવાઇઝરક્ટ] સર્વરલ = યુનિક્સ: [પ્રોગ્રામ: એપનેમ] આદેશ = / વાર / www / ENV-appname / bin / django_unicorn -c / var / www / ENV -એપ્પ્નામ / એપનેમ / ગનિકornર્ન -ડેપ્લોય.પી. ડિરેક્ટરી = / વાર / www / ENV-appname / appname / autostart = સાચું autorestart = સાચું વપરાશકર્તા = વપરાશકર્તા નામ redirect_stderr = સાચું stdout_logfile = / var / www / લsગ્સ / એપ્લિકેશન નામ / સુપરવિઝાર્ડ.લોગ

હવે આપણે સિસ્ટમ સાથે શરૂ થવા માટે સુપરવાઇઝર માટે સ્ક્રિપ્ટ બનાવીશું, તેના માટે આપણે ફાઇલ બનાવીશું:
vim /etc/init.d/supervisord

અને અમે નીચેની સામગ્રી ઉમેરીએ છીએ:

 # સુપરવિઝાર્ડ autoટો-સ્ટાર્ટ # # વર્ણન: સ્વત starts શરૂ થાય છે સુપરવાઇઝર # પ્રોસેસનામ: સુપરવાઇઝર # પીડફાઇલ: /var/run/supervisord.pid SUPERVISORD = / usr / સ્થાનિક / બિન / સુપરવાઈઝર SUPERVISORCTL = / usr / સ્થાનિક / બિન / સુપરવાઈઝરક્ટ કેસ $ 1 શરૂઆતમાં) ઇકો -n "સુપરવાઇઝર શરૂ કરી રહ્યા છીએ:" UP સુપરવાઇઝર ઇકો ;; સ્ટોપ) ઇકો -n "સ્ટોપિંગ સુપરવાઇઝર:" UP સુપરવિઝોર્ટર એલ શટડાઉન ઇકો ;; ફરી શરૂ કરો) ઇકો -n "સુપરવાઇઝર રોકી રહ્યા છે:" V સુપરવિઝોર્ટલ શટડાઉન ઇકો -n "સુપરવાઇઝર શરૂ કરી રહ્યા છીએ:" UP સુપરવિઝરર્ડ ઇકો ;; કે સી

અને હવે અમે ફાઇલને એક્ઝેક્યુટ પરમિશન આપીએ છીએ જેથી તે સિસ્ટમથી શરૂ થઈ શકે:
sudo chmod +x /etc/init.d/supervisord

સેવા શરૂ કરવા માટે અમે લિંક્સને અપડેટ કરીએ છીએ:
sudo update-rc.d supervisord defaults

અમે સેવા શરૂ કરીએ છીએ:
sudo /etc/init.d/supervisord start

એનજીએનએક્સ સેટ કરી રહ્યું છે:

આ પગલું પણ એકદમ સરળ છે, અમે નીચેની રૂપરેખાંકન ફાઇલ બનાવીશું nginx અમારી એપ્લિકેશન માટે:

vim /etc/nginx/sites-enabled/nombreApp

અને અમે તમને નીચેની સામગ્રી ઉમેરીશું

સર્વર {સાંભળો 9001; # બંદર જ્યાં તેઓ સર્વર_નામ www.domain.com ને સાંભળવા nginx માંગે છે; # અથવા 192.168.0.100, સરનામું કે અમે _ક્સેસ_લvગ /var/log/nginx/appname.access.log ;ક્સેસ કરીશું; # જ્યાં અમારી પાસે એપ્લિકેશન લ logગ સ્થાન / will # હશે જ્યાં www.dominio.com/proxy_pass http://127.0.0.1:8001 ને whenક્સેસ કરતી વખતે nginx ક willલ કરશે; પ્રોક્સી_સેટ_હેડર હોસ્ટ $ http_host; / સ્થાન / સ્થિર / {# જ્યાં આપણે www.dominio.com/static/ ઉપનામ / var / www / ENV-appname / appname / staticfiles / દાખલ કરીશું ત્યારે nginx willક્સેસ કરશે; }

અને અમે nginx ફરીથી પ્રારંભ કરીએ છીએ:
service nginx restart

જાંગો સેટ કરી રહ્યા છીએ:

ચાલો જાંગો કન્ફિગરેશન ફાઇલને સંશોધિત કરીએ:
vim nombreApp/settings.py

અમે કહે છે કે વાક્ય માટે જુઓ DEBUG = સાચું અને આપણે વેલ્યુ બદલીએ છીએ, બાકી ડીબગ = ખોટું

અમે ડીબી પરિમાણો ઉમેરીએ છીએ:

ડેટાબેઝ = default 'ડિફ defaultલ્ટ': EN 'ENGINE': 'django.db.backends.postgresql_psycopg2', # અથવા mysql, અથવા જે કંઈ તેઓ 'NAME': 'DBName', 'વપરાશકર્તા': 'DBUser', 'PASSWord' નો ઉપયોગ કરે છે : 'પાસવર્ડ ડીબી', 'હોસ્ટ': 'લોકલહોસ્ટ', # અથવા જેને તેઓને 'પોર્ટ' ની જરૂર છે: '', # અથવા તેઓ જેનો ઉપયોગ કરી રહ્યાં છે}}

અમે લાઇન શોધીએ છીએ ALLOWED_HOSTS = [] અને અમે ડોમેન અથવા સરનામું ઉમેરીશું જેના દ્વારા આપણે કંઈક ખોટું કરીને leavingક્સેસ કરીશું ALLOWED_HOSTS = ['www.domain.com']

અમે સ્થિર ફાઇલો માટે ડિરેક્ટરીને ગોઠવીએ છીએ, અમે તે વાક્ય શોધીશું જે કહે છે STATIC_ROOT = ' ' અને આપણે મૂલ્ય બદલીએ છીએ, જ્યાં આપણી સ્થિર ફાઇલો જોઈએ ત્યાં સંપૂર્ણ રસ્તો મૂકીને, મારા કિસ્સામાં મેં તેને આ રીતે વધુ કે ઓછું છોડી દીધું STATIC_ROOT='/var/www/ENV-nombreApp/nombreApp/statics/'

લગભગ સમાપ્ત થઈ ગયા પછી, અમે નીચેનો આદેશ અમલીકરણ કરીશું:
./manage.py collectstatic

આ નામ સાથે એક ફોલ્ડર બનાવશેસ્ટેટિક્સ અમે જે માર્ગમાં નિર્દિષ્ટ કર્યું છે settings.py ', ત્યાં અમારી બધી સ્થિર ફાઇલો હશે.

અને છેવટે અમે નવા ફેરફારો લેવા માટે સુપરવાઇઝરને ફરી શરૂ કરીએ છીએ:
supervisorctl restart nombreApp

અને તે બધુ જ હશે, અંતે તે એટલું સાચું નહોતું? તે મને સરળ લાગ્યું 😀

હું આશા રાખું છું કે તે તમારા માટે ઉપયોગી છે, અભિવાદન 😉

GUnicorn દસ્તાવેજીકરણ

સુપરવાઇઝર દસ્તાવેજીકરણ


તમારી ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. આવશ્યક ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *

*

*

  1. ડેટા માટે જવાબદાર: મિગ્યુએલ gelંજેલ ગેટóન
  2. ડેટાનો હેતુ: નિયંત્રણ સ્પામ, ટિપ્પણી સંચાલન.
  3. કાયદો: તમારી સંમતિ
  4. ડેટાની વાતચીત: કાયદાકીય જવાબદારી સિવાય ડેટા તૃતીય પક્ષને આપવામાં આવશે નહીં.
  5. ડેટા સ્ટોરેજ: cસેન્ટસ નેટવર્ક્સ (ઇયુ) દ્વારા હોસ્ટ કરેલો ડેટાબેઝ
  6. અધિકાર: કોઈપણ સમયે તમે તમારી માહિતીને મર્યાદિત, પુન recoverપ્રાપ્ત અને કા deleteી શકો છો.

  1.   એફ 3નિએક્સ જણાવ્યું હતું કે

    હું સમજું છું કે જાંગો એપ્લિકેશનને વેબ સર્વર ફોલ્ડર (/ var / www) ના મૂળમાં મૂકવી જોઈએ નહીં? સલામતી માટે, મને ખબર નથી કે હું ખોટું છું કે નહીં.

    શુભેચ્છાઓ.

    1.    urKh જણાવ્યું હતું કે

      બરાબર !!! તે એવું કંઈક હતું કે જેનાથી હું સંપૂર્ણપણે અજાણ હતો, હું એન્ટ્રીને અપડેટ કરીશ - અને સોમવારે પાછા આવતાં જ હું એક્સડી એપ્લિકેશનમાં ફેરફાર કરીશ
      ગ્રાસિઅસ

  2.   રોડ્રિગો બ્રાવો (ગોઇડર) જણાવ્યું હતું કે

    એપલ ભાઈ સારા ટ્યુટોરીયલ. તાજેતરમાં હું પણ તે જ હતો પરંતુ ડેબિયન 7 માં, મારે વધુ કે ઓછું શોધવું અને વાંચવું પડ્યું. હું ભલામણ કરું છું કે તમે હિડન ફોલ્ડરમાં વપરાશકર્તાના ઘરે વર્ચુએલેન્વનું વર્ચુઅલ વાતાવરણ બનાવો.

    આભાર!

  3.   સર્વર ફેનરિઝ જણાવ્યું હતું કે

    હહાહા સીટીએમ મેં ગઈકાલે જંગોનું દસ્તાવેજીકરણ કર્યું છે અને તમે પહેલાથી જ ગેલેક્સીમાંથી પસાર થઈ રહ્યા છો 999999 શુભેચ્છા પુરુષો એક્સડી

  4.   daniel2ac જણાવ્યું હતું કે

    ખૂબ જ સારો લેખ =) ફક્ત એક અઠવાડિયા પહેલા મેં મારી જાંગો એપ્લિકેશન ગોઠવી હતી પરંતુ મેં તેને યુવગી અને એનજિન્ક્સથી કરી હતી, તમે જાણો છો કે ગનકોર્નનો શું ફાયદો છે? મેં તેનો ઉલ્લેખ ઘણો જોયો છે.
    તે જોઈને આનંદ થાય છે કે જાંગો ખૂબ પ્રખ્યાત થઈ રહ્યો છે, સત્ય એ શ્રેષ્ઠ માળખું છે જે મેં જોયું =)

  5.   ઓઝકાર જણાવ્યું હતું કે

    STATIC_ROOT માટે હું શું કરું તે વૈશ્વિક ચલને વ્યાખ્યાયિત કરવું છે. થોડું આના જેવું:

    import os
    PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
    STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')

    જ્યાં બેકએન્ડ એ એક એપ્લિકેશન છે જે મેં બનાવી છે. આ રીતે હું ખાતરી કરું છું કે જ્યાં હું પ્રોજેક્ટને જમાવટ કરું છું ત્યાં વૈશ્વિક માર્ગ સમાન છે.

  6.   એસ.જી.માર્ટ જણાવ્યું હતું કે

    રસપ્રદ, હું ભવિષ્યમાં પ્રયત્ન કરીશ.

    માર્ગ દ્વારા, શું કોઈ જાંગો એપ્લિકેશનમાં ઉચ્ચારો અને નોન-એસિસી અક્ષરોને કેવી રીતે સક્ષમ કરવું તે જાણે છે?

    મેં દરેક જગ્યાએ જોયું છે, નીચેની કોઈ પણ પદ્ધતિઓ મારા માટે કામ કરતી નથી:
    sys.setdefaultencoding ('utf-8') # સાઇટ્સ.પી.માં

    # - * - કોડિંગ: utf-8 - * - # દરેક અજગરની ફાઇલમાં

    સાઇટ.પી.નું સંપાદન, અને એએસસીઆઈને બદલે utf-8 મૂકવાનું કામ કરવાનું માનવામાં આવે છે, પરંતુ models ફાઇલ મોડલ્સ.પી એ મને જાણ કરે છે કે મારી ફાઇલ હજી એક આસિ છે.

    કોઈપણ સૂચનો?

    1.    એસ.જી.માર્ટ જણાવ્યું હતું કે

      તે કામ કર્યું !!!!

  7.   એનાઇમ 230 જણાવ્યું હતું કે

    ખૂબ જ સારું ટ્યુટોરિયલ, પરંતુ તમે પહેલેથી જ પ્રોડકશનમાં રહેલા વેબ સર્વર પર મારી એપ્લિકેશન કેવી રીતે અપલોડ કરી શકો તેમાંથી એક તમે કરી શકો છો
    ગ્રાસિઅસ