使用Vagrant(Ubuntu16.04)创建Django x Apache x mod_wsgi的环境
如果在Apache或Nginx等WEB服务器上运行Python,需要使用WSGI机制。虽然WSGI机制看起来很简单,但我还没有详细调查过。由于要使用WSGI机制,相比PHP有点麻烦。但是一旦掌握,准备工作几乎没有差别。在本帖中,我们将在Vagrant的Ubuntu16.04上使用Django和Apache来运行WEB应用程序。这次我们将使用已经安装的Python3.5来进行设置,不需要安装Pyenv。
环境 –
-
- Windows10
-
- Vagrant 1.9.3
-
- Ubuntu16.04
-
- Python 3.5.2
- Apache/2.4.18 (Ubuntu)
Vagrantfile的配置设置
我将使用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 并登录
$ vagrant up
$ vagrant ssh
安装Apache2
$ sudo apt-get update
$ sudo apt-get install -y vim apache2 apache2-dev
安装mod_wsgi
$ sudo apt-get install -y libapache2-mod-wsgi-py3
安装Django并创建应用程序
$ 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
Apache2的配置
创建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>
WSGI的每个参数大致如下。如果有任何不清楚或出现错误的情况,需要努力阅读这个详细的手册。
- WSGIDaemonProcessのpyhton-homeは、下記で確認できる。
$ python3
>>> import sysconfig
>>> sysconfig.get_config_var('prefix')
'/usr'
-
- python-pathは、Djangoプロジェクトのルートフォルダのパス。
- WSGIScriptAliasは、最初の/が、アプリケーションのベースとなるURLパス。/の場合はWEB ROOTになる。2番目の部分は、WSGI fileの場所。
启用django.conf。
禁用默认设置,并启用django.conf。
$ sudo a2dissite 000-default
$ sudo a2ensite django
我将重新启动Apache2。
$ sudo systemctl restart apache2