Avec le recul, la fin est trop stupide, mais je l'ai fait pour le moment, alors je l'ai enregistrée.
Ou, il y a une demande que "je veux que tout fonctionne pour le moment dans l'environnement de développement lui-même avec emacs et terminal ouverts".
L'essentiel est que vous pouvez accéder à `` ./manage.py runserver '', mais mod_wsgi n'autorise pas la dernière requête.
Préparez quand même python3.4.0
Sur cette base, utilisez pyvenv pour créer un monde dédié à django 1.7
Faire un projet
Exécutez via mod_wsgi dans 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/)
Je me suis dit "Si vous avancez aussi loin, vous gagnerez pour le moment. Le reste est le réglage d'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>
Rendre la base de données SQLite accessible en écriture à partir de www-data pour le moment.
(django1.7) > chmod 777 db.sqlite3
(django1.7) > chmod 777 .
(django1.7) > sudo service apache2 restart
(Visit http://localhost/mysite/admin)
Urls.py et views.py légèrement modifiés pour être sûr que la version est vraiment 3.4
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")
(Venv activé) Lors de l'exécution à partir de ./manage.py runserver
sys.version_info(major=3, minor=4, micro=0, releaselevel='final', serial=0)
Lors de l'exécution avec apache2 + mod_wsgi
sys.version_info(major=3, minor=2, micro=3, releaselevel='final', serial=0)
Nyoron …… (Si libapache2-mod-wsgi-py3 n'est pas installé, ce sera une série 2.7 et ce sera encore plus choquant)
Le journal apache2 dit tout.
[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.
Il orz
Il n'est probablement pas possible d'avoir plusieurs mod_wsgi, je dois donc avoir Apache séparément. Si vous faites cela, utilisez docker ou kvm. Cependant, si le système d'exploitation est divisé de cette manière, le fichier de paramètres sera également divisé dans toutes les directions, il est donc loin de la demande initiale.
J'ai eu l'idée d'un proxy inverse de tornado + apache. Le fait que je ne connaissais pas la tornade jusqu'à présent m'a fait trembler
Non, mais je connaissais à la fois xbuild et pyenv aujourd'hui. Il n'y a pas de choix.
Recommended Posts