vs2019部署flask项目(winserver2012+IIS7)

本文主要记录了vs生成的flask项目的发布流程。

网站发布flask项目到iis的教程很多,但是通常的项目发布和vs上生成的flask项目结构不太一样。

(为了什么别的IDE生成的项目都没有runserver,搞得我一脸懵逼)

鬼知道我为了自己做个小网站经历了些什么。T—T

这里我主要是参考了vs的官方文档(果然还是官方大大的东西好使),有问题的可以在这里找找

https://docs.microsoft.com/zh-cn/visualstudio/python/configure-web-apps-for-iis-windows?view=vs-2019

废话不多说开始正文内容

1.网站本地发布

  1. 在vs项目中解决方案资源管理器中右键项目名即有发布选项
  2. 依次选择 发布-启动-文件夹(创建在什么位置可以自由选择,这里只是存放网站文件的目录)-创建配置文件
  3. 点击发布,生成本地网站文件

2.服务器IIS配置(我用的winserver2012)

  1. 可以在服务管理器-添加角色和功能处安装IIS
  2. 为了发布python网站CGI功能必须安装,该选择在web服务器-应用程序开发(为了靠谱起见,程序开发里的功能最好都装了)-CGI
  3. 依次点击下一步直至安装成功

3.wfastcgi的安装

  1.   直接用pip安装wfastcgi库(pip install wfastcgi)(本地需要python环境配置,这里不多赘述)
  2.  找到本地的python目录/Scripts/ ,运行wfastcgi-enable.exe

          这里红圈圈出来的 c:\python37\python.exe|c:\python37\lib\site-packages\wfastcgi.py 需要记下来后面会用到

          注: 1.c:\python37\python.exe 为服务器的python运行程序位置,依个人安装位置决定

                  2.c:\python37\lib\site-packages\wfastcgi.py  为python目录下的lib\site-packages\wfastcgi.py 这里我们可以把这个wfastcgi.py拷贝到网站目录下(具体原因后面再做解释)

                   3.如果生成出现了问题可以运行wfastcgi-disable.exe解除加载,再重新生成一次。

4.网站配置文件web.config的编写

在网站根目录下创建文件web.config(与runserver.py同一级目录)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
          <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python.exe|c:\web\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
    </handlers>
  </system.webServer>
	<appSettings>
  		<add key="PYTHONPATH" value="c:\web" />
  		<!-- The handler here is specific to Bottle; see the next section. -->
  		<add key="WSGI_HANDLER" value="tool.app" />
	</appSettings>
</configuration>

    注:1.这里PythonHandler中的scriptProcessor属性即为上文提到的通过 wfastcgi-enable程序获得的文件路径值。

            2.PYTHONPATH值为网站的目录

            3.WSGI_HANDLER的值需要提一下,为'项目名称.app' 图中的tool即时我这个flask项目的名字

            4.官方文档中还有<httpPlatform>的属性,但实际中添加该内容会导致网站无法运行,具体原因不知。

5.IIS配置网站

      1.iis中添加网站(这个简单部分不多赘述)

      2.接下来在对应网站目录下选择‘处理程序映射’(如果web.config配置错误,这里可能会无法打开)

      3.右键添加模块映射

       注:1.可执行文件内容是之前wfastcgi-enable获取到的路径,详见第三节。

               2.名称自定义即可。

               3.请求限制中去除映射内容的勾选。

  4.设置网站文件夹的目录权限(怕麻烦可以直接给everyone设置所有权限)

6.完成

      访问网站http://localhost/ 即可打开自己发布的网站

7.总结

(感觉visio studio对python网站的支持度不是很高),发布经历了许多挫折。但最终还是成功了,万幸万幸。

   vs好像还可以远程部署到iis服务器上,以后如果有研究,会再写一篇文章分享一下经验。

  注:2个额外的情况。

        我在网站部署时出现了HTTP500 /iis7.0 发生未知 FastCGI错误,错误代码 0x8007010b 的解决办法

        可以参考https://www.cnblogs.com/qq254980080/p/10177893.html 这位大佬的解决方案。

       

        网站运行发生 Error occurred while reading WSGI handler: Traceback (most recent call last)

        可以参考https://blog.csdn.net/COLDRAIN_END/article/details/100172040这位大佬的解决方案。

        ps:flask只需要添加‘PYTHONPATH’   ‘WSGI_HANDLER’  这2个变量即可。

发布了12 篇原创文章 · 获赞 4 · 访问量 2555

猜你喜欢

转载自blog.csdn.net/xiayu729100940/article/details/104006911
今日推荐