[python web]linux下apache + django + mod_wsgi + sqlite3配置

apache 2.2 

django 1.6.2

mod_wsgi 3.4

python 2.7

sqlite 3.6.2

1,linux机器上已部署好apache和python,安装sqlite后要重装python,再安装django和mod_wsgi。

2,安装sqlite3,和一般软件安装流程一样:

      解压,进入解压后的文件夹,运行 ./configure --prefix=/home/work/sqlite3  

   运行:make

   运行:make install

   重装python:

   在Python解压后的文件中,setup.py中修改:

   在 sqlite_inc_paths 中添加sqlite的include 路径(后两行): 
        sqlite_inc_paths = [ 
                             '/usr/include/sqlite3', 
                             '/usr/local/include', 
                             '/usr/local/include/sqlite', 
                             '/usr/local/include/sqlite3',
                             '/home/work/sqlite/include', 
                             '/home/work/sqlite/include/sqlite3', 
                           ] 

   安装python:

   ./configure --enable-shared --prefix=/home/work/python

   make

   make install

   若没有“--enable-shared“编译一些共享库,则import一些共享库时会报错:libpython2.7.so.1.0: cannot open shared object file: No such file or directory

   在python中import sqlite3 如果没有报错,则表示安装成功。

3,安装mod_wsgi ,参照官网文档(https://code.google.com/p/modwsgi/wiki/QuickInstallationGuide):

      解压,进入解压后的文件夹,运行(需要指定apx和python路径)./configure--with-apxs=/usr/local/apache/bin/apxs --with-python=/home/work/python/bin/python

      make

      make install

      安装成功后,apache配置文件httpd.conf中会新增一行:LoadModule wsgi_module modules/mod_wsgi.so

4,测试mod_wsgi是否安装成功:

      在/home/work/test/目录下创建test.wsgi,内容如下:

    

<span style="font-size:14px;"> def application(environ, start_response): 
      status = '200 OK' 
      output = 'Hello World!' 

      response_headers = [('Content-type', 'text/plain'), 
                        ('Content-Length', str(len(output)))] 
      start_response(status, response_headers) 

      return [output] </span>

      在httpd.conf中配置:

      <VirtualHost *:8087>

      WSGIScriptAlias / "/home/work/test/test.wsgi"

    <Directory "/home/work/test">
          Order Deny,Allow
          Allow from all
    </Directory>
    </VirtualHost>

      注意:

      a. <Directory>...</Directory>是为wsgi文件所在目录打开访问权限,不配置的话会在apache中有error信息:client denied by server configuration

      b. Deny,Allow 逗号后面没有空格,否则会有语法错误

      c. 如果使用VirtualHost,要在httpd.conf添加Listen 8087打开端口;如果不使用,则不用输入第一行和最后一行,端口为apache默认端口。本文使用VirtualHost。

      重启apache,用浏览器访问http://域名:端口号,可看到“Hello World!”


5,配置django项目

      这里很容易出问题,是因为django不同版本创建的工程,目录结构不一样,django1.6创建的如下目录结构:

     

mysite  #项目名称
|
--mysite
|
----__init__.py 
    |
----settings.py  
    |
----urls.py      
    |
----wsgi.py      #wsgi配置文件,由django自动生成
|
--manage.py 

      修改wsgi.py:

<span style="font-size:14px;">import sys
import os

sys.path.append("/home/work/test/mysite")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "update.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()</span>

       注意:因为项目文件夹和下面的子文件夹是同个名字,容易搞混,sys.path.append的路径,到项目文件夹就可以了,否则下一行的“update.settings”将找不到项目的setting.py文件,而引发“internal server error”.

      httpd.conf配置修改如下:

      

<VirtualHost *:8087>

      WSGIScriptAlias / "/home/work/test/mysite/mysite/wsgi.py"

    <Directory "/home/work/test/mysite">
          Order Deny,Allow
          Allow from all
    </Directory>
    </VirtualHost>

      重启apache:

apachectl restart



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值