Windows下django项目部署 通过Apache2.4+mod_wsgi
经过几天踩坑,记录在Windows10下通过Apache2.4部署Django项目的过程
运行环境:
先说下环境,怎么安装倒是其次的,版本很重要,我是根据mod_wsgi的版本要求下载的各个版本(python,Apache2.4)
mod_wsgi 下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
下面这张图说明python与Apache的版本:
版本信息:
Apache2.4VC14 64bit
Python 3.5.2-amd64
Django 2.2
MySQL 8.0.19
Apache2.4安装:
在Apache官网上找到对应的安装包
下载Apache2.4 VC14 地址:https://www.apachelounge.com/download/vc14/
打开httpd.conf文件(在Apache24/conf目录下)
Define SRVROOT "C:\web\Apache24"
Listen 80
ServerName www.example.com:80
DocumentRoot "C:\web\Apache24\htdocs"
<Directory "C:\web\Apache24\htdocs">
具体如何安装Apache不多说了,下面这几条常用命令还是说明一下:
httpd -k install -n #安装Apache服务
net start/stop Apache2.4 #启动停止Apache服务
sc delete Apache2.4 #删除Apache服务
httpd -k uninstall #卸载Apache
python-3.5安装:
本文略
Mysql-8.0.19安装:
本文略
下面具体讲述mod_wsgi相关配置:
在上述完成之后,Apache启动访问IP地址访问出现 It WORKS! ,开始部署。
在Django项目文件夹下建一个虚拟环境:
pip install virtualenv #下载virtualenv包
virtualenv 1_env #新建环境1_env
activate #须cd到\1_env\Scripts目录下运行activate
先将下载好的mod_wsgi-4.7.0+ap24vc14-cp35-cp35m-win_amd64.whl复制到Scripts目录
pip install "c:\djangomode\1_env\mod_wsgi-4.7.0+ap24vc14-cp35-cp35m-win_amd64.whl" #通过pip安装mod_wsgi
如果安装失败检测自己所下载对应的版本是否有问题,成功的话继续往下走;
mod_wsgi-express module-config #在刚才的环境里面运行命令,会得到两条配置信息,将信息拷贝下来,后面有用
两条像这样的配置信息:
LoadModule wsgi_module "c:/djangomode/1_env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"
WSGIPythonHome "c:/djangomode/1_env"
注:可能你们看过其他博主输出的是三条配置,不过不要紧,我们无需设置LoadFile "c:/python35/python35.dll
Django项目setting.py修改:
这里先说一下原因,setting配置相对路径信息在移到Apache与mod_wsgi运行时,相对路径会访问不了,需要修改为绝对路径。
在我修改为绝对路径时,运行Apache报了一个错
OSError: [Errno 22] Invalid argument: 'C:\\\\Djangomode\\templates\\\\500.html'\r
需要在文件路径前加上 r"filepath"
r"filepath":意思是指为了避免\xx是一个转义字符而导致的错误,也就是说加上r之后,""里的就不再出现转义字符,编程纯的文件地址。
TEMPLATES = [{
'DIRS': [r'C:\Djangomode\templates']
]
注:这里只描述一处,其余相对路径也需改成绝对路径并加上 r 。
在项目正式上线时必须将DEBUG设为False:
DEBUG = False
可指定主机,若元素为'*',表示所有同一局域网内的网络均可被访问:
ALLOWED_HOSTS = ['*']
配置Apache2.4的httpd.con文件:
DocumentRoot "C:\Djangomode" #Djangomode为项目根目录
<Directory "C:\Djangomode">
在文件底部加上下面代码(需根据实际环境更改参数)
##--------------- Django项目部署配置 ---------------##
LoadModule wsgi_module "c:/djangomode/1_env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"
WSGIPythonHome "c:/djangomode/1_env"
#指定项目的"wsgi.py"配置文件路径
WSGIScriptAlias / "C:\Djangomode\Djangomode\wsgi.py"
#指定Django项目根目录
WSGIPythonPath "C:\Djangomode"
<Directory "C:\Djangomode\Djangomode">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
#项目静态文件地址
Alias /static "C:\Djangomode\static"
<Directory "C:\Djangomode\static">
AllowOverride None
Options None
Require all granted
</Directory>
#项目上传文件根目录
Alias /uploads "C:\Djangomode\uploads"
<Directory "C:\Djangomode\uploads">
AllowOverride None
Options None
Require all granted
</Directory>
修改完之后重启Apache服务,Apache服务属性会被修改,如下图:
在浏览器上输入IP地址端口或主机域名访问Django项目,在httpd.conf中配置的主机域名ServerName
etc/hosts需加入域名如:
127.0.0.1 Djangomode
检查ip地址或域名是否正常,在cmd窗口输入ping如:
ping www.baidu.com #ping的通则正常
访问成功!祝贺自己,耶!
Windows下django项目部署 通过Apache2.4+mod_wsgi的更多相关文章
- Windows下Django项目搭建流程
1.创建虚拟环境 virtualenv test 2.进入虚拟环境 source ./项目名/Scripts/activate 3.创建项目 django-admin startproject 项目名 ...
- Django项目部署在Linux下以进程方式启动
Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...
- 使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址
生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...
- 在windows下使用jenkins部署docker容器
在windows下使用jenkins部署docker容器最近在学习jenkins,docker部署来实现集成部署,所以想在windows下面实现测试,但是发现在windows下docker支持不是很好 ...
- Django项目部署(django+guncorn+virtualenv+nginx)
一.说明 为了django项目部署到生产环境上,能够稳定的运行,且能够同时指出http和https的访问,对django的部署进行了一些研究,决定采用django + gunicorn + virtu ...
- django项目部署过程
django项目部署过程 1.上传代码 用git或者其他工具,如scp 代码上传后保证每个应用下的migrations文件夹里只有一个__init__.py文件,自己的迁移文件不要上传上来,具体的gi ...
- RabbitMQ消息队列系列教程(二)Windows下安装和部署RabbitMQ
摘要 本篇经验将和大家介绍Windows下安装和部署RabbitMQ消息队列服务器,希望对大家的工作和学习有所帮助! 目录 一.Erlang语言环境的搭建 二.RabbitMQ服务环境的搭建 三.Ra ...
- Django项目部署到Apache服务器上
之前写了把Django部署到XAMPP上,但是有bug,翻apache日志的时候发现会无法import _ssl,然后我就怒而直接装apache2了 配置方法大约和这篇文章差不多 安装必要的包 sud ...
- django 项目部署在 Apache 后, 设置二级域名(Apache虚拟主机 、 万网二级域名设置)
上一篇文章简单说了怎么把django的项目部署到Apache上. 现在想弄个二级域名,也就是我原来有个域名 www.mysite.com,现在我想弄个 bbs.mysite.com ,该怎么做呢. 要 ...
随机推荐
- 关于Android Studio中使用jni进行opencv配置开发环境的要素秘诀
使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到 ...
- 6.1 接口 - 6.3 lambda表达式
6.1 接口 接口概念 接口是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义.设计目的是解决多继承的问题 接口中所有方法时 public 不用现实声明 java.lang.Comparab ...
- C语言利用结构体数组实现学生成绩管理系统
这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...
- Entity Fremework以及Fluentapi学习
一.Entity Framework的入门 我这里采用的方式是数据库自己建立 然后模型类自己建立 数据库上下文类自己建立的方式 目的在于弄懂原理 其他的数据库优先等方式这里就不写了 教程有很多. ...
- Statistical physics approaches to the complex Earth system(相关系统建模理念方法的摘要)
本文翻译自"Statistical physics approaches to the complex Earth system",其虽然是针对复杂地球系统的统计物理方法的综述,但 ...
- Spark Shuffle机制详细源码解析
Shuffle过程主要分为Shuffle write和Shuffle read两个阶段,2.0版本之后hash shuffle被删除,只保留sort shuffle,下面结合代码分析: 1.Shuff ...
- spring-cloud-config 多服务共享公共配置的解决方案总结,太全了!
问题描述 我们公司的项目是基于SpringCloud开发的微服务,用到了Spring-Cloud-Config作为微服务统一的配置中心,可以将散落在各个服务的配置进行统一配置管理. 虽然配置中心将各个 ...
- 使用GitHub API上传文件及GitHub做图床
本文介绍GitHub API基础及上传文件到仓库API,并应用API将GitHub作为图床 GitHub API官方页面 GitHub API版本 当前版本为v3,官方推荐在请求头中显示添加版本标识. ...
- docker生产——容器通信
简介 在接触docker的第一天起,大家应该就知道:docker容器使用沙箱机制,相互之间没有接口,一般情况下内部访问通过IP+端口.本地容器默认分配的IP极易发生变化,所以靠IP+端口访问的方式缺失 ...
- java的for循环中遇到异常抛出后继续循环执行
@Testpublic void loopTryCatchTest() throws Exception { Map<String, Object> a = new HashMap(); ...