环境

  • ubuntu 16.04

安装配置

  • 创建python虚拟环境:
mkvirtualenv django -p python2
  • 升级pip 安装django:
pip install --upgrade pip
pip install Django
  • 可以使用 django-admin.py 来创建项目,为了方便我们直接用pycharm创建项目:

这里我们创建一个名字叫app的application

  • 创建完成后我们可以查看下项目的目录结构:

HelloWorld: 项目的容器.

app:应用的名称

manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。

templates:为存放模板的文件夹

HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。HelloWorld/settings.py: 该 Django 项目的设置/配置。

HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

  • 修改 app/view.py, 一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。这里添加一个视图函数hello,这里直接返回一个Hello world字符串:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.http import HttpResponse
from django.shortcuts import render

def hello(request):
    return HttpResponse("Hello world")
  • 修改HelloWorld/urls.py绑定 URL 与视图函数:
from django.conf.urls import url
from django.contrib import admin
from app.views import hello

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', hello),
]
  • 测试一下,成功返回了Hello world:
  • 使用HttpResponse() 来输出 "Hello World!"。该方式将数据与视图混合在一起,不符合 Django 的 MVC 思想。我们需要创建单独的模板去干这件事,在templates文件夹中我们创建一个hello.html文件,我们现在修改 view.py,增加一个新的对象,用于向模板提交数据:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.http import HttpResponse
from django.shortcuts import render

def hello(request):
    context          = {}
    context['hello'] = 'Hello World!'
    return render(request, 'hello.html', context)
  • 编写个简单hello.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Hello World!</h1>
    <p>测试下</p>
    {% block mainbody %}
       <p>original</p>
    {% endblock %}
</body>
</html>
  • 重启服务查看下,成功返回了hello.html:
  • 模型配置

部署

  • 安装 Nginx
sudo apt-get install nginx
  • Nginx 配置

在Nginx中新建一个站点配置文件:

sudo vi /etc/nginx/conf.d/nginx.conf

内容如下:

server{
    listen 8084;
    server_name localhost;
    charset utf-8;
    location /{
        uwsgi_pass 127.0.0.1:9000;
        include uwsgi_params;
    }
}
  • 安装 uwsgi
sudo apt-get intall build-essential
sudo apt-get install python2.7-dev python3.5-dev
sudo apt-get install libxml2-dev #采用xml方式配置时候用
pip install uwsgi
  • uwsgi 配置

然后在项目目录下创建个HelloWorld_uwsgi.ini文件,作为uWSGI运行的配置文件,内容如下:

[uwsgi]
vhost = false
socket = 127.0.0.1:9000
master = true
enable-threads = true
workers = 2
wsgi-file = /home/jh/PycharmProjects/HelloWorld/HelloWorld/wsgi.py
virtualenv = /home/jh/.virtualenvs/django
chdir = /home/jh/PycharmProjects/HelloWorld
  • 创建完成后,在终端运行:
uwsgi --ini HelloWorld_uwsgi.ini & sudo service nginx restart