前天把Apache+PHP服务器搭好了,还通过配置VirtualHost实现了“分流”,也就是为今天上Django框架做好了准备。
现在我的成果是这样的:
(1) /etc/apache2/sites-available/000-default.conf 中配置VirtualHost,80端口给php,8000端口给Django
(2) /var/www/php 用来放置php项目,/var/ww/django用来放置Django项目
下面说下今天怎么配置Django框架的。
参考1:自强学堂涂伟忠老师的教程 http://www.ziqiangxuetang.com/django/django-deploy.html
参考2:某学长的经验 http://www.jianshu.com/p/b40a4a12fff1
我的配置:Apache 2.4.18,Python3,Django 1.8.16
又说了一堆废话,现在进入正题!!!
1. 准备工作:安装Django
具体而言,你得先装好Python,现在Python 3出来了就用3吧,这个我就不细说了。
然后就是装Django了,而安装Django的最简单方法就是使用pip工具,这个也不难,apt-get install python3-pip就好(Python2的就换成python-pip)。
最后就是安装Django啦,命令行输入pip3 install Django==1.8.16就行了。为什么是1.8.16?因为我也不打算定期更新Django,就用1.8这个LTS版本了,而1.8.16刚好是现在1.8.x中的最新版本而已。
第一次用pip安装Django时下载到一半就报错中止了,随手再装一次就好了,也没管刚刚到底啥问题。
2. 准备工作:安装libapache2-mod-xx(一个让Apache支持某种语言的模块)
安装php7的时候不是装过libapache2-mod-php7.0吗?这就对了,现在要支持Python3也得装个libapache2-mod-wsgi-py3。也就是:
apt-get install libapache2-mod-wsgi-py3
对应地,Python2就是sudo apt-get install libapache2-mod-wsgi。(对,后面没有-py2不要问我为什么)
3. 建立一个Django项目
切换到/var/www/django目录下,输入命令建立一个名为testDjango的项目:
django-admin startproject testDjango
然后顺手新建两个目录吧,可能以后要用来放css和用户文件呢:
mkdir static
mkdir media
确切地说,每一个Django项目都是一个网站,都需要配置自己的VirtualHost,所以前面说配置Django框架的说法是不准确的,每次部署Django项目都需要做一遍接下来的步骤。另外,每个Django项目都放在/var/www/django下也不太科学,还是直接放/var/www下好了。
4. 配置VirtualHost
经过前天的验证,一个IP不同端口可以分配给不同的网站项目。我这里就用8000端口给testDjango这个项目配置一下:
Listen 8000
ServerAdmin abc@123.com
DocumentRoot /var/www/django
Alias /media/ /var/www/django/testDjango/media/
Require all granted
Alias /static/ /var/www/django/testDjango/static/
Require all granted
WSGIScriptAlias / /var/www/django/testDjango/testDjango/wsgi.py
Require all granted
涂老师的教程中提到,如果Apache版本是2.2.x,需要用下面两行来代替Require all granted:
Order deny,allow
Allow from all
就酱。
5. 修改wsgi.py
还没完呢,用学长的话来说,“Apache那边改好配置了,同意和Django项目交往了,而Django项目这边也得给点反应啊”。
切换到项目testDjango的目录下,里面还有一个同名的目录,进去,看到wsgi.py了
import os
from os.path import join, dirname, abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0, PROJECT_DIR)
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testDjango.settings")
application = get_wsgi_application()
6. 收尾工作:看看Django能不能运行
配置工作其实已经做完了,浏览器访问127.0.0.1:8000,应该会出现Django的It works页面,这就OK啦。(出错了?重启Apache了吗?)
什么?你不放心?非得新建一个app来尝试?那你尽管尝试吧,不过我的经验是后面出的幺蛾子都是Django项目的语法问题。科科。
=============================Any question? END================================