django在windows下的部署(Apache+mod_wsgi)

时间:2024-03-22 21:47:15

 

原文文章:https://blog.csdn.net/weixin_40754816/article/details/80955817

之前一直在本地跑django项目,最近尝试在服务器上部署项目,目前已经成功部署,也花了好多时间,这里跟大家交流一下,希望对像我一样的新手有帮助。

一、配置环境:

1.Python版本3.6

2.服务器平台:windows server 2016

3.django版本2.0.7

二.Apache下载与配置

1.进入Apache官网,http://httpd.apache.org/下载对应版本,依次按照下面图片找到版本下载列表:

django在windows下的部署(Apache+mod_wsgi)

 

django在windows下的部署(Apache+mod_wsgi)

到这里就可以下载相应的版本了,我选择的是Apache2.4 VC14 64为版本(根据需求选择)

django在windows下的部署(Apache+mod_wsgi)

django在windows下的部署(Apache+mod_wsgi)

2.下载后是一个压缩文件,直接解压缩,获取文件夹里的Apache24文件夹,这个文件夹就是apache服务器文件了,不需要安装,直接将Apache24文件夹移动到你想放的位置。django在windows下的部署(Apache+mod_wsgi)django在windows下的部署(Apache+mod_wsgi)

我这里直接将apache24移动到C盘根目录:

django在windows下的部署(Apache+mod_wsgi)

3.配置apache服务器文件:

进入C:\Apache24\conf目录,找到httpd.conf文件,这个就是apache服务器的配置文件。

我用notepad打开(也可以用其它编程工具),会看到很多代码,不用管,也不要删除任何代码,直接找到如下代码行进行修改

 
 
  1. ...

  2. Define SRVROOT "C:\Apache24" #Apache24文件的路径,其余不用改。

  3. ...

  4. Listen 192.168.31.227:8000 #此处为你要发布的网站ip地址,此处我用我电脑的ip和端口,你也可以用127.0.0.1:8000用于本地测试;80端口自己设置

  5. ...

  6. ServerName 192.168.31.227:8000

  7. ...

此处可用crl+f查找。

4.创建apache服务

打开命令行(管理员),cd进入C:\Apache24\bin文件夹(此处根据自己实际apache24文件夹所在位置为准),输入如下代码创建服务:

httpd.exe -k install -n "apache2.4"  #apache2.4是所创建服务器名称,可更改。

出现successfully installed说明服务创建成功;同时后面可能会跟一些其他信息,说明你的配置是否正确,有错的话再检查步骤3,看路径,ip是否正确。我本人遇到的问题是c++插件报错,下载安装即可。

创建成功后,进入服务器管理器,可看到如下django在windows下的部署(Apache+mod_wsgi)

右键可对服务进行启动,停止,重启操作,此处我们把服务器启动,状态变为正在运行则成功(补充一下,服务操作命令行为sc delete “Apache2.4”)

5.在浏览器输入在配置文件中配置的地址192.168.31.227:8000,显示如下页面成功:

django在windows下的部署(Apache+mod_wsgi)

三.配置Django

1.安装mod_wsgi,进入http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi,下载相应版本mod_wsgi Python的插件,这个插件我理解的作用是一个python与apache的接口的作用,因为django项目本身使用python写的。言归正传,进入网址后,下载对应版本,ap24cv24指apache版本,比如我的是apache24, cp36指python3.6,win_adm64指操作系统为64位,这里一定要下载正确版本,不然后面无法正确部署。

django在windows下的部署(Apache+mod_wsgi)

 

这里还有种情况,是下载之后找到mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl,后缀名改为.zip进行解压,但是解压后找不到mod_wsgi.so文件(倘若你的版本有os文件,进入这个教程,http://www.cnblogs.com/fnng/p/4119712.html,找到安装mod_wsgi步骤那里)。此处我们直接将该whl文件复制到python路径下的script文件夹下,我的是C:\Users\PengGangzhu\AppData\Local\Programs\Python\Python36\Scripts。cd进入该路径,命令行输入

pip3 install "mod_wsgi-4.5.24+ap24vc14-cp36-cp36m-win_amd64.whl"

引号中的文件名根据实际更改,安装成功后再输入

mod_wsgi-express module-config

出现以下三行提示,这三行一定要记下来,后面配置最重要的就是它了:

 
  1. LoadFile "c:/users/penggangzhu/appdata/local/programs/python/python36/python36.dll"

  2. LoadModule wsgi_module "c:/users/penggangzhu/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"

  3. WSGIPythonHome "c:/users/penggangzhu/appdata/local/programs/python/python36"

至此,mod_wsgi安装成功。

2.配置django项目

再次打开httpd.conf文件,再最末尾添加如下代码,具体解释看注释,实际情况根据自己的项目位置更改。此处face_log2为我的工程文件夹。

 
  1. #安装wsgi模块后,出来的三行字符,直接复制过来

  2. LoadFile "c:/users/penggangzhu/appdata/local/programs/python/python36/python36.dll"

  3. LoadModule wsgi_module "c:/users/penggangzhu/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"

  4. WSGIPythonHome "c:/users/penggangzhu/appdata/local/programs/python/python36"

  5. #设置工程中的wsgi路径

  6. WSGIScriptAlias / C:\Users\PengGangzhu\Desktop\face_log2\face_log2\wsgi.py

  7. #设置工程路径

  8. WSGIPythonPath C:\Users\PengGangzhu\Desktop\face_log2

  9. #设置wsgi路径

  10. <Directory C:\Users\PengGangzhu\Desktop\face_log2\face_log2>

  11. <Files wsgi.py>

  12. Require all granted

  13. </Files>

  14. </Directory>

  15. #设置静态文件路径

  16. Alias /static C:\Users\PengGangzhu\Desktop\face_log2\static

  17. <Directory C:\Users\PengGangzhu\Desktop\face_log2\static>

  18. AllowOverride None

  19. Options None

  20. Require all granted

  21. </Directory>

写好后保存文件,回到服务器管理器,找到apache2.4重启服务(记住要重启服务)。如果之前配置都没问题,浏览器输入http://192.168.31.227:8000,你就会见到眼熟的django页面了。

django在windows下的部署(Apache+mod_wsgi)

输入url,http://192.168.31.227:8000/index1

django在windows下的部署(Apache+mod_wsgi)

大功告成!

额外补充一下,倘若想在局域网下访问该站点,可按照如下链接操作,亲测可行。https://jingyan.baidu.com/article/b87fe19e639a8052183568be.html直接从第五步看,建议别关闭防火墙。

总结:总结下来,看似简单的问题,其实我还是折腾了好多天,而且感觉也不完善,总之还是多动手,多操作多时间,实际部署时候可能会遇到不同于我的问题,别着急,一步一步解决,网上资源挺多的。第一次写,主要也是本着一个开源的思想,大家相互分享,能够节省很多时间,希望对大家有帮助,不对的请指正。

其次说一下,你以为这样就完了,其实没有,当我在看我的网站的时候,其实啊,网站开始报错,多数是python的语法报错,因为我的django本来是在mac下完成的,其中就涉及到一些linux和windows之间的一些小差别,主要是路径问题。所以建议还是直接在linux服务器上部署,据说要简单好多,而且减少了后期调试的工作量。