windows下部署django项目

一、iis+wfastcgi

1. 安装wfastcgi

pip install wfastcgi

 

2. 启用wfastcgi

使用管理员权限打开cmd,输入如下命令:

wfastcgi-enable

该命令会输出如下信息:

C:\Windows\system32>wfastcgi-enable
已经在配置提交路径“MACHINE/WEBROOT/APPHOST”向“MACHINE/WEBROOT/APPHOST”的“system.webServer/fastCgi”节应用了配置更改
"c:\users\funway\appdata\local\programs\python\python36\python.exe|c:\users\funway\appdata\local\programs\python\python36\lib\site-packages\wfastcgi.py" can now be used as a FastCGI script processor

表示已经在iis配置了wafstcgi,其执行命令是…\python.exe …\wfastcgi.py。这一行留着后面需要用到。

3. 配置网站的web.config

在项目的根目录(即manage.py文件所在目录)下新建一个web.config文件。模板如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="Python FastCGI"
           path="*"
           verb="*"
           modules="FastCgiModule"
           scriptProcessor="c:\users\funway\appdata\local\programs\python\python36\python.exe|c:\users\funway\appdata\local\programs\python\python36\lib\site-packages\wfastcgi.py"
           resourceType="Unspecified"
           requireAccess="Script" />
    </handlers>
  </system.webServer>

  <appSettings>
    <!-- Required settings -->
    <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
    <add key="PYTHONPATH" value="D:\Project\send_report" />

    <!-- Optional settings -->
    <add key="WSGI_LOG" value="D:\Project\send_report\wsgi.log" />
    <add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" />
    <add key="DJANGO_SETTINGS_MODULE" value="backend.settings" />
    <!-- <add key="APPINSIGHTS_INSTRUMENTATIONKEY" value="__instrumentation_key__" />
    <add key="WSGI_PTVSD_SECRET" value="__secret_code__" />
    <add key="WSGI_PTVSD_ADDRESS" value="ipaddress:port" /> -->
  </appSettings>
</configuration>

其中需要修改的地方有:

scriptProcessor项,填上步骤2中wfastcgi-enable输出的路径

PYTHONPATH项,为项目的根目录

WSGI_LOG项,wfastcgi的日志文件路径

DJANGO_SETTINGS_MODULE项,django项目的配置文件settings.py的模块路径(即比如该文件路径为./mysite/settings.py,那么就要写作mysite.settings)

 

PS:我在标准模板中注释掉了APPINSIGHTS_INSTRUMENTATIONKEY、以及PTVSD三行。

APPINSIGHTS_INSTRUMENTATIONKEY这是为微软AZURE云平台的Application Insights服务准备的,如果要启用ApplicationInsights的话,除了要配置这个key,还需要额外pip install applicationinsights模块。由于我们并不需要用到这个服务,所以完全可以把这一行删除。

两个PTVSD配置是为 Visual Studio的远程调试准备的,我们也不需要。

4. 在IIS中新建网站

(注意IIS安装时候的“应用程序开发功能”选项中必须开启ASP、ASP.NET 4.7、CGI功能)

将网站路径指向项目根目录即可,其他配置用默认值。

5. 添加IIS_IUSERS用户组的权限

默认情况下,IIS_IUSERS用户组是没有对python安装目录的读写权限的,这时候iis就无法执行python程序。直接访问刚刚配置好的网站会提示500错误:

所以我们需要给python所在的目录(C:\Users\yourname\AppData\Local\Programs\Python)添加IIS_IUSERS用户组的读取与执行权限。

6. 静态文件配置

配置好后,再次访问网站,py被执行了。但是网站无法返回静态资源文件:

为了解决这个问题,只需要在静态文件所在的目录下添加一个web.config文件,说明不使用在步骤3中的web.config里添加的Python FastCGI解释器即可。

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

 

之后,再次使用浏览器访问项目网站就都正常了。

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top