嘗試win10-django-apache-wsgi兩天時間終於建置成功

嘗試win10-django-apache-wsgi兩天時間終於建置成功

    • 我卡在這裡
    • settings.py的修改,不知道是否必須
    • httpd.conf檔案改動的地方很多,有些也不知道有沒有用
    • 啟動一些模組,但我懷疑可能不需要
    • 可能要開啟cgi
    • 其他

我卡在這裡

其他內容我就先忽略了,都是按照網路各種文章教學來的。這裡直接說關鍵點。我最後就是卡在了wsgi.py檔案的設定上面。其中的路徑不能按其他教學寫的,都沒用,要按這個文章的來!
https://blog.csdn.net/mmmmsunshine/article/details/78781215
我的是這麼寫的:

1
2
3
4
5
6
7
8
import os
import sys

from django.core.wsgi import get_wsgi_application
root_path= os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.insert(0,root_path)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'learningLog.settings')
application = get_wsgi_application()

settings.py的修改,不知道是否必須

按其他教學,做了如下修改

1
2
3
DEBUG = False
TEMPLATE_DEBUG = False
ALLOWED_HOSTS = ["*"]

httpd.conf檔案改動的地方很多,有些也不知道有沒有用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
listen 8078
WSGIPythonPath D:Apache24htdocslearningLogvenvLibsite-packages
<VirtualHost *:8078>
  ServerName blog_analysic
  WSGIScriptAlias / D:/Apache24/htdocs/learningLog/learningLog/learningLog/wsgi.py
 
  <Directory D:/Apache24/htdocs/learningLog/learningLog/learningLog/>
     <Files wsgi.py>
       Require all granted
     </Files>
  </Directory>
 
   Alias /static D:/Apache24/htdocs/learningLog/learningLog/web/static
  <Directory D:/Apache24/htdocs/learningLog/learningLog/web/static>
    Require all granted
  </Directory>
 
   DocumentRoot D:/Apache24/htdocs/learningLog
  <Directory D:/Apache24/htdocs/learningLog>
        Options Indexes FollowSymLinks
        AddHandler wsgi-script .py
        Options ExecCGI
        AllowOverride All
        Require all granted  
  </Directory>
</virtualhost>

LoadFile "c:/program files/python37/python37.dll"
LoadModule wsgi_module modules/mod_wsgi.pyd
WSGIPythonHome "c:/program files/python37"

我在弄的時候發現按其他教學安裝完mod_wsgi後,硬碟里實際並沒有mod_wsgi.pyd檔案。這個太特么坑爹了。然後就從安裝包里解壓了這個檔案出來。
另外還有一點就是我原來想在xampp里的apache里搞,但每次寫下面任何一句時,apache就無法啟動。最後還是只好另外安裝單獨的apache。

1
2
3
LoadFile "c:/program files/python37/python37.dll"
    LoadModule wsgi_module modules/mod_wsgi.pyd
    WSGIPythonHome "c:/program files/python37"

過程中還根據錯誤提示懷疑是許可權問題就在上面新增了,Options ExecCGI,也不知道是不是必須的。
AddHandler wsgi-script .py這句可能是增加對py檔案的支援,不知道是不是必須的,後面其實也有一句是相同功能。
經過嘗試上面3句都不能改,也不能改到虛擬程式的scripts里,不知道教學里教虛擬venv還有沒有用

啟動一些模組,但我懷疑可能不需要

按這個文章,我開啟了一些模組,但我覺得可能不是必須的,mark一下
https://www.cnblogs.com/onlyou13/p/10472779.html

可能要開啟cgi

按這個文章:
https://blog.csdn.net/believe646875970/article/details/53924854
相應在httpd.conf檔案里新增了對py檔案的支援,不知道是不是必須的
AddHandler cgi-script .cgi .pl .py

其他

我在執行兩個相同app,一個透過apache,一個透過powershell,發現登入一個,另一個就登入不了。
補充:之前建置其實只是半成功,管理介面里一編輯欄位就出錯,提示static沒有註冊,試了很多方法都不成功。只好先把這個問題放一放。建置後執行過一次collectstatic,當時是搜集了1百多檔案。後來在備份的原程式(建置前的)里collectstatic,結果收集有上千的檔案,說明建置後再收集靜態檔案會漏很多。因此我嘗試建置前收集靜態檔案,再建置,這次管理介面里的欄位可以編輯了。算是完全成功了。