zoukankan      html  css  js  c++  java
  • 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 ... 

    KEEP LEARNING!
  • 相关阅读:
    ReactiveCocoa详解
    你真的了解iOS的深浅拷贝吗?
    Spring Boot中使用Swagger2构建强大的RESTful API文档
    Spring Boot Logback应用日志
    HTTP与私有二进制协议之间的区别
    Linux常见命令
    solr云的简单搭建(了解)
    项目开发与总结
    垂直分库所带来的问题和解决方法
    水平分库分表的关键问题及解决思路
  • 原文地址:https://www.cnblogs.com/roronoa-sqd/p/5450476.html
Copyright © 2011-2022 走看看