谁能帮助我在IIS 6上运行Flask应用程序?我曾尝试使用isapi-wsgi,但是当我访问虚拟目录地址时,会得到一个页面,显示“找不到指定的模块”。还有其他选择吗?
以下是我为isapi-wsgi编写的Python脚本。已创建虚拟目录,并且在IIS管理器中一切正常,但该站点无法正常工作。
from wof import app
import os
app.secret_key=os.urandom(24)
import isapi_wsgi
def __ExtensionFactory__():
return isapi_wsgi.ISAPISimpleHandler(app)
if __name__ == '__main__':
from isapi.install import *
params = ISAPIParameters()
sm = [ScriptMapParams(Extension="*", Flags=0)]
vd = VirtualDirParameters(Name="WOFPy_Sondes", Description="ISAPI-WSGI for WOFPY Sondes test", ScriptMaps=sm, ScriptMapUpdate="replace")
params.VirtualDirs = [vd]
HandleCommandLine(params)
高层概述
HTTP-> IIS-> ISAPI-> FastCGI-> WSGI(Flask应用程序)
设定步骤
步骤1:安装所需的二进制文件
步骤2:安装可选的二进制程序包
我pyodbc使用此站点的安装程序.exe进行安装。从源安装(例如,用于安装到虚拟环境中的pip)需要C / C ++编译器。
步骤3:取得的副本 wfastcgi.py
选择一个适合你的版本,最好是一个支持Python 3.3的版本(我使用过David Ebbo的)。你可能需要这里的“官方”版本。
将wfastcgi.py脚本安装到其中C:\Inetpub\wwwroot,并确保将为你的应用程序提供服务的帐户(默认情况下为“网络服务”)对其具有读取权限。
步骤4:安装virtualenv到系统站点包
C:\Python33\Scripts\pip.exe install virtualenv
(如果你使用的是Python 3.3,并且所有内容均安装在默认位置)
步骤5:安装Flask应用程序
你可以在系统上的任何位置安装应用程序。你可能需要将其安装在下C:\Inetpub。在本教程中,我们将调用应用程序install的根文件夹 %APPROOT%。(不要在环境变量中加上引号。)
确保将为你的应用程序提供服务的帐户(默认情况下为“网络服务”)具有对所有脚本文件的读取权限。该命令:
cacls "%APPROOT%" /S:"D:PAI(A;OICI;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;0x1200a9;;;NS)(A;OICI;FA;;;SY)"
将为你的应用程序目录提供以下权限:
步骤6:为你的应用程序创建一个virtualenv
C:\Python33\Scripts\virtualenv.exe --system-site-packages "%APPROOT%\env"
(选择名称,env除非你的应用程序已经使用该目录。)
步骤7:将应用程序所需的软件包安装到virtualenv
cd "%APPROOT%"
env\Scripts\activate
pip install -r Packages
(我的项目将需求规范保存在名为的文件中Packages。)
步骤8:为你的应用程序创建网站或虚拟目录
使用inetmgr.msc(开始 -> 运行…,然后inetmgr在编辑框中输入并按Enter)启动Internet信息服务(IIS)管理器。确保将你创建的节点(网站或虚拟目录)的本地路径设置为Flask应用程序的根文件夹。 wfastcgi.py使用本地路径来标识Flask应用程序以处理请求。
授予节点读取和脚本(运行脚本)权限。
步骤9:设定 fcgiext.ini
该文件与fcgiext.dll
步骤1中安装的目录位于同一目录(默认为%SYSTEMROOT%\system32\inetsrv
)。
在配置此文件时,你需要几个参数:
fcgiext.ini
用于提供FastCGI(ISAPI)处理程序的参数。你选择此值-选择代表你的应用程序的内容。使用这些参数可以:
将FastCGI请求映射到处理部分:
对于整个网站,请添加到该部分。*:{site id}={application name}[Types]
对于虚拟目录,请添加到该部分。*:/lm/w3svc/{site id}/root/{path to app}={application name}[Types]
添加带有此应用程序参数的处理部分()(完整参考):[{application name}]
ExePath={approot}\env\python.exe
Arguments=C:\Inetpub\wwwroot\wfastcgi.py
(或wfastcgi.py安装适配器脚本的任何地方)EnvironmentVars=ENV_VAR1:value,ENV_VAR2:value,etc.
(有关报价规则,请参见完整参考)。这是设置WSGI_LOG环境变量的好地方-确保为站点提供服务的帐户(默认情况下为“网络服务”)具有对该文件的写权限,并且(如果该文件不存在)具有向其添加文件的权限。包含的目录。步骤10:为目标URL配置FastCGI处理
使用Internet信息服务(IIS)管理器,从Flask应用程序要服务的节点(网站或虚拟目录)的上下文(右键单击)菜单中选择“属性…”,并:
在“主目录”选项卡(网站)或“虚拟目录”选项卡(虚拟目录)中,单击“配置…”按钮。
在“通配符应用程序映射”部分中,使用“插入…”按钮添加通配符映射:
可执行文件是在步骤1中安装的FastCGI扩展DLL。其默认位置是%SYSTEMROOT%\system32\inetsrv\fcgiext.dll
。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<applicationSettings>
<add key=“PYTHONPATH” value=“”/>
<add key=“WSGI_HANDLER” value=“module.application”/>
</applicationSettings>
</configuration>
<add>
元素添加环境变量(os.environ在Python中)。
WSGI_HANDLER必须指定-它告诉wfastcgi.py如何定位WSGI应用程序对象。如果该值以“()”结尾,wfastcgi.py则将调用命名对象,并期望它返回WSGI应用程序对象。
PYTHONPATH是经过特殊处理的- 对的值wfastcgi.py
执行(环境)变量扩展(使用Windows标准%VAR%表示法)PYTHONPATH,然后将结果分割为分号,并将条目追加到sys.path
调用WSGI应用程序之前。因为wfastcgi.py
在导入包含WSGI应用程序对象的模块之前将当前目录更改为指定为Web站点或虚拟目录的本地路径的路径,所以在PYTHONPATH中包含空字符串将导致搜索将Flask应用程序目录作为开始点。你还可以在fcgiext.ini
中设置PYTHONPATH (在这种情况下,sys.path解释器将其包含进来,然后再由wfastcgi.py
)将其包含进来。
WSGI_RESTART_FILE_REGEX给出一个Python正则表达式,用于过滤应触发FastCGI处理程序进程重启的路径的文件更改通知。设置为在源文件或配置文件更改时触发。我用(?i).*\.(py|cnf|config)$
。
WSGI_LOG可能在此处设置,但我认为最好在设置fcgiext.ini
。
对于IIS 7
从IIS 7开始,FastCGI的某些事情发生了巨大变化。从该版本开始,FastCGI直接通过IIS进行支持,并且未通过扩展程序进行配置(即步骤1.4是不必要的,fcgiext.ini
并且不控制IIS 7+的FastCGI行为,因此不需要创建/编辑它)。相反,请确保在“ 控制面板”>“程序和功能”>“打开或关闭Windows功能”下的“ Internet信息服务”下启用了CGI。
Web.config
IIS 7是第一个从Web.config
文件中读取与FastCGI
相关的配置设置的IIS 。你的Web.config
文件将需要在<configuration>
元素内包含元素,该<system.webServer>
元素包含的<handlers>
元素包含
scriptProcessor
属性
<add>
元素的此属性必须包含.exe
你要使用的Python解释器文件的完整路径(Scripts
Python virtualenv子文件夹中的|
路径),后跟a ,然后是wfastcgi.py
你正在使用的文件的完整路径。由于这些路径取决于运行应用程序的计算机的设置,因此你可能需要在部署过程中设置此属性。
IIS服务器范围的设置
python.exe
和wfastcgi.py
你正在使用的完整路径添加一个条目。两者都应以相同的方式显示在
Web.config
。
<applicationSettings>
你的Web.config
可能并不适用于这个版本的IIS。当我部署flask应用程序时,它显示successful,但当我检索日志时,我看到错误“flask not found”。我的需求文件中有烧瓶。任何帮助。 [Sat Jan 11 06:51:50.503908 2020][:error][pid 3393][remote 127.0.0.1:0]mod_wsgi(pid=3393):目标wsgi脚本'/opt/python/current/app
我似乎找不到任何关于如何在我的IBM Social Business SmartCloud站点中注册/部署应用程序的文档。这是在他们的云服务器上,而不是我自己的本地主机上。 我使用IBM SmartCloud Engage演示帐户订阅创建了一个Admin AppDeveloper用户帐户。我基本上是在尝试将HelloWorld iWidget添加到某个应用程序菜单中,但找不到注册/添加的位置,因此
我已经训练了一个深度学习模型,对于Ui部分,我使用了flask模块。 我有一个训练过的模型是900MB大小的。 我无法在google app engine上部署这个flask应用程序,因为训练模型的内存问题。 有谁能帮助我如何在google App Engine上部署我的flask应用程序吗?
问题内容: 我正在尝试在Heroku上使用Flask开发我的第一个“大型”应用程序,并尝试将此处的基本教程与以下说明结合:https : //devcenter.heroku.com/articles/python与以下说明:http:// flask.pocoo.org/docs/patterns/packages/#larger- applications。它在本地与“先行启动”一起工作,但是
我想在服务器上部署一个spring mvc中的Java web app build。我使用的是MilesWeb服务器。在尝试将应用程序部署到服务器后,我收到了以下异常日志,描述如下:“服务器遇到内部错误,导致无法满足此请求”。我需要帮助来找出我做错了什么。 你可以检查这个链接后,点击提交我得到上面的错误
问题内容: 使用此处概述的步骤成功部署测试应用程序之后:http : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Python_flask.html 我尝试部署具有以下结构的实际flask应用程序: 其中包含我的网址映射。 我尝试在根目录以及模块中初始化实例,但是在AWS仪表板上收到以下错误: 应用程序无法正常工作(