要求:
将django部署到WAMP上,支持多端点的访问。
localhost:为初始页
localhost:8080为django的初始页
环境:
WAMP 3.1.9 64bit
python3.7
思考:
由于WAMP作为服务器用的是Apache,所以实际上是把django配置到Apache上就好了。
步骤:
用官方的实际上会出不少错误,所以还是要靠自己的小脑瓜子才行。
1.下载WAMP(自己用链接),确定能启动Apache
2.安装python和django(很多教程就不细说了),确定可以启动django
3.安装mod_wsgihttps://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
下载对应版本。
ap24代表:apache为v2.4
vc15代表:你的vc版本是2015
cp37代表:你的python是3.7版本。后面就是64位系统。
下载此文件,到python安装目录下。
C:\Users\AppData\Local\Programs\Python\Python37.
然后进入cmd到此目录,命令行输入。
pip3 install "mod_wsgi-4.5.24+ap24vc14-cp37-cp37m-win_amd64.whl"
然后到目录下的Scripts文件夹,会看到一个mod_wsgi-express
cmd进入此目录再输入
mod_wsgi-express module-config
会出现三行提示:
LoadFile "c:/users/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/appdata/local/programs/python/python37"
记住它。
4:配置httpd.conf和httpd-vhosts.conf文件
配置httpd.
#增加监听端口
Listen 8080
#上面的三行字符直接复制过来
LoadFile "c:/users/appdata/local/programs/python/python37/python37.dll"
LoadModule wsgi_module "c:/users/appdata/local/programs/python/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/users/appdata/local/programs/python/python37"
#设置工程路径,如果有多个工程就用分号分开
WSGIPythonPath "E:/djangoxxx/project;E:/djangoxxx/project2;"
配置httpd-vhosts.很重要!!!
#加多一个端点8080
<VirtualHost *:8080>
ServerName localhost
ServerAlias localhost
#工程根目录
DocumentRoot "E:/djangoxxx/project"
#工程目录下的wsgi.py文件
WSGIScriptAlias / "E:/djangoxxx/project/project/wsgi.py"
#工程
<Directory "E:/djangoxxx/project/project">
<Files wsgi.py>
#这个一定要有,否则报错没有打开ExecCGI
Options ExecCGI
#这个一定要有,否则会报错
AddHandler wsgi-script .py
Require all granted
</Files>
</Directory>
#设置静态文件路径
Alias /static E:/djangoxxx/project/static
<Directory E:/djangoxxx/project/static>
AddHandler wsgi-script .py
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>
此时大功告成,localhost:8080你就能看到亲爱的小火箭了!
解决这个问题,记录我遇到的3个坑。
根据网上教程配置完后:无法看到小火箭。
看error.log的报错
1.报403,问题在于没有打开ExecCGI
解决:添加 Options ExecCGI
2.报500,问题在于我的wsgi.py文件第一行必须是#!。
解决:打开wsgi文件的第一行添加#!即可
3.报500,以上两个问题都解决后,开始报我的这个wsgi不是有效的WIN32程序。此问题所花时间最久,一开始以为是下载的mod_wsgi版本有误,重新确认下载又确认了Apache和python都是64位后。
某一期间看到了要加入这个AddHandler wsgi-script .py。用来支持.py文件。
加入后,总算正常运行了!。。两天时间一句话。心累