热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Django]Window上通过IIS发布Django网站

网上的教程坑实在多,以下是本人亲测通过的:需要解决的问题:1.使用pythonmanage.pyrunserver来运行服务器,只适用测试环境中使用,正式发布的服务,需要一个可以稳定而

网上的教程坑实在多,以下是本人亲测通过的:

需要解决的问题:

1.使用 python manage.py runserver 来运行服务器,只适用测试环境中使用,正式发布的服务,需要一个可以稳定而持续的服务器。

2.部署在Windows服务器上

3. Django网站中的静态文件CSS、Font、Image、js 在本地服务器使用runserver指令可以完美加载,部署到IIS上后CSS失效、静态文件消失。

系统及软件版本:

Win 7

IIS 7.5

python 3.7

Django 2.1.7

wFastCGI

1.可运行的django网站

我创建的工程叫HelloWorld,目录如下

首先确保自己的django网站在服务器上可以通过命令行 runserver 正常运行。 

先在命令行切换到网站的根目录 D:\Automation_Develop_Work\HelloWorld

然后执行python manage.py runserver 0.0.0.0:8000

由于我的电脑上同时安装了python2和python3,而我搭建django环境用的是python3,所以需要用下面的这个命令:

py -3 manage.py runserver 0.0.0.0:8000

 

接下来就可以在浏览器中输入http://127.0.0.1:8000/admin/

(我事先按照这个教程:http://www.runoob.com/django/django-admin-manage-tool.html 创建了Admin管理工具):

 

 2.IIS安装和配置

安装IIS : https://www.microsoft.com/zh-CN/download/details.aspx?id=1038

在控制面板的程序和功能中,打开启用或关闭Windows功能窗口

勾选Internet Information Services下面所有的子目录,需要一个个的勾选

3.python安装wfastcgi模块

用 pip install wfastcgi 进行安装

由于我的电脑上同时安装了python2和python3,而我搭建django环境用的是python3,所以需要用下面的这个命令:

pip3 install wfastcgi

我的电脑上已经安装过了,没有保存之前的截图,下面的截图显示我已经安装过了。

4.项目文件处理

4.1 将项目文件拷贝到 C:\inetpub\wwwroot 目录下,方便管理,同时可以避免引起Windows Server的某些安全问题。 

4.2 在python的Lib\site-packages目录下,找到wfastcgi.py文件,并将其复制到你的django项目根目录下

我的机器是将 C:\Python37\Lib\site-packages\wfastcgi.py 拷贝到 C:\inetpub\wwwroot\HelloWorld\wfastcgi.py

5.配置网站

5.1 进入IIS管理器,添加网站

我的电脑-->右键-->管理-->Servies and Application-->Internet Information Services(IIS) Manager

 5.2 填写相关参数

5.3 进入你建立的站点,选择处理程序映射

请注意,必须进入你指定的网站里面,再添加模块映射,否则,映射会添加到你所有的网站里。

 

5.4 添加模块映射

 

模块选择FastCgiModule,如果第3步没有安装wfastcgi模块,请先安装哦。

可执行文件对于本项目来说,实际上是必填的。

此例中,C:\Python37\python.exe|C:\inetpub\wwwroot\HelloWorld\wfastcgi.py。前面是python的路径,后面是wfastcgi.py文件的路径。实际上,如果wfastcgi.py文件路径直接引用python\Lib\site-packages目录下的文件也可以,不过就不可以部署多个Django网站了。 

Name是可以自己随便填的,但是这个在后面的web.config中要用到,所以记住你这里填的是什么。

5.5 填写完参数后,选择请求控制,设置如图

5.6 确认添加后,程序映射添加成功 

 5.7 返回主页,进入FastCGI设置

 

 5.8 新建FastCGI应用程序,修改环境变量

 点击右侧的Add Application:

按照下图设置并点开Environment Variables右侧的那个小图标

 添加2个环境变量

     1.  get_wsgi_application()方法的位置

    Name: WSGI_HANDLER
    Value: django.core.wsgi.get_wsgi_application()

 

      2.   项目settings.py文件的位置

             Name: DJANGO_SETTINGS_MODULE

             Value: HelloWorld.settings(HelloWorld是自己的项目名称)

6 在网站根目录创建一个名为web.config的文件

此时文件目录如下:

web.config的文件内容如下:

 


    
      
      
      
    
    
        
            
        
    

红色标识的是需要照着配的,可能根据你自己的情况需要改一下。

DJANGO_SETTINGS_MODULE 的 value 里面 HelloWorld 是项目的名字

MyFastCgiModule 是在 IIS 配置时添加模块映射的名字

C:\Python37\python.exe|C:\inetpub\wwwroot\HelloWorld\wfastcgi.py 前面一截是python的路径,后面一截是项目中wfastcgi.py的路径,中间用竖线隔开

至此,一个不包含静态文件的Django站点部署完成

在别人的电脑上就可以通过你的IP地址访问这个网站了,但是这时候静态文件是丢失的状态,看不到样式这些,还继续处理静态文件的发布

7. 配置静态文件

7.1 在C:\inetpub\wwwroot\HelloWorld\HelloWorld\settings.py中配置STATIC_ROOT如下: 

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

注意:这里必须是 static ,必须和 C:\inetpub\wwwroot\HelloWorld\HelloWorld\settings.py 中 STATIC_URL = '/static/' 一致

7.2 收集静态文件

命令行跳转到项目目录: cd /d C:\inetpub\wwwroot\HelloWorld

执行命令 : python manage.py collectstatic

由于我的电脑上同时安装了python2和python3,而我搭建django环境用的是python3,所以需要用下面的这个命令:

py -3 manage.py collectstatic

此时会生成一个文件夹叫static

我是事先建了一个Admin管理工具,static下面会有一个admin的子文件

 admin文件夹下面有css,fonts,img,js

7.3 配置静态文件

在项目的static文件夹中新建一个名为web.config的文件

web.config的内容如下:



  
    
      
    
  

MyFastCgiModule 是在 IIS 配置时添加模块映射的名字

7.4 打开IIS管理器,选定该网站项目,右击选择添加虚拟路径

(刚验证了一下,好像这一步不需要)

7.5 填写虚拟路径的别名和路径

别名我填的是staticForHelloWorld

路径则是该网站static文件夹的路径,也就是刚才创建web.config的文件夹:C:\inetpub\wwwroot\HelloWorld\static

 重新运行一下IIS,应该就没有问题了

 


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 本文介绍了解决mysql 5.1启动问题的方法,通过修改my.ini文件中的相关配置,包括innodb_data_home_dir和skip-innodb等,可以解决启动问题。同时还介绍了如何调整内存池来存储metadata信息。 ... [详细]
author-avatar
感性的拉蕾啊拉蕾丶Renata
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有