windows10+apache2.4+django 部署
部署过程中, 踩了蛮多坑 记录一下吧
环境介绍
- python 3.7
- apache 2.4.15
- django 2.1
- windows10
安装apache2.4
最新版的apache2.4 : httpd-2.4.51-win64-VS16
- 下载后解压
- 将
Apache24
文件夹复制到自己的安装路径
这里我直接放到了C盘C:/Apache24
, 因为目前线上就是放在C盘 可能是为了方便装机吧 先看看里面都有些什么东西吧
- 添加
apache
环境变量
APACHE_HOME=C:\Apache24
PATH= %APACHE_HOME%; %APACHE_HOME%\bin
环境变量直接添加到系统环境变量, 这里就不贴图了
- 安装到windows服务
# 安装
httpd -k install -n 服务名称
# 启动
1. httpd -k start [stop, restart]
# 或者
2. net start 服务名称
启动方法有很多 还可以打开 bin 目录下的 ApacheMonitor.exe
不过双击之后他不会弹出来, 会在右下角的托盘里面
然后 双击托盘图标 就可以打开 长这个样子
如果启动过程中没有报错, 就可以打开浏览器, 访问一下 127.0.0.1 不出意外 就可以看到 It’s Work!
到此为止, Apache 安装完成
部署Django
-
下载
mod_wsgi
使用 pip 安装
mod_wsgi.whl
文件, 使用 pip 多的话 应该知道为什么要安装呢? 具体我也不知道 类似于
linux
上的uwsgi
如果之前没有安装过, 照着做就行了,踩坑的话 多踩踩很有必要的
mod_wsgi下载地址: mod_wsgi下载
打开上面的链接 搜索与你python 版本对应的
这里要注意一下, 如果你使用 python 虚拟环境 部署django 的话 需要 在虚拟环境里面安装 (推荐使用虚拟环境)
# 进入虚拟环境 ...\env\Scripts\activate pip install 下载的mod_wsgi路径 # 安装完之后 最好查看一下成功与否 pip list | findStr "mod_wsgi"
-
修改Apache 默认配置文件
C:\Apache24\conf\httpd.conf
修改之前 在django 的虚拟环境里面 需要 运行一下
mod_wsgi-express module-config
运行之后 会返回三条路径 像这样
LoadFile "C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python37.dll" LoadModule wsgi_module "e:/development/django_project/env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd" WSGIPythonHome "e:/development/django_project/env"
一定要自己生成的, 不要用我的!
把上面的路径 复制 到
apache
的配置文件中 并且 修改Listen
和ServerName
...... Define SRVROOT "C:/Apache24" ServerRoot "${SRVROOT}" ...... #Listen 12.34.56.78:80 # 这里我修改为9000 Listen 9000 ...... ServerName localhost:9000 ...... # 加载 mod_wsgi LoadFile "C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python37.dll" LoadModule wsgi_module "e:/development/django_project/env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd" WSGIPythonHome "e:/development/django_project/env" # 设置工程路径 WSGIPythonPath E:\development\django_project # 设置Django项目中的wsgi路径 WSGIScriptAlias / E:\development\django_project\django_project\wsgi.py # 设置wsgi文件权限 <Directory E:\development\django_project\django_project> <Files wsgi.py> Require all granted </Files> </Directory> # 设置静态文件路径 做路径映射 Alias /assets E:\development\online\django_project\static # 设置静态路径权限 <Directory E:\development\online\django_project\static> AllowOverride None Options None Require all granted </Directory>
-
重启Apache
httpd -k resfart
上面这条命令 运行之后没有任何提示
net stop apache24
net start apache24
上面这两条 有相关提示 至少会告诉你 启动成功与否
如果失败 就去
C:\Apache24\logs
目录 查看 相关的error
日志好了 回到正题
往往这个时候 如果不出意外的话 就应该出意外了!
我的Apache在这里 无法启动, 日志如下:
Fatal Python error: initfsencoding: unable to load the file system codec ModuleNotFoundError: No module named 'encodings'
看到这个 感觉到很熟悉 估计是之前 折腾u盘的python 环境时见到过
因为这个encdings 是python 自带的库 所以 我去本机python路径下查看了这个库的路径 并把它添加在了 系统环境变量里面
但是 还是没能解决 最后 是找到了 这篇 window2008下,apache+mod_msgi+flask出现问题,请大侠帮忙瞧瞧
他是 添加了
PYTHONHOMW
和PYTHONPATH
PYTHONHOME="C:\Users\Administrator\AppData\Local\Programs\Python\Python37" PYTHONPATH="C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Lib"
添加完之后 需要重启机器
不知道为什么????? 我尝试之后就可以启动了
部署结束
当时部署 遇到的问题 现在已经有点忘记了, 还是前天的事情, 脑子真的不行了
有时间 再尝试一下 apache 多站点部署