Exécutez python3 Django1.9 avec mod_wsgi (déployer)

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.

environnement

Environnement

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))

Premier de Hello World

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)

Exécutez Django

$ 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é!

image

Autrement

Installez mod_wsgi depuis la source

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

Résumé

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

Exécutez python3 Django1.9 avec mod_wsgi (déployer)
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Django 1.11 a démarré avec Python3.6
Exécutez Python avec VBA
Exécutez prepDE.py avec python3
Exécutez Blender avec python
Exécutez iperf avec python
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Exécutez python avec PyCharm (Windows)
Exécutez Python avec CloudFlash (arm926ej-s)
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Déployer Django sans serveur avec Lambda
Python3 + Django ~ Mac ~ avec Apache
Premiers pas avec Python Django (1)
Premiers pas avec Python Django (4)
Compilation Python avec pyqt deploy
Premiers pas avec Python Django (3)
Exécuter Label avec tkinter [Python]
Introduction à Python Django (6)
Premiers pas avec Python Django (5)
Exécutez Rotrics DexArm avec l'API Python
Exécutez mruby avec Python ou Blender
Déployer l'application Django avec Docker
Exécutez XGBoost avec Cloud Dataflow (Python)
Exécutez Aprili depuis Python sur Orange
Jusqu'à ce que Python fonctionne sur Apache
Exécutez le servo avec Python sur ESP32 (Windows)
Déployer l'application flask avec mod_wsgi (à l'aide de pipenv)
Django + Apache avec mod_wsgi sur Windows Server 2016
Exécutez une application Web Python avec Docker
FizzBuzz en Python3
Grattage avec Python
Django Heroku Deploy 1
Statistiques avec python
Tutoriel Python Django (5)
Tutoriel Python Django (2)
Grattage avec Python
Python avec Go
Internationalisation avec Django
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Django Heroku Deploy 2
CRUD avec Django
Bingo avec python
Zundokokiyoshi avec python
Tutoriel Python Django (7)
Tutoriel Python Django (1)
Tutoriel du didacticiel Python Django
Tutoriel Python Django (3)
Excel avec Python
Micro-ordinateur avec Python
Tutoriel Python Django (4)
Cast avec python
Je ne peux pas créer de projet avec Python3.5 (Windows) + django1.7.1.