Python web如何在IIS发布应用过程解析

作者:学习虾 时间:2022-10-17 16:02:51 

Python web应用想要发布使用iis发布有两种方式,这篇文章就为大家介绍一下这两种方式的具体实现:

1.配置HttpPlatform程序

HttpPlatform 模块将套接字连接直接传递到独立的 Python 进程。 借助此传递可根据需要运行任何 Web 服务器,但需要用于运行本地 Web 服务器的启动脚本。 在 web.config 的 <httpPlatform> 元素中指定脚本,其中 processPath 属性指向站点扩展的 Python 解释器,arguments 属性指向脚本和希望提供的任何参数:


<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
 <handlers>
  <add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
 </handlers>
 <httpPlatform processPath="c:\python36-32\python.exe"
        arguments="c:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
        stdoutLogEnabled="true"
        stdoutLogFile="c:\home\LogFiles\python.log"
        startupTimeLimit="60"
        processesPerApplication="16">
  <environmentVariables>
   <environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
  </environmentVariables>
 </httpPlatform>
</system.webServer>
</configuration>

此处显示的 HTTP_PLATFORM_PORT 环境变量包含端口,本地服务器使用该端口侦听来自 localhost 的连接。 此示例还演示如何根据需要创建其他环境变量,本示例中为 SERVER_PORT。

关于httplplatform的更多描述可以参考

https://docs.microsoft.com/en-us/iis/extensions/httpplatformhandler/httpplatformhandler-configuration-reference

2.配置 FastCGI 处理程序

FastCGI 是在请求级别工作的接口。 IIS 接收传入的连接,并将每个请求转发到在一个或多个持久 Python 进程中运行的 WSGI 应用。

若要使用 wfastcgi 包,请先安装并配置它,如 pypi.org/project/wfastcgi/ 所述。

接下来,将应用的 web.config 文件修改为,在 PythonHandler 键中添加 python.exe 和 wfastcgi.py 的完整路径。

修改 web.config 中的 PythonHandler 条目,让路径与 Python 安装位置一致(有关确切的详细信息,请参阅 IIS 配置参考 (iis.net))。


<system.webServer>
<handlers>
 <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
   scriptProcessor="c:\python36-32\python.exe|c:\python36-32\wfastcgi.py"
   resourceType="Unspecified" requireAccess="Script"/>
</handlers>
</system.webServer>

在 web.config 的 <appSettings> 部分中,为 WSGI_HANDLER、WSGI_LOG(可选)和 PYTHONPATH 添加键:


<appSettings>
<add key="PYTHONPATH" value="c:\home\site\wwwroot"/>
<!-- The handler here is specific to Bottle; see the next section. -->
<add key="WSGI_HANDLER" value="app.wsgi_app()"/>
<add key="WSGI_LOG" value="c:\home\LogFiles\wfastcgi.log"/>
</appSettings>

PYTHONPATH 的值可以自由扩展,但必须包括你的应用的根目录,他扩展了sys.path,可以在这个路径下找到import的包。
WSGI_HANDLER 必须指向可从你的应用导入的 WSGI 应用,针对不同的框架,这个值也有一些区别,下面是一些例子。

1.Bottle:确保 app.wsgi_app 后面有括号,如下所示。 此操作是必需的,因为该对象是函数(请参阅 app.py))而非变量:

<!-- Bottle apps only -->
<add key="WSGI_HANDLER" value="app.wsgi_app()"/>

2.Flask:将 WSGI_HANDLER 值更改为 <project_name>.app,其中 <project_name> 与项目名称匹配。 可通过查看 runserver.py 中的 from <project_name> import app 语句,找到准确的标识符。 例如,如果项目命名为“FlaskAzurePublishExample”,则该条目如下所示:

<!-- Flask apps only: change the project name to match your app -->
<add key="WSGI_HANDLER" value="flask_iis_example.app"/>

3.Django:对于 Django 项目,需要对“web.config”进行两项更改。 首先,将 WSGI_HANDLER 值更改为 django.core.wsgi.get_wsgi_application()(该对象位于 wsgi.py 文件中):

<!-- Django apps only -->
<add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>

其次,在 WSGI_HANDLER 条目下添加以下条目,并将 DjangoAzurePublishExample 替换为项目名称:

<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />

WSGI_LOG 为可选,但建议在调试应用时使用,记录日志。

来源:https://www.cnblogs.com/junshijie/p/12105095.html

标签:Python,web,IIS,应用
0
投稿

猜你喜欢

  • 无法通过Google网站管理工具验证的部分情况解决办法

    2009-07-28 12:56:00
  • python笔记_将循环内容在一行输出的方法

    2022-08-11 20:27:09
  • Python读取word文本操作详解

    2023-08-23 15:32:50
  • Jquery实现div模拟Select控件

    2008-12-01 15:47:00
  • 使用Python的Scrapy框架十分钟爬取美女图

    2023-06-16 03:28:57
  • ASP如何跳出本次进入下一次循环

    2008-10-23 13:46:00
  • Python学习之不同数据类型间的转换总结

    2021-10-04 06:06:57
  • 面向站长和网站管理员的Web缓存加速指南[翻译]

    2008-04-22 21:04:00
  • 如何对Oracle8数据库进行维护?

    2009-11-20 18:01:00
  • 浅析PHP的ASCII码转换类

    2023-09-08 02:54:28
  • Python selenium 三种等待方式解读

    2023-12-26 05:37:56
  • 快速让MySQL数据库服务器支持远程连接

    2010-01-16 13:06:00
  • Python求解任意闭区间的所有素数

    2023-10-12 00:07:12
  • python正则表达式去除两个特殊字符间的内容方法

    2023-08-24 16:22:10
  • PDO::lastInsertId讲解

    2023-06-11 14:31:37
  • Python使用QRCode模块生成二维码实例详解

    2022-07-04 16:50:44
  • python 中的jieba分词库

    2023-08-10 01:26:30
  • Python入门之三角函数tan()函数实例详解

    2022-04-12 18:41:59
  • asp如何编写一个DNS LOOKUP程序?

    2009-11-07 18:47:00
  • ASP技巧 挂QQ的网页源代码ASP/PHP

    2009-01-05 12:36:00
  • asp之家 网络编程 m.aspxhome.com