在 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 /链接路径/ 物理路径 # 物理路径千万别忘了最后的斜杠/