在 windows 上部署 django

环境


  • Django 4.1.7
  • python 3.11.2
  • Apache 2.4.46

1:安装配置 Apache

1.1:下载 Apache

Apache官方下载链接
按照系统版本选择对应的,以下是64位操作系统的选择

1.2:解压 Apache

下载完成后,解压到你要部署服务器的文件夹。建议在你要部署服务器的电脑磁盘下建立一个英文目录,如E:\peng\PythonProjects\Apache24,目录结构如下图所示。

1.3:配置 httpd.conf 文件

打开conf文件夹内的 httpd.conf 文件,进行如下配置。

配置服务器根目录(如下图)

Define SRVROOT "E:/peng/PythonProjects/Apache24"

设置端口(注意端口不要冲突)

查看端口占用的方法:

打开cmd.exe,输入以下命令(右边对应进程pid)

netstat -aon

设置服务器域名

ServerName 127.0.0.1:8001

配置完成,效果图如下

2:安装mod_wsgi

2.1:mod_wsgi概念

官网定义如下

mod_wsgi包实现了一个简单易用的Apache模块,它可以 托管任何支持 Python WSGI 规范的 Python Web 应用程序。该软件包可以通过两种不同的方式安装 根据您的要求。

第一种是作为传统的Apache模块安装到现有的 阿帕奇安装。按照此路径,您将需要手动 配置 Apache 以加载mod_wsgi并将 Web 请求传递给您的 WSGI应用程序。

安装 modwsgi 的第二种方法是使用Python 命令。这会构建并安装modwsgi到您的 Python 中。 安装或虚拟环境。该计划将 然后可用,允许您mod_wsgi使用来自 具有自动生成配置的命令行。这 方法不需要您执行任何 Apache 配置 你自己。pipmod_wsgi-express

这两种安装类型都适用于生产部署。后者 如果希望使用 Apache和modwsgi在Docker容器中托管您的WSGI应用程序。 在开发过程中使用modwsgi也是更好的选择 您的Python Web应用程序,因为您将能够直接从 您的终端。mod_wsgi-express

官网链接

2.2:下载mod_wsgi

下载链接
下载适合自己的mod_wsgi模块,比如我的python版本为3.11.2,电脑为64位,就选择cp311,win_amd64那一项。

2.3:安装mod_wsgi

打开cmd,进入到下载下来的mod_wsgi的路径

输入以下命令

pip install mod_wsgi-4.9.2-cp311-cp311-win_amd64.whl

使用以下命令查看相关信息

mod_wsgi-express module-config

3: 配置django项目

迁移django

将django项目复制一份到apache同级目录下

配置httpd.conf,加入django

在httpd.conf文件末尾加上如图配置

# Django配置
# 添加mod_wsgi.so模块
LoadFile "E:/peng/software/python3112/python311.dll" # python dll文件
LoadModule wsgi_module "E:/peng/software/python3112/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp311-win_amd64.pyd" # mod_wsgi.pyd文件
WSGIPythonHome "E:/peng/software/python3112" # python目录
WSGIApplicationGroup %{GLOBAL}
# 指定django项目的wsgi.py配置文件路径
WSGIScriptAlias / E:/peng/PythonProjects/ShareAndTalk/ShareAndTalk/wsgi.py
# 配置django路径
WSGIPythonPath E:/peng/PythonProjects/ShareAndTalk
<Directory E:/peng/PythonProjects/ShareAndTalk>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# 配置静态文件
Alias /static E:/peng/PythonProjects/ShareAndTalk/static
<Directory E:/peng/PythonProjects/ShareAndTalk/static>
AllowOverride None
Options None
Require all granted
</Directory>

然后对settings.py做如下更改

import os
# --snip--
DEBUG = False # 先前为True
ALLOWED_HOSTS = ['*']
# --snip--
STATICFILES_DIRS = (
os.path.join(BASE_DIR, '/static/'),
)
STATIC_ROOT = os.path.join(BASE_DIR,'static')

配置完成后,在django的manage.py目录下,输入以下命令收集静态文件

py manage.py collectstatic

4: 注册运行Apache服务

E:\peng\PythonProjects\Apache24\bin目录下(Apache\bin目录)

打开cmd,运行以下命令
安装服务:

httpd.exe -k install -n "服务名"

卸载服务:

httpd.exe -k uninstall -n "服务名"

到此就全部完成了,祝贺祝贺🎺

常见坑点,几个小时卡住的教训

django的mdeditor需要额外配置静态路径,如下

<IfModule alias_module>
# --snip--
Alias /链接路径/ 物理路径 # 物理路径千万别忘了最后的斜杠/
posted @   星痕sky  阅读(435)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示