બધાને કેવી રીતે શુભેચ્છાઓ, <» માં આ મારો પહેલો લેખ છે 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
અને તે બધુ જ હશે, અંતે તે એટલું સાચું નહોતું? તે મને સરળ લાગ્યું 😀
હું આશા રાખું છું કે તે તમારા માટે ઉપયોગી છે, અભિવાદન 😉
હું સમજું છું કે જાંગો એપ્લિકેશનને વેબ સર્વર ફોલ્ડર (/ var / www) ના મૂળમાં મૂકવી જોઈએ નહીં? સલામતી માટે, મને ખબર નથી કે હું ખોટું છું કે નહીં.
શુભેચ્છાઓ.
બરાબર !!! તે એવું કંઈક હતું કે જેનાથી હું સંપૂર્ણપણે અજાણ હતો, હું એન્ટ્રીને અપડેટ કરીશ - અને સોમવારે પાછા આવતાં જ હું એક્સડી એપ્લિકેશનમાં ફેરફાર કરીશ
ગ્રાસિઅસ
એપલ ભાઈ સારા ટ્યુટોરીયલ. તાજેતરમાં હું પણ તે જ હતો પરંતુ ડેબિયન 7 માં, મારે વધુ કે ઓછું શોધવું અને વાંચવું પડ્યું. હું ભલામણ કરું છું કે તમે હિડન ફોલ્ડરમાં વપરાશકર્તાના ઘરે વર્ચુએલેન્વનું વર્ચુઅલ વાતાવરણ બનાવો.
આભાર!
હહાહા સીટીએમ મેં ગઈકાલે જંગોનું દસ્તાવેજીકરણ કર્યું છે અને તમે પહેલાથી જ ગેલેક્સીમાંથી પસાર થઈ રહ્યા છો 999999 શુભેચ્છા પુરુષો એક્સડી
ખૂબ જ સારો લેખ =) ફક્ત એક અઠવાડિયા પહેલા મેં મારી જાંગો એપ્લિકેશન ગોઠવી હતી પરંતુ મેં તેને યુવગી અને એનજિન્ક્સથી કરી હતી, તમે જાણો છો કે ગનકોર્નનો શું ફાયદો છે? મેં તેનો ઉલ્લેખ ઘણો જોયો છે.
તે જોઈને આનંદ થાય છે કે જાંગો ખૂબ પ્રખ્યાત થઈ રહ્યો છે, સત્ય એ શ્રેષ્ઠ માળખું છે જે મેં જોયું =)
STATIC_ROOT માટે હું શું કરું તે વૈશ્વિક ચલને વ્યાખ્યાયિત કરવું છે. થોડું આના જેવું:
import os
PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_PATH, '../backend/static')
જ્યાં બેકએન્ડ એ એક એપ્લિકેશન છે જે મેં બનાવી છે. આ રીતે હું ખાતરી કરું છું કે જ્યાં હું પ્રોજેક્ટને જમાવટ કરું છું ત્યાં વૈશ્વિક માર્ગ સમાન છે.
રસપ્રદ, હું ભવિષ્યમાં પ્રયત્ન કરીશ.
માર્ગ દ્વારા, શું કોઈ જાંગો એપ્લિકેશનમાં ઉચ્ચારો અને નોન-એસિસી અક્ષરોને કેવી રીતે સક્ષમ કરવું તે જાણે છે?
મેં દરેક જગ્યાએ જોયું છે, નીચેની કોઈ પણ પદ્ધતિઓ મારા માટે કામ કરતી નથી:
sys.setdefaultencoding ('utf-8') # સાઇટ્સ.પી.માં
# - * - કોડિંગ: utf-8 - * - # દરેક અજગરની ફાઇલમાં
સાઇટ.પી.નું સંપાદન, અને એએસસીઆઈને બદલે utf-8 મૂકવાનું કામ કરવાનું માનવામાં આવે છે, પરંતુ models ફાઇલ મોડલ્સ.પી એ મને જાણ કરે છે કે મારી ફાઇલ હજી એક આસિ છે.
કોઈપણ સૂચનો?
તે કામ કર્યું !!!!
ખૂબ જ સારું ટ્યુટોરિયલ, પરંતુ તમે પહેલેથી જ પ્રોડકશનમાં રહેલા વેબ સર્વર પર મારી એપ્લિકેશન કેવી રીતે અપલોડ કરી શકો તેમાંથી એક તમે કરી શકો છો
ગ્રાસિઅસ