Django App部署到XAMPP上
准备工作
首先一定要保证自己的代码在本地可以运行!
同时在服务器上把需要的库,什么数据库之类的都装好!源码安装mod_wsgi
- 从上下载源码安装包
- 解压缩:
tar xvfz mod_wsgi-X.Y.tar.gz
,然后cd mod_wsgi-X.Y
- 进行配置:
./configure --with-apxs=/opt/lampp/bin/apxs
make
,其中有两个坑:- 找不到PERL库: 【解决方法】修改apxs文件
vi /opt/lampp/bin/apxs
第一行里的!/bin/perl
改成XAMPP自己的脚本:!/opt/lampp/bin/perl
- libtool出错: 【解决方法】修改默认的sh工具为bash而不是dash,执行
sudo dpkg-reconfigure dash
,弹出选择框,选择no
- 找不到PERL库: 【解决方法】修改apxs文件
make install
修改apache配置文件httpd.conf
- 加载
mod_wsgi
模块:LoadModule wsgi_module modules/mod_wsgi.so
- 修改对于Django项目的路径
WSGIScriptAlias /demos/todolist /root/web/demos/todolist/todolist/wsgi.pyWSGIPythonPath /root/web/demos/todolist
一个Django项目的结构一般是这样的:Require all granted - ProjectName-- ProjectName---- wsgi.py-- AppName---- static
- 第一行为
WSGIScriptAlias <URL PATH> <WSGI PATH>
<URL PATH>
是你希望的这个project的根目录,http://hostname/<URL PATH>/<rules_in_urls.py>
组成了最后访问的URL<WSGI PATH>
就是wsgi.py
文件的路径,这个文件在高版本的Django里创建项目会自动生成,没有的话下载一个高版本的Django,新建一个别的项目,直接从新项目里改巴改巴拉过来即可 - 第二行为
WSGIPythonPath <Project Path>
<Project Path>
为整个项目目录的路径,不包含第二个ProjectName
- 第三行为
<Directory <Project Path>/<Project Name>>
<Project Path>/<Project Name>
这部分是包含两个ProjectName
的那个路径,也就是wsgi.py
所在的文件夹的路径
- 第一行为
- 添加静态文件路径
Alias /demos/todolist/static/ /root/web/demos/todolist/work/static/
#Order deny,allow #Allow from all Require all granted - 第一行为
Alias <URL Path> <FILE PATH>
<URL Path>
的含义和上面一样,从此http://hostname/<URL PATH>/
就是访问静态文件夹<FILE PATH>
的路径 - 第二行为
<Directory <FILE PATH> >
,填的还是静态文件夹的路径
- 第一行为
- 重启Apache服务器
修改Django的代码
wsgi.py
,直接用生成的setting.py
- 为了放到生产环境上,可以把DEBUG关了,同时ALLOWED_HOST要修改一下以便外界可以访问:
# SECURITY WARNING: don't run with debug turned on in production!DEBUG = FalseALLOWED_HOSTS = ['*']
- 静态路径需要修改
# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.11/howto/static-files/STATIC_URL = '/demos/todolist/static/'
主要是要与Alias <URL Path> <FILE PATH>
里的<URL Path>
保持一致
- 为了放到生产环境上,可以把DEBUG关了,同时ALLOWED_HOST要修改一下以便外界可以访问: