写在前面的话
写本篇文章的目的是为了记录填坑及操作过程;
如果你也遇到此类问题,不妨按照下面的方法试试吧,操作不对的地方请指正。
环境:
- Windows:Win 10
- Python:3.6 x64
- Apache:2.4 x64
- Django:2.1.4
- virtualenv 16.7.7
注意:这里我遇到一个坑,32位的python无法和64位的apache搭配运行
1. 安装 virtualenv 虚拟环境
为什么不用 python 自带的虚拟环境呢,因为各种毛病,总之就是 apache 起不来,很麻烦,安装这个虚拟环境轻松搞定
- Linux/MacOS 下安装 (virtualenvwrapper 使得 virtualenv 变得更好用,所以我们一起安装了):
(sudo) pip install virtualenv virtualenvwrapper
修改~/.bash_profile或其它环境变量相关文件(如 .bashrc 或用 ZSH 之后的 .zshrc),添加以下语句
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
修改后使之立即生效(也可以重启终端使之生效):
source ~/.bash_profile
- Windows 下安装:
pip install virtualenv virtualenvwrapper-win
【可选】Windows下默认虚拟环境是放在用户名下面的Envs中的,与桌面,我的文档,下载等文件夹在一块的。
更改方法:计算机,属性,高级系统设置,环境变量,变量名:WORKON_HOME,变量值:D:\Envs,确定后请到D盘添加Envs文件夹。注:添加环境变量后需要重启Dos窗口,否则不生效
2. 使用刚刚安装好的虚拟环境管理器创建一个环
我这里将它命名为 my_web
mkvirtualenv my_web
等创建完成后打开编辑器指定虚拟环境即可。
3. 安装Django:
pip install Django==2.1.4
4. 安装 mod_wsgi:
mod_wsgi 模块下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
请选择对应的版本,如:
mod_wsgi‑4.5.24+ap24vc14‑cp36‑cp36m‑win_amd64.whl
此处的cp36中的36即为Python的版本(3.6),win_amd64则为64位的
下载完后进入虚拟环境并切换到下载保存的路径运行安装命令:
pip install mod_wsgi‑4.5.24+ap24vc14‑cp36‑cp36m‑win_amd64.whl
注:此处的 mod_wsgi-4.5.24+ap24vc10-cp34-cp34m-win_amd64.whl 为下载好的文件名称
安装过程中如果提示 mod_wsgi-4.5.24+ap24vc10-cp34-cp34m-win_amd64.whl is not a supported wheel on this platform. 则说明下载的文件与你的 python 不对应,请重新选择对应的版本进行安装。
一切顺利的话进入虚拟环境目录并执行:
mod_wsgi-express module-config
执行上述命令后在Dos窗口会有三行代码出现,如:
LoadFile "d:/python/36/python36.dll"
LoadModule wsgi_module "d:/envs/my_web/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "d:/envs/my_web"
5. 配置 Apache
# 添加 mod_wsgi.so 模块
LoadFile "d:/python/36/python36.dll"
LoadModule wsgi_module "d:/envs/my_web/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "d:/envs/my_web"
# 指定项目路径
WSGIPythonPath "d:/python/app/my_django"
将上面内容复制到 Apache 的 httpd.conf 文件末尾处。
6. 配置站点参考代码:
<VirtualHost *:80>
ServerName domain.cn
ServerAlias localhost
# 指定项目的wsgi.py配置文件路径
WSGIScriptAlias / "d:/python/app/my_django/my_django/wsgi.py"
<Directory "d:/python/app/my_django/my_django">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static "d:/python/app/my_django/static"
<Directory "d:/python/app/my_django/static">
Require all granted
</Directory>
</VirtualHost>
-
将上面的代码修改成你的路径和域名后复制到 httpd-vhosts.conf 中。
-
打开 django 项目 setting 配置:
# 关闭DEBUG模式
DEBUG = False
# 允许访问的ip 也可以用'*'代表不受限制
ALLOWED_HOSTS = ['*']
- 重启Apache,在浏览器中输入你配置的域名即可。