安装Django
先在 https://pypi.python.org/ 上 搜索Django,排在第一的那个就是我们要安装的主要框架Django啦~
点进去可以查找一些相关文档,虽然全部是鸟语花香,不过有翻译.百度.炕忙,就算是菜鸟也成英国鸟了。
Django 的官网文档 https://docs.djangoproject.com/en/dev/
@.@ 找了一会,发现没什么有用的~在官网down频道发现一个起码算是有用的命令:
# pip install Django==1.6.5 // 获取官方最后更新的版本
# python -c "import django; print(django.get_version())" // 如果Django已经安装,则会显示安装的版本,否则会提示
No module named django
创建一个Django项目
Django的项目 不想 php的项目,一般php的项目会将所有的代码放到服务器上(/wwwroot/xx.php)这样运行,但实际上这样的方法不太安全,也更容易被别人看到代码。
Django的项目代码可以放在任何目录下,如 /home/dj
个人学习阶段放在了 /data/project/下
# cd /data/project
# django-admin.py help 可以看到django的一些常用操作方式
# django-admin.py startproject dj 创建一个名为 dj 的项目
# tree dj
dj
├── dj
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
外层的 dj 只是一个包含项目的 名称, 可以将该目录名修改
内层的 dj 目录里面 有一个空的__init__.py ,这是python的写法,告诉python这是一个将被引用的包
manage.py 是项目管理的主要方法
# dj/manage.py help 可以看到好多方法
下面是 django官网关于django-admin.py & manage.py 的命令方法介绍:
https://docs.djangoproject.com/en/1.6/ref/django-admin/
运行一个Django项目
简单的运行方式为:
# python manage.py runserver
...漫长的等待过后
Validating models...
0 errors found
July 28, 2014 - 14:18:04
Django version 1.6.5, using settings ‘dj.settings‘
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
如果你想将端口号修改,或者ip修改,可以执行:
# python manage.py runserver 8080 / 0.0.0.0:8000
访问上述地址,就会看到 Welcome to Django 页面了。
这只是使用Django自带的webserver,下面我们要通过uwsgi将nginx与django组合到一起。
通过uwsgi将Nginx与Django组合一起
官方文档:http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html#installing-uwsgi-with-python-support
先安装uwsgi
# pip install uwsgi
...漫长的等待过后
发现一个大大的track
Traceback (most recent call last):
File "/bin/pip", line 11, in <module>
sys.exit(main())
File "/usr/lib/python2.7/site-packages/pip/__init__.py", line 185, in main
return command.main(cmd_args)
File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 161, in main
text = ‘\n‘.join(complete_log)
UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe8 in position 40: ordinal not in range(128)
多番查找后,发现解决问题的办法:
# 在python的Lib\site-packages文件夹下新建一个sitecustomize.py,代码为
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding("utf8")
# 此方法为,python启动的时候,会自动调用该文件,这样就不再需要每次都手动设置编码了
# pip install uwsgi 重新安装试试看~
# 我靠,还是报错~算了,直接用源码安装吧
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd <dir>
make
...漫长的等待过后
# 又出现了一个这样的错误
[gcc -pthread] plugins/python/python_plugin.o
In file included from plugins/python/python_plugin.c:1:0:
plugins/python/uwsgi_python.h:2:20: 致命错误:Python.h:没有那个文件或目录
#include <Python.h>
# 一般出现这种问题,都是 xx-devel没有安装,那我们就试一下看看有没有 python-devel
# yum install python-devel
# 竟发现还真有~
# 这样的话,那之前 pip install uwsgi 会不会因为这个原因导致失败的呢~
# pip install uwsgi
...漫长的等待过后
# 终于成功了!看来一切罪魁祸首,就是 python-devel了!
total build time: 178 seconds
*** uWSGI is ready, launch it with /usr/bin/uwsgi ***
Successfully installed uwsgi
Cleaning up...
# 小小的试验一下
# uwsgi --help // 一堆命令参数,还是看文档吧
# 配置nginx
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9000;
}
# uwsgi 调用参数
# 根据官网的说明:
# 假设你的django项目目录在 /data/project下
uwsgi --socket 127.0.0.1:9000 --chdir /data/project/dj/ --wsgi-file dj/wsgi.py --master --processes 2 --threads 2
# ok! 再次访问nginx配置的页面,发现是不是看到了django的欢迎界面!
# 再次验证了一点,python的项目不需要放在 wwwroot类似的目录中,可以放在任意目录下!
# 每次这么写是不是很麻烦~uwsgi提供用配置文件的方式执行:
# 创建一个 dj.ini文件
[uwsgi]
daemonize = 127.0.0.1:4000
socket = 127.0.0.1:9000
chdir = /data/project/dj/
wsgi-file = dj/wsgi.py
master = true
processes = 2
threads = 2
stats = 172.16.11.121:9191
# uwsgi dj.ini 同样可实现上面的功能。
# 到此,你的django就可以通过uwsgi在nginx下运行了!