红联Linux门户
Linux帮助

如何将Django部署到Apache服务器上

发布时间:2017-05-16 09:42:40来源:linux网站作者:WangC.W
操作环境:
Ubuntu 16.04
Apache 2.4
Django 1.9
Python 2.7
mod_wsgi
 
前言:本教程纯自己查阅资料后整理,望对大家有帮助!
 
1.安装 mod_wsgi
这里默认大家已经会如何安装 Apache、Django、Python 了,直接教如何安装mod_wsgi。
需知:网上有很多用mod_python的,但是mod_python部署的方式在django的1.4及1.4之前是可以的,但是从django1.5开始,废弃了这种方式,django官网推荐使用wsgi方式,也就是我们用的mod_wsgi。
官方声明如下:
If you’re new to deploying Django and/or Python, we’d recommend you try mod_wsgi first. In most cases it’ll be the easiest, fastest, and most stable deployment choice.
安装:
sudo apt-get install libapache2-mod-wsgi
官方文档:http://flask.pocoo.org/docs/0.10/deploying/mod_wsgi/
 
2.建立一个Django工程
我们在 /var/www 下创建文件夹 mysite,然后键入mysite文件夹
cd /var/www
sudo mkdir mysite
cd mysite
创建Django工程,我们命名为:testproject
django-admin startproject testproject
我的目录:
如何将Django部署到Apache服务器上
 
3.修改Apache配置文件
ubuntu的apache2配置文件在 /etc/apache2/ 下。
新建一个网站配置文件:
sudo vi /etc/apache2/sites-available/testdjango.conf
#testdjango.conf名字可以随意换,这里为了直观
内容如下:
<VirtualHost *:80>
ServerName www.yourdomain.com
# ServerName这个无所谓,只要在host中把你的ip地址映射到这个上面就可以了。不想改host最简单的方法就是用 sudo a2dissite 000-default.conf 等虚拟主机给disable掉,只留 testdjango.conf。(PS.site-enabled中的文件是link site-availabel下的文件,如果存在link文件则是enable的,可以根据这个来查看)
ServerAlias otherdomain.com
ServerAdmin [email protected]
DocumentRoot /var/www/mysite/testproject #这一条是指向网站的根目录
# Alias /media/ /home/tu/blog/media/
# Alias /static/ /home/tu/blog/static/
# <Directory /home/tu/blog/media>
# Require all granted
# </Directory>
# <Directory /home/tu/blog/static>
# Require all granted
# </Directory>
WSGIScriptAlias / /var/www/mysite/testproject/testproject/wsgi.py
# 将后面的那个路径指向网站的根目录。第一个“/”表示外部访问时的网站根目录,当有新的requset的时候,apache从这里开始解析。
# WSGIDaemonProcess ziqiangxuetang.com python-path=/home/tu/blog:/home/tu/.virtualenvs/blog/lib/python2.7/site-packages
# WSGIProcessGroup ziqiangxuetang.com
<Directory /var/www/mysite/testproject/testproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
注:中间的一段代码打了注释,因为暂时还用不到,我们的目标仅仅是新建Django工程,部署到Apache上。关于静态文件等后续讨论。
关于 WSGIDaemonProcess 和 WSGIProcessGroup 暂时没有细查,估计等部署到时会用到,先放在这。
这样我们的 Apache 下的 sites-avaliable 文件夹下的配置就写好了。
 
4.修改Django的wsgi.py文件
上面的配置中写的 WSGIScriptAlias 就是把apache2和你的网站Django project联系起来了。
切换到我们刚刚建立的django项目目录:
cd /var/www/mysite/testproject
编辑 testproject/wsgi.py 文件:
sudo vi testproject/wsgi.py
内容:
import os
import sys
from os.path import join,dirname,abspath
from django.core.wsgi import get_wsgi_application
PROJECT_DIR = dirname(dirname(abspath(__file__)))
print PROJECT_DIR
sys.path.insert(0,PROJECT_DIR)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testproject.settings")
application = get_wsgi_application()
这样 Django 的 wsgi.py 文件也修改完了。
 
6.激活新网站
首先 我们把 Apache 的 sites-avaliable 下的 000-default.conf 等虚拟主机给disable掉,只留 testdjango.conf:
sudo a2dissite 000-default.conf 
之后执行:
sudo a2ensite testdjango.conf
sudo service apache2 reload
这里根据可根据提示重启Apache,此时已经成功,访问云服务器的公网IP,或者打开本地IP(127.0.0.1)可以看到如下界面:
如何将Django部署到Apache服务器上
表示Django工程已经成功与Apache链接。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30804.html