Django 项目部署到 Apache in Windows

1 篇文章 0 订阅
1 篇文章 0 订阅

真的很不想写博客,但是没办法,把 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 看发生了什么,再针对问题解决。

 

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

真麻烦。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值