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個變量即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章