win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

1 安装django, Apache,python

要求Apache和python位数一致,比如我的Apache2.4-x86和 python3.6-32位

 

我的安装位置:

Apache2.4 ---  E:\Apache24

python3.6---E:\phthon

django2.0.4 ---E:\python\Lib\site-packages\django(我是用pycharm安装的)

 

 

2 配置环境变量(为wsgi的安装做准备):

MOD_WSGI_APACHE_ROOTDIR指向Apache根目录,即E:\Apache24

 

 win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

 

3 pip install mod_wsgi

 

安装wsgi会需要visual studio的编译器,我安装是的是vs2017

 

(如果Apache和python位数不一致会报错,我之前位数不一致,报的是100多个无法解析的外部符号),另外可能还会报错:

找不到Apache24/include/apr_perms_set.h文件,不要慌

新建apr_perms_set.h,

在官网http://apr.apache.org/docs/apr/1.6/apr__perms__set_8h_source.html复制代码于其中,并放入相应文件夹:Apache24/include,再继续安装。

 

 

4 安装完wsgi后,根据python安装目录进入E:\python\Scripts

 

win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

用命令行运行箭头所指的mod_wsgi-express.exe:

mod_wsgi-expressmodule-config

win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

得到3行后续配置所需的代码:

LoadFile "e:/python/python36.dll"

LoadModulewsgi_module "e:/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"

WSGIPythonHome "e:/python"

 

 

5 Apache的配置

5.1 打开Apache24/conf/httpd.conf:大概在240多行作如下修改:

就是将前面得到的3行代码复制进去,

win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

 

5.2 因为我是启用了虚拟主机的(最后面也会讲不启用的情况),所以去掉Include conf/extra/httpd-vhosts.conf前面#:

win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

然后来到Apache24/conf/extra/httpd-vhosts.conf,

比如我有两个项目JX,JL分别在

E:/aaProject/PythonProject/JX和E:/aaProject/PythonProject/JL文件夹

 

各自的静态文件在其根目录下的static文件下。即:

E:/aaProject/PythonProject/JX/static和E:/aaProject/PythonProject/JL/static

 

作如下修改:

<VirtualHost*:80>

        ServerName www.jx.com 

       #项目wsgi.py文件

       WSGIScriptAlias / E:/aaProject/PythonProject/JX/JX/wsgi.py

       <DirectoryE:/aaProject/PythonProject/JX/>   

        <Files wsgi.py>   

         Require all granted   

        </Files>   

       </Directory>  

#静态文件
    Alias /static/ E:/aaProject/PythonProject/JX/static/
    <Directory E:/aaProject/PythonProject/JX/static/> 
        Options FollowSymlinks
        AllowOverride none
        Require all granted
    </Directory>

       #项目根目录

       DocumentRoot"E:/aaProject/PythonProject/JX" 

       <Directory"E:/aaProject/PythonProject/JX/"> 

              Options IndexesFollowSymLinks 

              AllowOverride None 

              Require all granted 

       </Directory> 

</VirtualHost>

 

<VirtualHost*:80>

       ServerName www.jl.com 

       #项目wsgi.py文件

       WSGIScriptAlias / E:/aaProject/PythonProject/JL/ JL /wsgi.py

       <Directory E:/aaProject/PythonProject/JL />   

        <Files wsgi.py>   

         Require all granted   

        </Files>   

       </Directory>    

#静态文件
    Alias /static/ E:/aaProject/PythonProject/JL/static/
    <Directory E:/aaProject/PythonProject/JL/static/> 
        Options FollowSymlinks
        AllowOverride none
        Require all granted
    </Directory>

       #项目根目录

       DocumentRoot"E:/aaProject/PythonProject/ JL " 

       <Directory"E:/aaProject/PythonProject/ JL /"> 

              Options IndexesFollowSymLinks 

              AllowOverride None 

              Require all granted 

       </Directory> 

</VirtualHost>

这时重启Apache然后访问网站的话会报错(服务器内部的错误,6.2解决)

6静态文件的配置

6.1 每个项目的settings.py添加:

(1)'django.contrib.staticfiles',

win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

(2)接着再添加

win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

这里的话,tools 和jianjia是我项目里面的两个不同应用,所以将两个应用的静态目录(在应用根目录下创建static文件夹,即:应用名称/static)都加入到 STATICFILES_DIRS中,

其中BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))),也就是项目的根目录

(3)在项目的根目录添加static文件夹,然后执行 python manage.py collectstatic 就可以将各应用的静态文件夹收集到项目根目录下的static文件夹

(4)静态文件的使用:比如有 项目根目录/应用根目录/static/a.jpg,引用时:{{STATIC_URL}} "a.jpg" 就行了

6.2每个项目的wsgi.py添加:

sys.path.append('E:/aaProject/PythonProject/JX/'),注意是各自项目的根目录

 win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

 

 

重启Apache,

www.jx.com就是E:/aaProject/PythonProject/JX项目

www.jl.com 就是E:/aaProject/PythonProject/JL项目

 

 

 

不启用虚拟主机的话:

Apache配置跟前面差不多,以E:/aaProject/PythonProject/JX项目为例,只需要在httpd.conf中再添加:

 

win10环境下配置django2.0.4+Apache2.4+python3.6项目,以及Django静态文件、Apache多项目配置的解决方案(亲测)

最后别忘了项目中wsgi.py和settings.py的修改

 

第一次写,望大家批评指正