J'ai résumé la procédure pour créer un environnement de déploiement Django avec mod_wsgi. Puisqu'il s'agit d'un mémorandum principal, seule la procédure est écrite. Si vous voulez bien le comprendre, vous devriez lire d'autres articles.
Connectez-vous au serveur Ubuntu avec ssh et préparez l'environnement.
apache
Si vous n'avez pas encore installé apache, installez-le avec la commande suivante.
$ sudo apt-get install apache2
python , Django
Ensuite, installez python à partir de pyenv. Voir ci-dessous. (Corrigeons la version python à 3.5.1) http://qiita.com/tonkatu05/items/d0422a2050d669c72f54#1-%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89
$ python --version
Python 3.5.1
Installez également Django.
$ pip install django==1.9.4
mod_wsgi
Ensuite, installez mod_wsgi.
$ sudo apt-get install libapache2-mod-wsgi-py3
(* Une autre méthode [Installer mod_wsgi depuis la source](## Installer mod_wsgi depuis la source))
Créez /home/hoge/hello.py.
hello.py
import sys
def application(environ, start_response):
status = '200 OK'
output = b'Hello World! python version : ' + sys.version.encode("utf-8")
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
Créez /etc/apache2/sites-available/python.conf.
python.conf
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / /home/hoge/hello.py
# WSGIScriptAlias / /home/hoge/TestProject/TestProject/wsgi.py
WSGIPythonPath /home/hoge/TestProject:/home/hoge/.pyenv/versions/3.5.1/lib/python3.5/site-packages
<Directory /home/hoge>
Require all granted
</Directory>
Reflétez les paramètres.
$ sudo a2ensite python.conf
Redémarrez apache.
$ sudo service apache2 restart
Essayez d'accéder à partir d'un navigateur.
Hello World! python version : 3.4.3 (default, Oct 14 2015, 20:31:36)
[GCC 4.8.4]
Est affiché. (La version de python est un mystère)
$ cd
$ django-admin startproject TestProject
Modifiez /home/hoge/TestProject/TestProject/wsgi.py.
wsgi.py
"""
WSGI config for TestProject project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/
"""
import os
import sys
from django.core.wsgi import get_wsgi_application
sys.path.append('home/hoge/TestProject')
sys.path.append('home/hoge/TestProject/TestProject')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "TestProject.settings")
application = get_wsgi_application()
Modifiez /etc/apache2/sites-available/python.conf.
(Commentez WSGIScriptAlias / / home / hoge / hello.py
et
Décommenter WSGIScriptAlias / / home / hoge / TestProject / TestProject / wsgi.py
)
python.conf
LoadModule wsgi_module modules/mod_wsgi.so
# WSGIScriptAlias / /home/hoge/hello.py
WSGIScriptAlias / /home/hoge/TestProject/TestProject/wsgi.py
WSGIPythonPath /home/hoge/.pyenv/versions/3.5.1/lib/python3.5/site-packages
<Directory /home/hoge>
Require all granted
</Directory>
$ sudo service apache2 restart
Essayez à nouveau d'accéder à partir d'un navigateur Succès lorsque l'écran Django «Ça a fonctionné!
Comme vous pouvez le voir sur le résultat de hello.py, la version 3.4.3 de python a été utilisée pour une raison quelconque. Si vous installez mod_wsgi avec apt-get, vous ne pouvez pas spécifier la version. Je ne sais pas comment cela fonctionne, mais il peut y avoir des inconvénients dus à la différence de version ...? (Je ne connais pas la version)
J'ai donc également essayé d'installer mod_wsgi à partir des sources. Je comprends bien cela. J'ai fini par installer le 3.5-dev de python. J'avais l'impression d'avoir parcouru le code d'erreur et lu le débordement de pile, et je n'en comprenais pas la signification.
Une fois l'introduction terminée, peut-être que les étapes suivantes sont acceptées.
Pour le moment, supprimez celui installé. (Si installé)
$ apt-get remove libapache2-mod-wsgi-py3
$ pyenv uninstall 3.5.1
Installez apache2-dev
$ sudo apt-get install apache2-dev
Quand j'essaye d'installer python3.5-dev
$ CONFIGURE_OPTS="--enable-shared" pyenv install 3.5-dev
Cloning https://hg.python.org/cpython...
error: please install `mercurial` and try again
Alors installez mercurial
$ sudo apt-get install mercurial
$ CONFIGURE_OPTS="--enable-shared" pyenv install 3.5-dev
Installez mod_wsgi
$ cd
$ wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.4.13.tar.gz
$ tar zxvf 4.4.13.tar.gz
$ mv mod_wsgi-4.4.13 /usr/local/src
$ cd /usr/local/src/mod_wsgi-4.4.13
$./configure LDFLAGS='-Wl,-rpath=/home/hoge/.pyenv/versions/3.5-dev/lib'
$ make
$ sudo make install
Appliquer le module à Apache
$ sudo a2enmod wsgi
Redémarrez Apache
$ sudo service apache2 restart
Il était assez difficile et long de rechercher de la littérature. Je veux travailler avec quelqu'un qui connaît la construction d'environnement à côté de moi ... (_ _) S'il vous plaît laissez-moi savoir si vous faites quelque chose d'étrange.
Recommended Posts