• django部署到apache上(非常重要的,3者版本要一致,是32位就都要是32位的)


    网上把django部署到apache的文章挺多的,但是按照大家的操作,并没有一次就成功,还是遇到了一些问题,这里主要有以下几个情况。

    1.网上找到的mod_wsgi的版本问题,导致动态库加载不上。

    2.配置问题,因为涉及到apache、Python和mod_wsgi的版本,所以配置上可能也不太一样。

    这里我把我遇到的问题和解决方案比较详细的写下来。失败经历可跳过。

    失败经历

    我的环境是python2.7.11 64位版本,apache我选择的是2.4.20x 64位版本,这里有一点必须要保证的是apache和python的版本必须要一致(而且要使用相同的编译器编译出来的,一般来说python2.x的版本都是用vc9编译的,也就是VS2008),如果我们选择使用编译好的mod_wsgi,请到如下链接进行下载:

    http://www.lfd.uci.edu/~gohlke/pythonlibs#mod_wsgi

    我也的确下载了,但是失败了。

    失败的原因是我认为我机器上安装的是python2.7 32位的版本,但是实际是64位的。于是我把各种版本的whl文件解压出来,将mod_wsgi.so文件进行挨个替换,还是失败。没版本,我还是不想编译把apache的版本各种下载,发现还是不对啊?看来还是不能偷懒啊,于是我采用了自己编译,因为自己计算机上没有安装VS2008,所以我下载了VS2008,这里特别要注意VS2008在64位计算机上安装的时候是不会安装VC64位的编译器的,如果你使用的是64位的python,请一定勾选VC64位组件,否则你是编译不了的,(因为我安装的时候按照默认安装的,所以我发现vcvarsall.bat amd64 报没有安装该组件的错误)。所以这个地方一定得注意。VS2010如果安装在64位计算机上的话是会默认安装64位编译器的。

    详细操作过程(自己编译)

    1.环境介绍: 

    python2.7.11 64位

    apache 2.4.20 64位 VC9编译的版本

    这里说明一下大家可能有时搞不清楚自己的python2.x是那个版本的vc编译的,请直接在命令行运行python,这个时候会显示该python的详细版本信息,以及编译器和编译器的版本,如下图,是我的:

    MSC说明是微软的编译器编译的 v.1500这里可能有些人不知道,可以看我上个文章python的编译器对应关系,V1500代表的就是VC9的编译器版本,所以这里可以确定,我的python版本就是vc9编译出来的。这样就保证了python和apache是用的同一个编译器(相同版本)编译出来的。

    2.下载mod_wsgi的源码

    一听到源码,国内能下载的估计也就是github了,果然mod_wsgi的代码是托管在github上的,地址如下:

    https://github.com/GrahamDumpleton/mod_wsgi

    3.编译

    将下载下来的mod_wsgi-develop.zip文件解压缩到mod_wsgi-develop文件夹下,打开win32文件夹,可以看到如下的目录结构:

    打开ap24py27-win32-VC9.mk文件,(这里根据你的环境选择mk文件进行编译)

    [plain] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. APACHE_ROOTDIR = c:Apache24-win64-VC9  
    2.   
    3. PYTHON_ROOTDIR = c:Python27-win64-VC9  
    4. PYTHON_VERSION = 27  
    5.   
    6. include common-VC9.mk  

    将APACHE_ROOTDIR和PYTHON_ROOTDIR修改为你的实际位置
    例如我的环境是这样的:

    [plain] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. APACHE_ROOTDIR = E:windows_softsapache64Apache24  
    2.   
    3. PYTHON_ROOTDIR = c:Python27  
    4. PYTHON_VERSION = 27  
    5.   
    6. include common-VC9.mk  

    这个时候,直接使用对应的批处理进行编译即可,我的环境我选择的是build-win64-vc9.bat。

    或者可以打开vs2008的编译命令行(如果是64位,请选择兼容x64的命令行)

    打开后cd到你的源代码目录,执行如下操作

    nmake /f ap24py27-win64-VC9.mk clean

    nmake /f ap24py27-win64-VC9.mk install

    即可。如果没有编译过的,请查看编译输出,是不是你的python或者apache的目录没有指定正确。

    4.配置apache

    编译完成后,会自动将mod_wsgi.so文件拷贝到你的apache/modules目录下的,这个时候你只需要配置即可。

    配置的时候有几个重要参数是必须要配置的

    <1>增加模块

    [plain] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. LoadModule wsgi_module modules/mod_wsgi-py27-VC9.so  


    <2>指定python的位置(如果不指定的话,apache的error.log会报ImportError: No module named site的错误)

    WSGIPythonHome C:/Python27

    <3>配置django的应用

    [plain] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. #指定myweb项目的wsgi.py配置文件路径  
    2. WSGIScriptAlias / G:/localsvn/trunk/python/django/myblog/myblog/wsgi.py  
    3.   
    4. #指定项目路径  
    5. WSGIPythonPath G:/localsvn/trunk/python/django/myblo  
    6.   
    7. <Directory G:/localsvn/trunk/python/django/myblog>  
    8. <Files wsgi.py>  
    9.     Require all granted  
    10. </Files>  
    11. </Directory>  
    12.   
    13. #配置static的目录,需要django的settings中关闭debug模式,而且指定STATIC_ROOT,与本目录相同  
    [plain] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. #如果有需要可以配置上传目录MEDIA_ROOT,对应MEDIA_URL  
    2. Alias /static G:/localsvn/trunk/python/django/myblog/myblog/static  
    3. <Directory G:/localsvn/trunk/python/django/myblog/myblog/static>   
    4.     AllowOverride None  
    5.     Options None  
    6.     Require all granted  
    7. </Directory>  


    配置好了之后,启动apache服务器,如果能直接访问django的admin网址,那么恭喜你,配置成功了。另外,apache的默认端口是80,如果有需要可以根据实际情况进行配置。

  • 相关阅读:
    华为机试题01背包问题
    丑数
    动态规划(1)
    Linux 后台启动 Redis
    redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.
    SQLServer从渣仔到小白
    cmder 增强型命令行工具
    总结在部署分布式爬虫环境过程中常见的若干问题
    【pymongo.errors】Cursor not found
    浅析scrapy与scrapy_redis区别
  • 原文地址:https://www.cnblogs.com/AmilyWilly/p/6438452.html
Copyright © 2020-2023  润新知