Apache如何部署django项目


Posted in Python onMay 21, 2017

在此之前,我们一直使用django的manage.py 的runserver 命令来运行django应用,但这只是我们的开发环境,当项目真正部署上线的时候这做就不可行了,必须将我们的项目部署到特定的web服务器上。

安装apache

Apache是非常有名的web服务器软件,如果想让我们web项目运行几乎离不开它。

Apache官方网站:http://httpd.apache.org/

根据自己的环境,选择相应的版本进行下载。apache 官网没有windows 64位版本,可以通过下面的链接进行下载:win7 64位:http://www.apachelounge.com/download/win64/

下载安装完成,apahche的目录结构如下:

Apache如何部署django项目

修改conf/httpd.conf文件:

……
ServerRoot "D:/pydj/Apache24"
……
Listen 127.0.0.1:8089  #修改端口号
……
ServerName www.example.com:8089  
……
DocumentRoot "D:/pydj/Apache24/htdocs"
<Directory "D:/pydj/Apache24/htdocs">
……
ScriptAlias /cgi-bin/ "D:/pydj/Apache24/cgi-bin/"
……
<Directory "D:/pydj/Apache24/cgi-bin">
  AllowOverride None
  Options None
  Require all granted
</Directory>
……

主要就是路径和端口号的修改,如果你在启动apache的httpd.exe程序时一闪就没了,请检查这些配置。

启动bin/httpd.exe程序

通过浏览器访问:http://127.0.0.1:8089/

Apache如何部署django项目

现在可以说明apache工作是正常的了。 

安装mod_wsgi

The aim of mod_wsgi is to implement a simple to use Apache module which can host any Python application which supports the Python WSGI interface. 

The module would be suitable for use in hosting high performance production web sites, as well as your average self managed personal sites running on  web hosting services.

(mod_wsgi的目的是实现一个简单的使用Apache模块可以举办任何Python应用程序支持Python的WSGI接口。该模块将适用于主机的高性能生产的网站,以及一般的自我管理个人网站的网页寄存服务运行。)直接google翻译的,凑合的大概理解是干啥用的。

mod_wsgi网站:http://code.google.com/p/modwsgi/

下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

如win7 64位、python 2.7.6、apache(httpd-2.4.10)对应版本为:mod_wsgi-3.5.ap24.win-amd64-py2.7.zip

解压之后将得到一个mod_wsgi.so 文件,将其拷贝到Apache24\modules\ 目录下。

配置apache和django项目

因为你的目录一定和我的一样,所以,我再强调一下我的目录:

apache 存放目录:D:\pydj\Apache24

django项目目录:D:\pydj\myweb

再次打apache的配制文件httpd.conf:

……
#添加mod_wsgi.so 模块
LoadModule wsgi_module modules/mod_wsgi.so
#指定myweb项目的wsgi.py配置文件路径
WSGIScriptAlias / D:/pydj/myweb/myweb/wsgi.py
#指定项目路径
WSGIPythonPath D:/pydj/myweb

<Directory D:/pydj/myweb/myweb>
<Files wsgi.py>
  Require all granted
</Files>
</Directory>

上面的路径,请根据自己的实际情况进行修改。

下面配置myweb/wsgi.py文件:

……
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myweb.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

在我们生成djnago项目时这些信息已经自动生成,其实我们不用对其做任何修改。

打开settings.py文件添加:

……
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

再次启动Apache24/bin/httpd.exe程序

通过浏览器访问:http://127.0.0.1:8089/

Apache如何部署django项目

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 图片验证码代码
Dec 07 Python
如何搜索查找并解决Django相关的问题
Jun 30 Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 Python
利用Python如何生成便签图片详解
Jul 09 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 Python
聊聊python中的异常嵌套
Sep 01 Python
Python中random模块常用方法的使用教程
Oct 04 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
python中的列表和元组区别分析
Dec 30 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
Python借助with语句实现代码段只执行有限次
Mar 23 Python
python使用mysql数据库示例代码
May 21 #Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 #Python
Python学习小技巧之利用字典的默认行为
May 20 #Python
Python学习小技巧之列表项的排序
May 20 #Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 #Python
Python yield 使用方法浅析
May 20 #Python
Python学习小技巧之列表项的拼接
May 20 #Python
You might like
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php中的时间显示
2007/01/18 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
PHP 验证码的实现代码
2011/07/17 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
JS trim去空格的最佳实践
2011/10/30 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
pandas 层次化索引的实现方法
2019/07/06 Python
python 装饰器重要在哪
2021/02/14 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
药剂专业学生求职信范文
2013/12/28 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
环保项目建议书
2014/08/26 职场文书
加薪通知
2015/04/25 职场文书