设为首页 收藏本站
查看: 1632|回复: 0

[经验分享] 部署Django + Apache + mod

[复制链接]

尚未签到

发表于 2017-12-25 07:26:53 | 显示全部楼层 |阅读模式
  最近学习了Django,语法学的差不多了.最后想搭建一个服务器以访问网站.
  网上看了很多方案,但是有很多方案都不适合在windows在部署,或者就是Python版本太老


  • nginx + uwsgi  (其中uwsgi不兼容windos)
  • IIS + PyISAPIe(Python2.7) 太老.
  • IIS + FASTCGI (IIS过于难配置)
  其中stackoverflow说的很好.唯一也是最有效的方式就是 apache+mod_wsgi
  

Best way (IMHO) is using apache+mod_wsgi.  
Both uWSGI and Gunicorn are not windows
-friendly (albeit uWSGI has cygwin support,  
so you can eventually
try it [if you are brave enough])  

  感兴趣的可以去看 链接

坑点描述


  •   如果选择Python2.7+64位,是无法直接使用mod_wsgi的,需要自己用VS编译,太痛苦也没必要,还不如换成Python2.7+32位。

  •   特别注意python的版本(2.7、3.4、3.5等)及是32位还是64位的。以及Apache是2.2还是2.4版本。常规的搭配是:Python2.7/32+apache2.*,Python3.4/64+apache2.4。不推荐Python2.7 64版。

  •   无法使用uwsgi。因为其使用了uname函数,而它无法在Windows运行。因此要想用 Windows + Nginx +Python的方式不太靠谱。

  •   Django官方在1.6之后,不再推荐使用fcgi模式,推荐使用 wsgi。在1.10之后放弃支持 fcgi。

  •   如果要使用pip需要编译安装一些Python包,需要安装微软提供的Python开发包软件,一个针对Python的Virtual C++套件。

  •   如果是直接用别人编译好的Mod_wsgi.so文件,需要注意版本。VC9、VC10是不同的。

  •   最后,还是建议不要在Windows里部署,实在太麻烦了,坑很多。BSD或Linux下会方便很多。

最后采用的环境如下

  Pyhton3.5 下载链接
  Apache 2.4.25 x64 下载链接
  Django 1.10.6 (使用pip安装Django,略过)
  mod_wsgi 下载链接


过程

1.安装Python
  这一步最是简单,pyhon在官网直接有下载.
  (针对服务器,我选择直接使用Windows x86-64 web-based installer)

  如果选择3.4版本,只提供源码包.我也因此不选用python3.4,麻烦!!!



  • 另外Django推荐在windows上使用虚拟环境 链接
  • 方法

    • 安装 virtualenv and virtualenvwrapper  


      • pip install virtualenvwrapper-win   注:说是两个,一条命令就解决了

    • 为你的项目创建虚拟环境:  


      • mkvirtualenv myproject     注:myproject  为自定义的环境名 ,此命令之后就已经进入

    • 如果之后退出了命令行.cmd命令重新进入命令行  


      • cd C:\Users\Administrator\Envs 注:该目录下可看见’myproject’
      • workon myproject 注:重新


2.Django (采用虚拟环境,之后Apache配置的也是Python虚拟环境)
  虚拟环境中,使用pip安装Django,我安装的版本是1.10.6


  •   pip installs Django   

  •   开始一个你的Django项目,

  • 部署在生产环境,在setting.py文件  别忘记关闭DEBUG模式 还有ALLOWED_HOSTS其中‘*’表示不指定特定的host,就是全部的意思啦

  

DEBUG = False  
ALLOWED_HOSTS
= ['*']  

  

  

3.mod_wsgi下载
  首先引用其他博主的描述,源码编译实在太麻烦了
  直接使用别人上传的编译后的whl包
  

官网给出的mod_wsgi安装方法比较麻烦,而且很容易出错(Tips:我没有编译成功T_T)  

  
不过,在网上已经有人上传了编译后的whl包,可以在
  
http:
//www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi中找到  


注意我这里Apache采用VC14编译,这里也选用VC14的版本,然后根据系统选择:32/64
  下载地址
  http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
  命令行中,cd  到下载的目录,使用pip编译/安装
  pip install mod_wsgi-4.4.23+ap24vc14-cp35-cp35m-win_amd64.whl
  pip命令完成之后进入我们的python虚拟环境(为什么是虚拟环境中找?上面有提到)
  可以看见 mod_wsgi.so,这个文件在Apache服务器中需要用到
  17年4月17日更新
  .so文件的方式已经不成功
  之后运行
  mod_wsgi-express module-config
  输出如下
DSC0000.jpg

  注意这两句话,之后会用到
  

LoadFile "c:/users/administrator/appdata/local/programs/python/python35/python35.dll"  
LoadModule wsgi_module
"c:/users/administrator/envs/mode_env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"  

  注:此时更新的环境名为mode_env
DSC0001.jpg


4.Apache服务器
  下载链接
  ,这里我选用x64是因为系统是x64
  这里献上Apache的命令用法 http://www.nanerbang.com/article/50/

选用的Apache是VC14编译的.对应上文,mod-wsgi也必须是VC14编译)


  • 将之前的mod_wsgi.so文件拷贝到Apache24的modules目录下  


    • 例如我的目录是 :D:\LHServer\httpd-2.4.25-x64-vc14-r1\Apache24\modules,可以看见该目录下有很多.so结尾的文件.就没错了

  • 进入Apache的bin目录  


    • D:\LHServer\httpd-2.4.25-x64-vc14-r1\Apache24\bin

  • 进入Apache/conf目录,修改httpd.conf文件 步骤很多

    • 修改:引号中”“的为Apache的地址  


      • Define SRVROOT "D:\LHServer\httpd-2.4.25-x64-vc14-r1\Apache24"

    • 设置监听的端口和地址.我这里的端口是9022  


      • Listen 0.0.0.0:9022

    • 阿什顿
    • 设置服务器地址 我公司的服务器地址为120开头,端口为9022  


      • ServerName 120.x6.7x.8x:9022

    • 在最后添加以下字段,这里可参考官方文档How to use Django with Apache and mod_wsgi

  

#4月17日更新  
#删去:LoadModule wsgi_module modules/mod_wsgi.so
  
#删去:WSGIPythonHome C:/Users/Administrator/Envs/apache_env#
  
#导入之前mod_wsgi.so文件
  
LoadModule wsgi_module "c:/users/administrator/envs/mode_env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"
  
#新的WSGIPythonHome地址
  
WSGIPythonHome "c:/users/administrator/envs/mode_env"
  

  

  

  

  
#Django项目中wsgi.py的路径
  
WSGIScriptAlias / D:/LHServer/MyServer/MyServer/wsgi.py
  

  

  

  
#Django项目的路径
  
WSGIPythonPath D:/LHServer/MyServer
  

  
#配置wsgi.py的访问权限
  
<Directory D:/LHServer/MyServer/MyServer>
  
<Files wsgi.py>
  
Require all granted
  
</Files>
  
</Directory>
  

  


最后. 将Apache添加为系统服务,


  • httpd -k install
启动Apache
  

- `httpd -k start`  

  

访问失败的问题

在局域网中访问:
  需要在防火墙打开9022的端口

外网访问:


  • 在防火墙打开9022的端口
  • 在路由器中添加端口映射
至此,Django with Apache + mod_wsgi on Windows server 2008r2教程基本完毕

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427698-1-1.html 上篇帖子: apache server和tomcat集群配置二:垂直负载 下篇帖子: apache进程和用户请求的关系
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表