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

一、配置环境:

1.Python版本3.7

2.服务器平台:windows10

3.django版本1.11.20

二.Apache下载与配置

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

到这里就可以下载相应的版本了,我选择的是Apache 2.4.39 x64为版本(根据需求选择)

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

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

3.配置apache服务器文件:

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

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

...

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

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

此处可用ctrl+f查找。

4.创建apache服务

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

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

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

创建成功后,进入服务器管理器,可看到如下

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

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

三.配置Django

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

这里还有种情况,是下载之后找到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\Python37\Scripts。cd进入该路径,命令行输入

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

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

mod_wsgi-express module-config

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

 LoadFile "c:/users/hisoft/appdata/local/programs/python/python37/python37.dll"
2 LoadModule wsgi_module "c:/users/hisoft/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
3 WSGIPythonHome "c:/users/hisoft/appdata/local/programs/python/python37"

至此,mod_wsgi安装成功。

2.配置django项目

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

 #安装wsgi模块后,出来的三行字符,直接复制过来
 LoadFile "c:/users/hisoft/appdata/local/programs/python/python37/python37.dll"
 LoadModule wsgi_module "c:/users/hisoft/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
 WSGIPythonHome "c:/users/hisoft/appdata/local/programs/python/python37"
 #设置工程中的wsgi路径
 WSGIScriptAlias / D:\gxyd\广西移动自动化\Python+selenium\zdhpt\zdhpt\wsgi.py
 #设置工程路径
 WSGIPythonPath D:\gxyd\广西移动自动化\Python+selenium\zdhpt
 #设置wsgi路径
 <Directory D:\gxyd\广西移动自动化\Python+selenium\zdhpt\zdhpt>
     <Files wsgi.py>
         Require all granted
     </Files>
 </Directory>
 #设置静态文件路径
 Alias /static D:\gxyd\广西移动自动化\Python+selenium\zdhpt\static
 <Directory D:\gxyd\广西移动自动化\Python+selenium\zdhpt\static>
     AllowOverride None
     Options None
     Require all granted
 </Directory>

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

输入url,http://10.185.18.21:8080/test_suite_list/

大功告成!

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

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

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

Django项目是自带后台管理的,本来的页面是很漂亮的:

在安装了Apache服务器并发布项目到Apache上以后,非后台管理页面都正常显示,然而,后台管理页面却成了这个鬼样子:

了解了一下发现是后台管理的CSS样式丢失。现在已经把这个问题解决了。平台:Python3.7, Apache2.4,Django1.11.20

解决步骤如下:

在Django项目目录下的settings.py文件中加入:STATIC_ROOT = os.path.join(BASE_DIR, "static")

然后再项目根目录下打开windows命令行工具,执行命令:python manage.py collectstatic。这个命令会把后天管理的CSS文件全部拷贝到一个项目下的文件中,文件目录会在执行完以后提示。

样式的问题解决了,但是用runserver方式启动平台的话会发现在前台访问不到服务器的静态资源如图片等,所以我又把它注释掉了  注意用runserver方式的话:
 STATICFILES_DIRS = [

     os.path.join(BASE_DIR, 'static')

 ]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
不能同时存在,写了一个要把另一个注释掉,不然会报错

用Apache服务方式执行selenium 测试 浏览器不显示解决方法:

原因:因为Apache是用windows installer 安装成 windows的服务了,那么Apache是一个后台服务,所以跑selenium case 的时候不显示浏览器

解决办法:

Step 1.找到apache2.4,右键菜单,执行停止; 右键菜单 “属性” 启动类型 选择“禁用”  点击 应用,点击确定。(这一步目的:让Apache2.4不再以windows 服务的方式在后台运行)

Step2. 直接双击运行D:\Apache24\bin下的httped.exe这种方式来启动Apache

问题解决了。

在windows上用apache+mod_wsgi服务部署django项目的更多相关文章

  1. linux上使用nginx、uwsgi部署django项目

    参考:CentOS7下部署Django项目详细操作步骤 注意事项: 在虚拟环境中操作,虚拟环境中安装nginx.uwsgi,虚拟环境外需安装uwsgi -- 临时关闭防火墙:systemctl sto ...

  2. Win7环境下Apache+mod_wsgi本地部署Django

    django基础已经掌握的同学可以尝试将项目发布已寻找些许成就感,以鼓励自己接下来进行django的进阶学习 以前你总是使用python manage.py runserver进行服务启动,但是却不知 ...

  3. ubuntu服务器上用Nginx和Uwsgi部署django项目

    开发环境:ubuntu系统,python3环境 django项目目录: fast_foot 为项目根目录,app为项目应用 现在,我们登陆远程服务器 安装Nginx 安装好了,我们看一下nginx的配 ...

  4. windows下apache + mod_wsgi + python部署flask接口服务

    windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...

  5. Windows上为Apache配置HTTPS

    Windows上为Apache配置HTTPS   转 https://www.cnblogs.com/tianzijiaozi/p/7582671.html   1. 安装OpenSSL: Windo ...

  6. mac osx 上面部署Django项目 apache+mysql+mod_wsgi

    1.安装Xcode command line tools 首先,编译mysql和Homebrew需要用到Xcode command line tools,所以首先安装command line tool ...

  7. windows上安装apache python mod_python

    综述:   windows上安装apache python mod_python的例子.教程甚至图解都不少:但作为新手还是会出错,而且一时无法快速排解. 在此笔者将根据自己的实践经验,给出几个需要注意 ...

  8. Windows的 IIS 部署django项目

    Windows的 IIS 部署django项目 1.安装Windows的IIS 功能(win10为例): (1)进入控制面板  :选择大图标    进入程序和功能 (2)启用或者关闭Windows功能 ...

  9. 云服务器上利用Docker部署Django项目

    转载别人的,请看下面链接 云服务器上利用Docker部署Django项目

随机推荐

  1. WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研

    大家好,本文整理了现代图形API的技术要点,重点研究了并行和GPU Driven Render Pipeline相关的知识点,调查了WebGPU的相关支持情况. 另外,本文对实时光线追踪也进行了简要的 ...

  2. Pyhton表白代码——浪漫圣诞节

    圣诞节即将到了,所以这回通过turtle模块来编写一个表白的小程序 开发时间:2019-12-15 开发工具:Sublime 开发模块:turtle 这里用到了turtle库的相关知识,如果不熟悉可以 ...

  3. yuv和yCbCr的差异

    一.和rgb之间换算公式的差异 yuv<-->rgb Y'= 0.299*R' + 0.587*G' + 0.114*B' U'= -0.147*R' - 0.289*G' + 0.436 ...

  4. Redis第二讲【Redis基本命令和五大数据结构】

    [二.Redis基本命令和五大数据结构] redis的基础知识和命令 redis 是一个单进程(包装epoll函数来对读写事件进行相应) 默认有16个数据库,初始使用的数据库为0号库 默认端口为637 ...

  5. 【JS】341- 移动端滚动穿透的6种解决方案

    前言 相信能看到这篇文章的你,已经是遇到了这个问题.我就不gif展示问题效果了. 鉴于此问题是面试的常客,故特地针对滚动穿透这个疑难杂症,整理了六个解决方案. 各方法操作难易不同,分别针对弹层和bod ...

  6. Python流程控制之分支结构

    目录 if/else结构 多重if结构 嵌套if结构 练习 if/else结构 if如果,else否则 # java if(){ }else{ } # python if 条件: 语句 else: 语 ...

  7. LNMP-Nginx负载均衡

    Nginx负载均衡介绍 Nginx提供负载均衡的模块upstream,这个模块是默认的,不需要重新编译模块.通常情况下,负载均衡一般用于后端两台机器同时提供服务供用户访问,但是用户经常访问的其中一台服 ...

  8. Java内存大家都知道,但你知道要怎么管理Java内存吗?

    前言 深入研究Java内存管理,将增强你对堆如何工作.引用类型和垃圾回收的认识. 你可能会思考,如果你使用Java编程,关于内存如何工作你需要了解哪些哪些信息?Java可以进行自动内存管理,而且有一个 ...

  9. .net下DllImport的一个小问题

    最近搞几个PInvoke几个DLL, 在.net 2.0下木有问题, 跑的很好 如下: [DllImport( "tjo.dll" )] private static extern ...

  10. 在 VSCode 中 Angular 的字符串报错的问题

    使用 Angular 时,报错 [tslint] " should be ' 报错原因是因为 ESLint 的严格模式,限制了使用 ' ,甚至多一个空格都会报错. 我们只需要在 settin ...