Ubuntu+Django+mod_wsgi+Apache配置过程
Ubuntu15.10
Apache2.4( sudo apt-get install apache2 )
Python3.4( sudo apt-get install apache2 ), 【系统还有个自带的Python2.7】
Django1.9.5( pip3.4 install django )
mod_wsgi4.5.2(编译安装)
Django项目目录:/var/www/DjangoProject已经建好了mysite工程, python3.4 manage.py runserver ,浏览器显示It works...正常
. └── mysite ├── db.sqlite3 ├── manage.py └── mysite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py
启动Apache, sudo service apache2 start ,浏览器显示Apache默认网页(var/www/html/index.html),正常
要让Apache能够找到mysite,需要一个中间件:mod_wsgi
首先安装 apache2-dev,(会安装apxs2)
sudo apt-get install apache2-dev
然后可以进行mod_wsgi的安装了
下载源码包,解压,进入目录
./config --with-python=/usr/bin/python3.4
sudo make && make install
编译完毕,会在Apache的modules目录下生成mod_wsgi.so,
最后配置Apache能够找到并执行mysite的wsgi.py脚本就OK了
#/etc/apache2/apache2.conf WSGIScriptAlias /mysite /var/www/DjangoProject/mysite/mysite/wsgi.py #映射/mysite URL到wsgi.py脚本 WSGIPythonPath /var/www/DjangoProject/mysite #使得可以import mysite
<Directory /var/www/DjangoProject/mysite/mysite> <Files wsgi.py > Require all granted </Files> </Directory>
上面安装mod_wsgi时,会自动在/etc/apache2/mods-enabled/目录下生成:wsgi.load和wsgi.conf
如果没有,也可以手动载入模块:LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
apt-get 方式安装的Apache,配置文件、modules、log等都是分散的,如果不习惯也可以自己编译安装Apache
/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.load | `-- *.conf |-- conf-enabled | `-- *.conf |-- sites-enabled | `-- *.conf
/usr/lib/apache2/modules/*.so
/var/log/apache2/*.log
重启Apache,访问127.0.0.1/mysite, 就可以看到Django的It works...了!
其他说明:
如果直接 sudo apt-get install libapache2-mod-wsgi, 生成的mod_wsgi.so貌似是基于默认的python2.7的,所以如果用python3的django创建的wsgi.py,
而python2.7没有安装django,当Apache访问wsgi.py时则会出现ImportError: no module named django.core.wsgi ...