您的位置:首页 > 运维架构 > Apache

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

2014-02-21 17:27 579 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: