windows的IIS上發佈部署項目(vue前端+python後端項目)

windows的IIS上發佈部署項目(vue前端+python後端項目)

項目需求

項目中使用python作爲後端並且習慣使用IIS,所以順理成章的需要將項目發佈到IIS上。查看網上的許多部署指南,還是會有一些問題,功夫不負有心人,集百家之長還是解決了困難,所以記錄在此。

項目實現

  • IIS安裝
    既然部署到IIS上,那就必須要安裝好IIS。
    控制面板–>程序–>啓用或關閉windows功能(將圖中圈住的內容全部勾選)
    在這裏插入圖片描述
  • 項目組成
    在這裏插入圖片描述
    運行項目驗證:python manage.py runserver 驗證沒有問題進入下一步
  • 安裝wfastcgi模塊

pip install wfastcgi

將安裝好的wfastcgi.py文件拷貝到工程項目根目錄下。
如圖所示
在這裏插入圖片描述

  • 網站配置
    打開IIS,新建網站。
    在這裏插入圖片描述
  • 添加程序映射
    選中你發佈的網站–>處理程序映射–>添加模塊映射
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    可執行文件是python.exe路徑|wfastcgi.py路徑
    填寫完參數後選擇請求限制將對勾取消
    在這裏插入圖片描述
  • 進入FastCGI設置
    點擊主頁
    在這裏插入圖片描述
    點擊添加應用程序
    在這裏插入圖片描述
    添加環境變量–>增加兩個鍵值對

Name: WSGI_HANDLER Value: django.core.wsgi.get_wsgi_application()
Name: DJANGO_SETTINGS_MODULE
Value:WaterEnvironentRiskManagement_PythonDB.settings(WaterEnvironentRiskManagement_PythonDB是自己的項目名稱)

在這裏插入圖片描述
項目根目錄下會自動生成web.config的文件。
在這裏插入圖片描述
其中文件內容如下,如果沒有可複製粘貼,但相應路徑內容要替換稱自己的

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings>
      <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
      <add key="PYTHONPATH" value="%ROOTDIR%" />
      <add key="DJANGO_SETTINGS_MODULE" value="WaterEnvironentRiskManagement_PythonDB.settings" />
    </appSettings>
    <system.webServer>
        <handlers>
            <add name="DjangoFastCgiModule" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\haizhengzheng\AppData\Local\Programs\Python\Python37\python.exe|C:\inetpub\wwwroot\WaterEnvironentRiskManagement_PythonDB\wfastcgi.py" resourceType="Unspecified" />
        </handlers>
    </system.webServer>
</configuration>

DJANGO_SETTINGS_MODULE 的 value 裏面 WaterEnvironentRiskManagement_PythonDB是項目的名字
DjangoFastCgiModule是在 IIS 配置時添加模塊映射的名字

C:\Users\haizhengzheng\AppData\Local\Programs\Python\Python37\python.exe|C:\inetpub\wwwroot\WaterEnvironentRiskManagement_PythonDB\wfastcgi.py

前面一截是python的路徑,後面一截是項目中wfastcgi.py的路徑,中間用豎線隔開

到此,沒有靜態文件的項目就已經部署好了。
真的部署好了嗎?
至少在我的項目中是運行不起來的,他還會報錯,比如是這樣的
在這裏插入圖片描述
解決方法來了!!!
在這裏插入圖片描述
將標識中的ApplicationPoolidentity改爲LocalSystem
在這裏插入圖片描述
到此,沒有靜態文件的項目才部署好。

  • 修改setting.py文件中的ALLOWED_HOSTS
    會出現報錯情況
    將ALLOWED_HOSTS = []改爲ALLOWED_HOSTS = [’*’]
  • 配置靜態文件
    1、在項目settings.py中添加三行代碼

STATIC_URL = ‘/static/’
STATICFILES_DIRS=[os.path.join(BASE_DIR,“dist/static”)] STATIC_ROOT =
os.path.join(BASE_DIR, ‘static’)

2、配置靜態文件
在項目中新建static文件夾,新建web.config文件。在其中添加以下代碼

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
      <!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
      <handlers>
        <clear/>
	<!-- the configuration document write by Kahn.xiao -->
   <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
     </handlers>
   </system.webServer>
</configuration>

3、收集靜態文件
命令行進入到項目中!!!是進入到項目中。

python manage.py collectstatic

發現又會報錯。。。尷尬。
一些靜態文件被拒絕訪問
所以這裏通過以管理員的方式打開cmd再執行代碼即可

在這裏插入圖片描述
這時項目中會生成static文件夾,此時的項目結構如下
在這裏插入圖片描述
此時通過IIS訪問網站即可了

效果展示

在這裏插入圖片描述
在這裏插入圖片描述

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