Fork me on GitHub

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

 

posted @ 2016-05-01 14:23  Roronoa__Zoro  阅读(475)  评论(0编辑  收藏  举报