Apache+PHP+Python(Django框架)搭建成功

前天把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
                
        

我的项目叫testDjango,放在/var/www/django目录下,读者请根据自己情况作出替换。最重要的是wsgi.py这一块,引用学长的话就是“通过wsgi.py让Apache识别这是一个Django工程”。

涂老师的教程中提到,如果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()


这个……我也不懂,照做就是了,把该换的地方换了(倒数第二行)。最后,重启Apache!!!

6. 收尾工作:看看Django能不能运行

配置工作其实已经做完了,浏览器访问127.0.0.1:8000,应该会出现Django的It works页面,这就OK啦。(出错了?重启Apache了吗?)

什么?你不放心?非得新建一个app来尝试?那你尽管尝试吧,不过我的经验是后面出的幺蛾子都是Django项目的语法问题。科科。


=============================Any question? END================================


你可能感兴趣的:(Apache,Django,apache,Django)