Django 服务器搭建
服务器端的搭建,选用 http 接口。优点是所有设备均可以进行指令发送和接收,间接达到了跨平台的功能。同时考虑到后台程序均使用 python 接口,因此这里使用Django进行服务器接口的搭建。
Django 教程可以点击链接 比较好的一套教程,这里的环境搭建基本参照此教程
http://www.ziqiangxuetang.com/django/django-tutorial.html
如果要了解此文搭建环境过程,务必要掌握Django基础知识,多看看链接教程。本文可能会有瑕疵。
目前使用的配置
centos6.5 64位
python 2.6.6
Django 1.6.x
话不多说,直接上流程
ps: 这里的流程都是在我的环境上执行的,可能环境不同,会造成各种问题,具体有问题可以参照教程,或者留言,我看看能不能解决
- 安装pip
yum install python-pip
如果命令执行失败,可以使用其他方式安装pip
- 安装Django
(sudo) pip install Django 安装最新版
(sudo) pip install Django==1.6 或者 pip install Django==1.10.3 安装指定版本
- 检查是否安装成功
>>> import django
>>> django.VERSION
(1, 6, 0, 'final', 0)
>>>
>>> django.get_version()
'1.6.0'
- 新建项目
django-admin.py startproject http
创建成功后会有以下目录结构
http
├── manage.py
└── http
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
- 新建应用
python manage.py startapp httpmodule # httpmodule 是一个app的名称
- 修改配置
views.py # 这个是我这个项目的主要文件,所有逻辑也会在这里进行体现
urls.py # 网页对应的内容
settings.py # 配置
wsgi.py # 配置apache要用到
修改settings.py
修改/http/http/settings.py
把我们新定义的app加到settings.py中的INSTALL_APPS中
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'httpmodule',
)
修改urls.py
修改/http/http/urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
from httpmodule import views as http_views
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'http.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^get/$', http_views.get, name='get'), # 新增get方法 需要对应到views.py
url(r'^set/$', http_views.set, name='set'), # 新增set方法 需要对应到views.py
)
这里的方法定义成功后,相对应的访问http请求就变成 :
http://ip:port/get | http://ip:port/set
修改wsgi.py
这个文件需要搭配apache,
一般先要安装一下wsgi的环境包
yum install mod_wsgi
如果安装失败,可以下载源码包进行安装,同时要注意的是不同的python版本可能需要对应不同版本的mod_wsgi
然后修改http/http/wsgi.py
import os
from os.path import join,dirname,abspath
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "http.settings")
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0,PROJECT_DIR)
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
具体为什么这么改,可以参照链接教程
修改views.py
然后修改http/httpmodule/views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def set(request):
# To do
#example:
message = request.GET.get('a','error')
return HttpResponse(message)
def get(requset):
# To do
return HttpResponse(result)
这里 # To do可以写上自己的逻辑代码,也可以调用自己封装的python脚本。
request:请求包
比如http请求是 http://ip:port/set?a=hello
那么 message获取到的内容就是hello
HttpResponse(message)就会返回内容,如果打开浏览器,正常的话应该能看到“hello”
之后就是httpd,使用centos自带的httpd服务。
- 配置httpd.conf
编辑/etc/httpd/conf/httpd.conf #如果是yum安装的就是这个配置文件
在配置文件最后加上
<VirtualHost *:8000>
ServerName example.com
ServerAlias example.com
ServerAdmin example@163.com
Alias /httpmodule /home/smart/web/http/httpmodule #需要修改
<Directory /home/smart/web/http/httpmodule> #需要修改
Options Indexes FollowSymLinks
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /home/smart/web/http/http/wsgi.py #需要修改
#WSGIDaemonProcess www.example.com python-path=/usr/local/lib/python2.6/site-packages
<Directory /home/smart/web/http/http> #需要修改
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
</VirtualHost>
以上“#需要修改”的内容,均需要对应到你们自己的项目路径
然后启动httpd
service httpd start
这个服务器的关键就是提供了http接口,我可以通过http请求将所有设备的请求都发送至服务器,并通过python脚本作解析数据和处理数据的功能。
这里我的views.py调用的是数据推送脚本,能够将所有数据推送到消息队列中,并能被所有脚本subscribe到,这块内容可以看”python结合rabbitmq做总线订阅式的总线式程序”