如何在 Windows Server 上托管 Python 3.7 烧瓶应用程序?

Posted

技术标签:

【中文标题】如何在 Windows Server 上托管 Python 3.7 烧瓶应用程序?【英文标题】:How to host Python 3.7 flask application on Windows Server? 【发布时间】:2020-02-04 06:31:14 【问题描述】:

由于 wfastcgi 模块与 Python 3.7 不兼容,在 Windows 服务器上托管 python 烧瓶应用程序的最佳方式是什么?

【问题讨论】:

如果您无法自行升级 wfastcgi,请关注***.com/tags/wfastcgi/info 最新版本的 wfastcgi 仅支持 Python 3.6。我正在运行 Python 3.7 并收到以下错误:factcgi 进程意外退出。 @Ishan 你的问题解决了吗?如果您的问题得到解决,那么我请求您将有用的建议标记为答案。这将帮助面临同样问题的其他人。如果您的问题仍然存在,请尝试参考社区成员提供的解决方案。如果您还有其他问题,请告诉我们。我们将尝试提供进一步的建议来解决该问题。感谢您的理解。 【参考方案1】:

你需要在你的服务器上安装 python、wfastcgi 和 flask。

您可以从以下链接下载python:

https://www.python.org/downloads/

安装python后下载wfastcgi:

pip install wfastcgi

以管理员身份运行命令提示符并运行此命令。

wfastcgi-enable

运行此命令以启用 wfastcgi。

以下是我的烧瓶示例:

app.py:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello from FastCGI via IIS!"
if __name__ == "__main__":
app.run()

创建应用程序以运行它后,使用以下命令:

python app.py

现在启用 iis 的 cgi 功能:

现在打开 iis。 右键单击服务器名称并选择添加站点。 输入站点名称物理路径和站点绑定。 添加站点后,选择站点名称并从中间窗格中选择处理程序映射功能。 点击“添加模块映射” 添加以下值:

可执行路径值:

C:\Python37-32\python.exe|C:\Python37-32\Lib\site-packages\wfastcgi.py

单击“请求限制”。确保“仅在以下情况下调用处理程序 请求被映射到:”复选框未选中:

在此处单击“是”:

现在返回并再次选择服务器名称并从中间窗格中选择快速 CGI 设置。

双击它,然后单击环境变量的“...” 集合以启动 EnvironmentVariables 集合编辑器:

设置 PYTHONPATH 变量:

还有 WSGI_HANDLER(我的 Flask 应用程序名为 app.py,因此值为 app.app - 如果你的名字是 site.py,它会是 site.app 或类似的):

单击“确定”并浏览到您的站点:

注意:不要忘记将 iusr 和 iis_iusrs 用户权限分配给烧瓶站点文件夹和 python 文件夹。

【讨论】:

我现在收到相同代码的以下错误。我检查了端口 5000 是否打开,并已为 iusr 和 iis_usrs 提供了必要的权限:第 466 行,在 server_bind self.socket.bind(self.server_address) OSError: [WinError 10013] 试图以某种方式访问​​套接字被其访问权限禁止 StdOut:* Serving Flask app “app”(延迟加载) * 环境:生产 警告:这是一个开发服务器。不要在生产部署中使用它。请改用生产 WSGI 服务器。 * 调试模式:关闭 StdErr: 发布代码时存在一些问题。请检查编辑后的帖子。这是实际代码:from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello from FastCGI via IIS!" if __name__ == "__main__": app.run() 确保使用以下命令安装flask:pip install Flask 代码仍然没有运行,错误如下: OSError: [WinError 10013] 试图以访问权限 StdOut 禁止的方式访问套接字: @Ishan 您是否将 iis_iusrs 和 iusr 权限分配给了 python 和站点文件夹?在 iis 中托管之前或在 iis 中托管之后,您何时收到此错误?或尝试设置不同的端口号。有关更多详细信息,请参阅此link

以上是关于如何在 Windows Server 上托管 Python 3.7 烧瓶应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows Server 2003 上托管 WCF Web 服务

如何使用 IIS7 服务器在 amazon ec2 windows 实例上托管域名

我可以在 ms windows server 2008 上托管在 ms visual studio 2003 中开发的应用程序吗?

如何在运行 Tableau Server 的 VM 上托管网站?

如何使用 MongoDB 在 Heroku 上托管我自己的 Parse Server? [关闭]

Flask 服务器在 Macbook 上托管时可见,但在 Windows 桌面上托管时不可见? (尝试了一切?)[重复]