Django 項目部署到 Apache in Windows

真的很不想寫博客,但是沒辦法,把 Django 項目部署到 Apache 實在是太坑了,無腦看教程跟着做根本成功不了,最後扣錯誤日誌扣出來答案了,所以時隔多年,再寫一篇博客,希望能幫助到其他人。

 

1. 下載 Apache

確定電腦上的 Python 是 64 位還是 32 位,還有 Python 的版本,記一下。

然後去 https://www.apachehaus.com/cgi-bin/download.plx 下載對應位數的 Apache

解壓

 

2. 修改 Apache 配置

配置文件在 \Apache24\conf\httpd.conf 

在大約 Line 63,有一行 Define SRVROOT "D:\Apache_x86\Apache24" 把冒號裏的路徑改成你的 Apache 路徑

在大約 Line 67,有一行 Listen 80 把端口號改成你想要的端口號

在大約 Line 233,有一行 ServerName localhost:80 把端口號改成你想要的端口號

 

3. 測試 Apache

啓動 \Apache24\bin\httpd.exe 

瀏覽器查看 localhost:端口號 有 Apache 的測試頁面出現說明 Apache 安裝成功了

 

4. 下載 mod_wsgi

在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 裏找和 Python 版本以及位數對應的 mod_wsgi.whl

例如 mod_wsgi‑4.7.1‑cp37‑cp37m‑win32.whl 裏的 cp37 指的是 Python 3.7,win32 指的是 32 位

 

5. 配置 mod_wsgi

把下載好的 .whl 放到 Python 安裝目錄的 \Scripts 裏,然後在這個目錄下打開 cmd, 輸入 pip install ".whl包名",注意一定要用雙引號,我也不知道爲什麼用單引號就錯了,奇葩。

提示成功之後能看到 \Scripts 裏出現了 mod_wsgi-express.exe ,再輸入 mod_wsgi-express module-config 

會輸出三行信息,類似這樣的

LoadFile "d:/python/python37-32/python37.dll"
LoadModule wsgi_module "d:/python/python37-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win32.pyd"
WSGIPythonHome "d:/python/python37-32"

把這三行信息粘貼到 Apache 的配置文件裏 \Apache24\conf\httpd.conf 

 

6. 配置 Django 項目的 settings.py

把 ALLOWED_HOSTS = ['*'] 添加上自己的 IP,localhost,127.0.0.1,或者直接配成 * 

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['E:/DataAssetManage/dataassetFront/DataAsset/dist'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

確認一下

'DIRS': ['E:/DataAssetManage/dataassetFront/DataAsset/dist'] 

部分是不是絕對路徑,如果不是的話,改成絕對路徑

 

7. 配置 Django 項目的 wsgi.py

在與項目同名的文件夾下有一個 wsgi.py

如果它裏面的內容類似這樣,就不用改

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dataasset.settings')

application = get_wsgi_application()

 

8. 繼續配置 Apache 配置文檔 \Apache24\conf\httpd.conf 

在文檔後部添加

#指定myweb項目的wsgi.py配置文件路徑
WSGIScriptAlias / E:/DataAssetManage/dataasset/dataasset/wsgi.py

#指定項目路徑
WSGIPythonPath E:/DataAssetManage/dataasset

<Directory E:/DataAssetManage/dataasset>
    Options FollowSymlinks
    AllowOverride none
    Require all granted
</Directory>

#指定前端靜態文件

Alias /static/ E:/DataAssetManage/DataAssetFront/DataAsset/dist/static/
  
<Directory E:/DataAssetManage/DataAssetFront/DataAsset/dist/static/>  
    AllowOverride None  
    Options None  
    Require all granted  
</Directory>

目錄部分換成自己的 Django 項目目錄

切記靜態文件的目錄,後面一定要加 / ,否則會出錯。

 

9. 測試

啓動 \Apache24\bin\httpd.exe 

瀏覽器查看 localhost:端口號 有你熟悉的頁面出現就說明成功了

如果沒有,去 Apache 的錯誤日誌 \Apache24\logs\error.log 看發生了什麼,再針對問題解決。

 

--------------------------------------------------------------------------------------------------------------

真麻煩。

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