Sziasztok!
Vagrant virtualbox (ubuntu 12.04) alá próbálok pythont és django-t tenni. A dolog sikeres is abban az esetben ha a gyári 2.7-es pythont használom. Tökéletesen működik, megy az apache, mysql, saját webszerver, pip-pel a django, minden ok.
Viszont:
Keresgélés után sem jöttem rá, hogy tudom a bulit-in 2.7-est a legfrissebb 2-esre cserélni.
Forrásból kellene fordítani, valamilyen ppa-t használni?
Ha a 2.7-es mellé telepítem a 3-ast, akkor virtualenv-el tudok váltogatni, de apache-al (mod_wsgi) csak a 2-es megy.
Ha a mod-wsgi-t cserélem le a 3.3-ashoz valóra (libapache2-mod-wsgi-py3), akkor a 2-est nem tudom tovább használni.
Php-hez a phpbrew-t használom, hogy tudjak verziókat váltogatni. Találtam pythonbrew-t, de nem hiszem, hogy megoldja az apache2 mod_wsgi problémáját.
Kezdőként a 2-es vagy a 3-as használatát javasoljátok?
Van értelme több verziót kipróbálni/használni?
Hogy érdemes csinálni? Használjam fejlesztéshez a beépített webszervert?
Külön vm kell verziónként ha apach alatt megy, vagy korrekt megoldás a wsgi modulok egymás mellett használatára (az lenne az igazi, ha projektenként külön tudnám állítani a python verziót)?
Mi a helyzet mysql driverrel? 2-es alatt megy, de a 3-asról azt olvastam nem túl friss postokban, hogy nem megoldott 100%-ig a dolog.
Egyenlőre az egész csak tanuláshoz kell, de egy-egy kisebb appot kitennék élesbe is, ezért kellene az apache.
Köszi
- 6456 megtekintés
Hozzászólások
Hi,
2.7.x telepítéshez lásd: http://askubuntu.com/questions/101591/how-do-i-install-python-2-7-2-on-…
Kezdőként a 2-es vagy a 3-as használatát javasoljátok?
Is-is. Használj 2.7-et, de vedd figyelembe a 3.x változásokat, pl. print_function... ("from __future__" importok)
Hogy érdemes csinálni? Használjam fejlesztéshez a beépített webszervert?
Simán. Ha használsz valami frameworköt, akkor készen kapsz valami egyszerű dev servert a kódoláshoz.
Van értelme több verziót kipróbálni/használni?
latest stable 2.7 és latest stable 3.2 ágon kívül, nincs értelme más verziókkal foglalkozni. Csak nagyon speciális esetekben...
Mi a helyzet mysql driverrel? 2-es alatt megy, de a 3-asról azt olvastam nem túl friss postokban, hogy nem megoldott 100%-ig a dolog.
Szerintem ezen a téren azért az elmúlt 1.5 évben sokat léptünk előre. Ismertebb adatbázisokkal nem kell, hogy gond legyen 3-as verzió esetén sem.
--
laco
- A hozzászóláshoz be kell jelentkezni
köszi,
A telepítéssel nincs gondom, csak ha apache alá be akarom tenni, mert a mod_wsgi a rendszer default pythonját használja.
De ha a framework webszerverét használom, okafogyott a kéérdés.
- A hozzászóláshoz be kell jelentkezni
uwsgi (igény esetén akár több instance is) + Virtualenv + Apache HTTP (vagy FCGI) proxy kell neked.
Ezek megoldják a problémádat, sztem mod_wsgi-ből csak egyet tudsz egy Apache instance alá betölteni.
uwsgi-t külön tudsz telepíteni Virtualenv-enként és külön tudod futtatni őket.
Apache-ban meg projektenként arra a uwsgi-re proxy-zol amelyikre akarsz.
A uwsgi-t ne csomagkezekővel telepítsd, hanem pip-el a Virtualenv-be bele.
Szerk.:
https://wiki.python.org/moin/Python2orPython3
Ha kettest használsz, akkor a from __future__ dolgok mindenképpen hasznosak szerintem...
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Valami ilyesmire gondoltam. Köszi. Jelenleg ott tartok, hogy pyenv-et telepítettem és a 2.7.5 és a 3.3.2 verziókat behúztam alatta. Van frissen telepített apache, mysql, sqlite3. Telepítsem a virtualenv-et és pippel az uwgi-t mindkét verzió alá? Ha jól értem ez után már csak a virtualhostokat kell megfelelően confolni ill. ha a projekt wsgi fájlját megfelelően beállítani?
- A hozzászóláshoz be kell jelentkezni
Sikerült apache alá tenni uwsgivel. Köszi :)
pip-el telepítettem: virtualenv, virtualenvwrapper, utána létre hoztam egy virtuális környezetet, amibe megint pip-el feltettem a Django-t és a uwsgi-t
Ezek után a virtualhost-ot módisítottam úgy, hogy felvettem ezeket a sorokat:
Options FollowSymLinks Indexes
SetHandler uwsgi-handler
uWSGISocket 127.0.0.1:3031
és készítettem a projekt könyvtárban egy django_test.py filet ezzel a tartalommal:
import os
#substitute mysite with the name of your project !!!
os.environ['DJANGO_SETTINGS_MODULE'] = 'projektnev.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Utána futtattam az uwsgi-t a projekt könyvtárban:
uwsgi --socket 127.0.0.1:3031 --chdir /var/www/django_test/ --pp .. --wsgi-file /var/www/django_test/dyango_wsgi.py
és újraindítottam az apache-ot.
Valahogy így gondoltad a proxyzást?
Jónak tűnik, köszi.
- A hozzászóláshoz be kell jelentkezni
Bár nem látok minden részletet, igen, ilyesmire gondoltam.
Az Apache uwsgi kommunikációhoz még érdemes ezt megnézni: http://uwsgi-docs.readthedocs.org/en/latest/Apache.html
Itt a mod_proxy_uwsgi-t ajánlják a jövőre nézve, bár fejlesztéshez sztem mindegy lesz, jó akár a sima HTTP proxy is.
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Köszönöm, átolvasom. Sok mindent kell megtanulni python témakörben.
A kulcs a pip-es uwsgi volt, ezzel nagyon sokat segítettél, mert a különböző verziók használata miatt nem jutottam előrébb az apache-al, így meg fél óra alatt megoldódott a dolog.
A mod_proxy_uwsgi hasonló módon telepíthető, mint a mod_uwsgi (libapache2-mod-uwsgi) vagy forrásból próbáljam?
A virtualenvwrapper.sh-t így használatával kapcsolatban azt olvastam, hogy a .bash_profile-ban kellenek ilyen sorok:
#source /home/vagrant/.pyenv/versions/3.3.2/bin/virtualenvwrapper.sh
source /home/vagrant/.pyenv/versions/2.7.5/bin/virtualenvwrapper.sh
Viszont azt tapasztaltam, hogy nem feltétlenül szükséges váltani. A vitrualenvwrapper.sh verziófüggetlen?
Az uwsgi daemonként futtatásához meg ha jól olvastam a paramétereket külön config (ini, xml) fájlban érdemes megadni.
Esetleg ezzel kapcsolatban tudsz tippet adni? Jó lenne úgy belőni, h. automatikusan induljon az uwsgi a nélkül, hogy a terminálban paranccsal indítanám.
- A hozzászóláshoz be kell jelentkezni
- A mod_proxy_uwsgi hasonló módon telepíthető, mint a mod_uwsgi (libapache2-mod-uwsgi) vagy forrásból próbáljam?
Ha van csomagban az a legegyszerűbb, ha nincs akkor érdemes fordítani, de ha van egy működő megoldásod, akkor maradj annál, jó lesz fejlesztéshez.
- Viszont azt tapasztaltam, hogy nem feltétlenül szükséges váltani. A vitrualenvwrapper.sh verziófüggetlen?
vitrualenvwrapper-t nem ismerem, ez nekem is újdonság és köszi is érte.
- Az uwsgi daemonként futtatásához meg ha jól olvastam a paramétereket külön config (ini, xml) fájlban érdemes megadni.
Igen a külön config az mindenképpen hasznos hosszú távon.
Automatikus indításhoz: https://www.google.co.uk/search?q=uwsgi+init+script
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Ez hogy érted? Apache mod_wsgi-vel minden VirtualHost kaphat egy külön django-t szeparált virtualenv-el.
- A hozzászóláshoz be kell jelentkezni
Azt persze, de a Python verziók nem különbözhetnek, mivel a Python verzió az lesz, amelyik Python-al maga a mod_wsgi fordítva lett...
Ezzel a módszerrel akárhány féle Python verziód lehet, verziónként pedig akárhány virtualenv.
Azt, hogy egy adott domain-en vagy URL-en melyik jelenjen meg pedig az Apache-ban döntheted el.
♲♻♲
- A hozzászóláshoz be kell jelentkezni
Áááá, már értem, köszi. :)
- A hozzászóláshoz be kell jelentkezni