在windows 2008 server 的IIS 7上运行 django 1.11 + python 3.6

原创 2017年04月19日 18:33:27

缘起

使用django开发了一个项目,客户的技术体系是全栈window的,所以要求我们提供把项目部署到windows服务器的服务。

写这个原因是旧的在 windows 上运行python网站程序的文档,基本上全过时了。

从macOS登陆windows服务器

嗯,需要安装 Microsoft Remote Desktop,版本是 8.0.x。需要注意的是微软官网的下载链接是直接链接到app store,而该App在中国区不上架,所以下载不了。最后解决问题是同事在网上找到了个下载版。

登陆的时候,还有一个要注意的就是在配置的session那里勾选Connect to admin session。也许只是用Administrator账号登陆的话才需要,我没试其它账号。

注:MS Office 2011 for Mac 自带的那个RDC不行了,版本2.1.x的,一登陆就证书不对之类的,是登陆不上去的。

安装 Python

这个很容易,直接在python官网下载就行,我下载的是64位的版本,因为是64位的机器,需要往下拉一下页面才能找到,直接点Download按钮下载的是32位的。

安装的时候,有两个地方要特别注意,一是要勾选Add to PATH,二是一定要把它安装到没有空格的路径下,比如c:\python36,不要使用默认的c:\Program files\python36,你在后面会被折腾死,我不会告诉你我浪费了一天的时间,最后重装python解决的。

安装 wfastcgi

windows上跑django或其它python网站程序,用IIS是最正确的,使用 apache/nginx会更加难管理。但是IIS不支持wsgi,而django自1.7起就弃用了fastcgi,在1.9的时候更是删除了,所以我们编写的网站程序无法直接跑在IIS上,因为我们用的是1.11版本,太新了。

wfastcgi是当前唯一、唯一、唯一可用可靠的把wsgi桥接到fastcgi的方案,之前花好几天看到的,基本上都过时了,那些基本django1.2/1.4版本写的文章,丢掉吧,别看了,完全没有用处。github上有个django-windows-tools的项目,也过时了,七八年前的了,别看了;也有一篇相关的文章,Installing Django on IIS: A Step-by-Step Tutorial流毒甚广,别看了。那些带有PyISAPIeisapie-wsgi字样的,统统都不靠谱,见到就闪吧。

wfastcgi感觉生命力会长久一些,因为它其实出自微软自身,根正苗红,也有Azure云计算的需要。开发它的团队是Python Tools for Visual Studio的那帮人,实力强劲。

安装好python以后,开个Power Shell新窗口,运行pip install wfastcgi就可以安装成功了。然后再运行一下wfastcgi-enable命令启用它即可,成功运行后,会输出一个目录,告诉你可以把它加到配置文件(稍后讲)。

安装 git

当然了,首先要把项目的代码 clone 到本地。需要安装git,具体用法就不说了。不过安装的时候,有一个很重要的点,就是问你要使用哪个加密库。默认是使用 OpenSSL,我是原生党,所以改选了使用有windows native字样的那个,结果后来使用 git 的时候,验证账号密码一直出错,坑死爹爹了。切记这里不要乱选了。

在这里说一下题外话,安装git的时候,可以把跟Cygwin相关的选项取消掉,使用GOW即可,非常好用,基本上常用的命令都有了,安装GOW之后,在Power Shell中用起来感觉跟在macOS的终端下的体验有得一拼。官网:https://github.com/bmatzelle/gow ,支持的命令列表:https://github.com/bmatzelle/gow/wiki/executables_list 。嗯,32个赞。

代码一定要用 manager.py runserver本地跑一下啦,只要依赖的包装好了,一般而言是没有问题的。然后可以进入下一步。

配置 web.config

IIS中新建一个网站,把域名分配过去就好。然后在manager.py的同级目录新建一个文本文件web.config,里面的内容有个模板可以套:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <handlers>
                <add name="Python FastCGI" 
                     path="*" 
                     verb="*" 
                     modules="FastCgiModule" 
                     scriptProcessor="<Path to Python>\python.exe|<Path to Python>\lib\site-packages\wfastcgi.py" 
                     resourceType="Unspecified" 
                     requireAccess="Script"/>
            </handlers>
        </system.webServer>
        <appSettings>
            <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
            <add key="PYTHONPATH" value="<Path to Django App>" />
            <add key="DJANGO_SETTINGS_MODULE" value="<Django App>.settings" />
        </appSettings>
    </configuration>

scriptProcessor的值,要改为前文说过的运行wfastcgi输出的那个值。PYTHONPATH的value要改为manager.py的那个目录,也就是你项目的根目录。DJANGO_SETTINGS_MODULE的value中的<Django App>要改为你的项目名。

然后重启一下你的网站,域名没有错的话,应该就可以访问了。

嗯,就是这么简单,这么霸道。但我不会告诉你我找资料的那240个小时的。

如果你看到页面没有css样式了,应该是找不到静态文件,执行一下manager.py collectstatic应该就好了。

另外,为了让静态文件的处理不经过Python这一层,建议往staticmedia目录下各放一个web.config文件,内容都是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="Python FastCGI" />
    </handlers>
  </system.webServer>
</configuration>

记得如果你改过最前面的web.config文件中的name值,这里也要对应。这样就可以在获取静态文件的时候快一点了。

参考:

  1. https://pypi.python.org/pypi/wfastcgi
  2. http://kronoskoders.logdown.com/posts/1074588-running-a-django-app-on-windows-iis
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IIS8部署Django项目

之前和同伴使用Django做了一个小网站,想将这个网站部署到真实的生产环境中,测试稳定性与可用性,于是租用了一个云服务器,并将Django部署到上面的IIS中。...

IIS7部署django网站指南

运行环境:    windows Server 2008 R2 Enterprise (64位)    IIS 7.5     IIS 6.0 兼容性管理    SQL Server 2005...
  • omage
  • omage
  • 2012年03月08日 14:46
  • 2784

在iis上部署django时遇到的问题

作为初次写带后端网页的萌新,一头扎进了iis的坑不能自拔╮(╯▽╰)╭。可现在用iis的人真的少(毕竟apache大法好),很多教程并不好用,部署django的脚本在我这边永远报错,还好找到一篇手动配...
  • ciefer
  • ciefer
  • 2016年12月17日 19:27
  • 414

iis+django 三种方案都运行不了

我使用的是以下几个方案在iis上运行django:1 pyISAPIe+django,事实上,可能这个是比较好的选择,但是我从官方网站上下载的 pyisapie.dll 是用Microsoft vis...
  • huyoo
  • huyoo
  • 2009年12月29日 20:46
  • 2834

呵呵!手把手带你在 IIS 上运行 Python

如何在 IIS 上运行 Python 文件。其实,很简单。以截图的方式,一步步的展示搭建方式!(一次成型 没有掩饰)...

Running Python CGI Scripts on IIS(Windows操作系统,在IIS上运行Python)

Insure you have IIS. run: %windir%\system32\OptionalFeatures.exe. Or, via pointy-clicky: Start...Co...

Win7下IIS中配置Python脚本运行环境

 1、安装Python和IIS 2、打开IIS,在IIS中选中需要配置Python的站点      3、在功能视图中打开“处理程序映射” 4、在操作区点击或者右键选择“添加脚本映射...

最新版windows 2012R2、Apache24、mod_wsgi、Django1.9、python3.4项目部署(生产环境)

感慨一句,历经千辛万苦终于在腾讯云windows2012R2服务器上部署了Django个人博客。话不多说,大家先看看效果。Django个人博客 个人 心得:第一次在wondows服务器上部署Djang...

win7下搭建IIS7+Django开发环境

整合IIS7+Django开发环境

win7下安装Django1.11,并创建简单项目运行

最近在捣鼓python3,发现在安装Django的时候有比较方便的办法,于此记下: 假设,你已安装好了python3.x(可以在命令行运行python  -V或者python查看python版本与是否...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在windows 2008 server 的IIS 7上运行 django 1.11 + python 3.6
举报原因:
原因补充:

(最多只允许输入30个字)