IIS 部署 Python Django網站流程(受夠了野路子)

知道的,百度上搜出來的東西質量使人唏噓。當你求助的時候多半還得靠本身,或者靠Googlepython

介入正題,詳細來一遍流程吧web

固然,我是用Visual Studio 2019 來編輯開發Django項目的,若是你也是那麼巧了。這能夠幫你shell

若是你Django項目能夠在vs上運行,那麼關鍵的是能不能在項目根目錄跑起來,這個須要測試一下。django

先安裝wfastcgi模塊 app

pip install wfastcgi

安裝成功後,在你python 的根目錄 【Python\Lib\site-packages】下面找到 wfastcgi.py  文件,複製一份放在項目的根目錄下面便可。ide

在你項目根目錄下面 按住Shift 鼠標右鍵 菜單,點擊 【 在此處打開powershell窗口】輸入如下命令測試

python manage.py runserver

出現網站

PS E:\Git\GitRepository\CodeShitPro\DjangoWebProject> python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 3 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth.
Run 'python manage.py migrate' to apply them.
December 29, 2018 - 13:37:18
Django version 2.1.4, using settings 'DjangoWebProject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

若是出現跟這個同樣那就恭喜你能夠繼續日後配置了。若是不行,那麼pip 安裝對應的模塊便可ui

如今打開IIS 建立網站,根目錄能夠指向你項目根目錄,沒有關係。測試嘛,跑起來就好,規範的事情在規範的時候去作!this

接下來給你的Django項目添加一個web.config 文件,內容以下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration> 
  <system.webServer>
    <handlers>
      <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="F:\Program Files (x86)\Python\python.exe|E:\Git\GitRepository\CodeShitPro\DjangoWebProject\wfastcgi.py" resourceType="Unspecified" />
    
    </handlers>
  </system.webServer>
</configuration>

注:

scriptProcessor 裏面以 "|" 分割開的倆段內容,第一個是你python的根目錄找到【python.exe】 第二段是複製了【wfastcgi.py】 的項目根目錄指向地址,不要寫錯了。 
接下來哦。要在IIS 根節點選中

進入【FastCGI】 中,【添加應用程序】

1 處填寫 web.config  中scriptProcessor 第一段,2處填寫 第二段

3處點擊進入添加三個成員,內容是:

Name   Value
WSGI_HANDLER
django.core.wsgi.get_wsgi_application()
PYTHONPATH
你的站點根目錄
DJANGO_SETTINGS_MODULE
自定義名稱 .settings

 

 

 

 

 

 

填寫完成後肯定,重啓一下站點,而後運行發現沒有樣式加載成功,F12 後發現一片報紅

接下來操做比較關鍵了

1.在項目的settings.py 中加入代碼

#*********************************發佈IIS 必須添加的代碼***************************************************
SITE_ROOT = os.path.abspath(os.path.dirname(__file__))
 
STATIC_URL = '/static/'
 
STATIC_ROOT = os.path.join( SITE_ROOT, 'static')
SITE_STATIC_ROOT = os.path.join( SITE_ROOT, 'local_static')
 
# Additional locations of static files
STATICFILES_DIRS = (
    # Don't forget to use absolute paths, not relative paths.
    ('', SITE_STATIC_ROOT),
)
#************************************************************************************

2. 在 settings.py 同級目錄下添加名稱爲 local_static 的目錄

3.在local_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/>
      <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
    </handlers>
  </system.webServer>
</configuration>

最關鍵的一步,在項目根目錄下面運行代碼

python manage.py collectstatic

而後刷新看看,是否是成了?

臥薪嚐膽飲咖啡~~

相關文章
相關標籤/搜索