Si vous souhaitez exécuter Python sur un serveur WEB tel qu'Apache ou Nginx, vous devez mettre un mécanisme appelé WSGI entre les deux. Le mécanisme de WSGI semble simple, mais je ne l'ai pas encore étudié en détail. C'est un peu plus ennuyeux que PHP car il a WSGI entre les deux. Mais une fois que vous vous en souvenez, il n'y a presque aucune différence dans l'effort de préparation. Dans cet article, je vais essayer d'exécuter une application WEB sur Ubuntu 16.04 sur Vagrant avec Django et Apache. Cette fois, Pyenv n'est pas inclus, et il est défini à l'aide de Python 3.5 qui est déjà installé.
Utilisez la boîte Ubuntu 16.04 (ubuntu / xenial64).
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "forwarded_port", guest: 80, host: 9090, host_ip: "127.0.0.1"
end
$ vagrant up
$ vagrant ssh
$ sudo apt-get update
$ sudo apt-get install -y vim apache2 apache2-dev
$ sudo apt-get install -y libapache2-mod-wsgi-py3
$ sudo apt-get install -y python3-pip
$ sudo pip3 install --upgrade pip
$ sudo pip3 install django
$ mkdir /vagrant/django
$ cd /vagrant/django
$ django-admin startproject mysite
Créez un nouveau / etc / apache2 / sites-available / django.conf
.
/etc/apache2/sites-available/django.conf
<VirtualHost *:80>
WSGIDaemonProcess mysite python-home=/usr python-path=/vagrant/django/mysite
WSGIScriptAlias / /vagrant/django/mysite/mysite/wsgi.py process-group=mysite
<Directory /vagrant/django/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
Chaque paramètre de WSGI ressemble à ce qui suit. Il y a un manuel détaillé ici [https://modwsgi.readthedocs.io/en/develop/user-guides.html), donc si vous avez des questions ou des erreurs, vous devriez le lire.
$ python3
>>> import sysconfig
>>> sysconfig.get_config_var('prefix')
'/usr'
--python-path est le chemin vers le dossier racine de votre projet Django. --WSGIScriptAlias, le premier / est le chemin de l'URL sur lequel l'application est basée. Dans le cas de /, il devient WEB ROOT. La deuxième partie est l'emplacement du fichier WSGI.
Désactivez les paramètres par défaut et activez django.conf
.
$ sudo a2dissite 000-default
$ sudo a2ensite django
Redémarrez apache2.
$ sudo systemctl restart apache2
Recommended Posts