Linux环境下Django App部署到XAMPP上
Django App部署到XAMPP上
准备工作
首先一定要保证自己的代码在本地可以运行!
同时在服务器上把需要的库,什么数据库之类的都装好!
源码安装mod_wsgi
- 从mod_wsgi的gitgub上下载源码安装包
- 解压缩:
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库:
make install
修改apache配置文件httpd.conf
- 加载
mod_wsgi
模块:LoadModule wsgi_module modules/mod_wsgi.so
- 修改对于Django项目的路径
一个Django项目的结构一般是这样的:WSGIScriptAlias /demos/todolist /root/web/demos/todolist/todolist/wsgi.py WSGIPythonPath /root/web/demos/todolist <Directory /root/web/demos/todolist/todolist> <Files wsgi.py> Require all granted </Files> </Directory>
- 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/ <Directory /root/web/demos/todolist/work/static/> #Order deny,allow #Allow from all Require all granted </Directory>
- 第一行为
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 = False ALLOWED_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要修改一下以便外界可以访问: