Rückblickend ist das Ende zu dumm, aber ich habe es vorerst gemacht, also habe ich es aufgenommen.
Oder es gibt eine Anfrage, dass "ich möchte, dass vorerst alles in der Entwicklungsumgebung selbst mit Emacs und geöffnetem Terminal funktioniert".
Unter dem Strich können Sie zu `` `./manage.py runserver``` gehen, aber mod_wsgi lässt die letzte Anfrage nicht zu.
Bereiten Sie trotzdem python3.4.0 vor
Verwenden Sie darauf basierend pyvenv, um eine Welt zu erstellen, die Django 1.7 gewidmet ist
Mach ein Projekt
Laufen Sie über mod_wsgi in Apache2
xbuild/python-install 3.4.0 /opt/python3.4.0 /opt/python3.4.0/bin/pyvenv /opt/django1.7 source /opt/django1.7/bin/activate (django1.7) > which pip /opt/django1.7/bin/pip (django1.7) > pip install https://www.djangoproject.com/download/1.7b3/tarball/ .. (django1.7) > pip list Django (1.7b3) pip (1.5.4) setuptools (2.1) (django1.7) > cd /opt
(django1.7) > django-admin.py startproject mysite (django1.7) > cd mysite (django1.7) > ls manage.py mysite (django1.7) > ./manage.py syncdb .. (django1.7) > ./manage.py runserver (Visit http://localhost:8000/)
Ich hatte das Gefühl: "Wenn du dich so weit bewegst, wirst du vorerst gewinnen. Der Rest ist die Einstellung von Apache2."
WSGIDaemonProcess mysite user=www-data group=www-data processes=2 threads=2 \
maximum-requests=100 umask=0007 \
python-path=/opt/mysite:/opt/django1.7/lib/python3.4/site-packages
WSGIScriptAlias /mysite /opt/mysite/mysite/wsgi.py
<Directory /opt/mysite/mysite>
<Files wsgi.py>
SetEnv PROCESS_GROUP mysite
Order deny,allow
Allow from all
</Files>
</Directory>
Machen Sie die SQLite-Datenbank vorerst beschreibbar aus www-Daten.
(django1.7) > chmod 777 db.sqlite3
(django1.7) > chmod 777 .
(django1.7) > sudo service apache2 restart
(Visit http://localhost/mysite/admin)
Leicht modifizierte urls.py und views.py, um sicher zu sein, dass die Version wirklich 3.4 ist
urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mysite.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^$', 'mysite.views.home', name='home'),
)
views.py
from django.http import HttpResponse
import sys
def home(request):
return HttpResponse(str(sys.version_info), content_type="text/plain")
Wenn Sie es von ./manage.py runserver ausführen (mit aktiviertem venv)
sys.version_info(major=3, minor=4, micro=0, releaselevel='final', serial=0)
Bei Ausführung mit apache2 + mod_wsgi
sys.version_info(major=3, minor=2, micro=3, releaselevel='final', serial=0)
Nyoron …… (Wenn libapache2-mod-wsgi-py3 nicht installiert ist, handelt es sich um eine 2.7-Serie, die noch schockierender ist.)
Das Apache2-Protokoll sagt alles.
[Thu May 01 17:01:31 2014] [notice] Apache/2.2.22 (Debian) mod_auth_tkt/2.1.0 PHP/5.4.4-14+deb7u9 mod_ssl/2.2.22 OpenSSL/1.0.1e mod_wsgi/3.3 Python/2.7.3 configured -- resuming normal operations
[Thu May 01 17:04:01 2014] [notice] caught SIGTERM, shutting down
[Thu May 01 17:04:02 2014] [warn] mod_wsgi: Compiled for Python/3.2.2rc1.
[Thu May 01 17:04:02 2014] [warn] mod_wsgi: Runtime using Python/3.2.3.
Da orz
Es ist wahrscheinlich nicht möglich, mehrere mod_wsgi zu haben, daher muss ich Apache separat haben. Wenn Sie das tun, verwenden Sie Docker oder KVM. Wenn das Betriebssystem jedoch auf diese Weise aufgeteilt wird, wird die Einstellungsdatei auch in alle Richtungen aufgeteilt, sodass sie weit von der ursprünglichen Anforderung entfernt ist.
Ich hatte die Idee eines Reverse-Proxys von Tornado + Apache. Die Tatsache, dass ich den Tornado bisher nicht kannte, ließ mich zittern
Nein, aber ich kannte heute sowohl xbuild als auch pyenv. Es gibt keine Wahl.
Recommended Posts