Wenn Sie Python auf einem WEB-Server wie Apache oder Nginx ausführen möchten, müssen Sie dazwischen einen Mechanismus namens WSGI einfügen. Der Mechanismus von WSGI scheint einfach zu sein, aber ich habe ihn noch nicht im Detail untersucht. Es ist ein bisschen nerviger als PHP, weil es dazwischen WSGI hat. Aber wenn Sie sich einmal daran erinnern, gibt es fast keinen Unterschied in der Vorbereitung. In diesem Beitrag werde ich versuchen, eine Webanwendung unter Ubuntu 16.04 auf Vagrant mit Django und Apache auszuführen. Dieses Mal ist Pyenv nicht enthalten und wird mit Python 3.5 eingestellt, das bereits installiert ist.
Verwenden Sie die Ubuntu 16.04-Box (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
Erstellen Sie eine neue / 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>
Jeder Parameter von WSGI sieht wie folgt aus. Hier finden Sie ein detailliertes Handbuch [https://modwsgi.readthedocs.io/en/develop/user-guides.html]. Wenn Sie also Fragen oder Fehler haben, sollten Sie es lesen.
$ python3
>>> import sysconfig
>>> sysconfig.get_config_var('prefix')
'/usr'
--python-path ist der Pfad zum Stammordner Ihres Django-Projekts. --WSGIScriptAlias, das erste / ist der URL-Pfad, auf dem die Anwendung basiert. Im Fall von / wird es zu WEB ROOT. Der zweite Teil ist der Speicherort der WSGI-Datei.
Deaktivieren Sie die Standardeinstellungen und aktivieren Sie "django.conf".
$ sudo a2dissite 000-default
$ sudo a2ensite django
Starten Sie apache2 neu.
$ sudo systemctl restart apache2
Recommended Posts