django, CentOS7+nginx(apache)+mod_wsgi+Python+Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
框架介绍
- 用于创建模型的对象关系映射
- 为最终用户设计的完美管理界面
- 一流的 URL 设计
- 设计者友好的模板语言
- 缓存系统。
架构设计
层次
|
职责
|
模型(Model),即数据存取层
|
处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
|
视图(View),即表现层
|
处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
|
模板(Template),即业务逻辑层
|
存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。
|
设计哲学
- 对象关系映射 (ORM,object-relational mapping):以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你将得到一个非常容易使用的数据库API,同时你也可以在Django中使用原始的SQL语句。
- URL 分派:使用正则表达式匹配URL,你可以设计任意的URL,没有框架的特定限定。像你喜欢的一样灵活
- 模版系统:使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。并且具有可继承性。
- 表单处理:你可以方便的生成各种表单模型,实现表单的有效性检验。可以方便的从你定义的模型实例生成相应的表单。
- Cache系统:可以挂在内存缓冲或其它的框架实现超级缓冲 -- 实现你所需要的粒度。
- 会话(session),用户登录与权限检查,快速开发用户会话功能。
- 国际化:内置国际化系统,方便开发出多种语言的网站。
- 自动化的管理界面:不需要你花大量的工作来创建人员管理和更新内容。Django自带一个ADMIN site,类似于内容管理系统
工作机制
环境说明
操作系统:CentOS 7 64-bit
安装基础环境
yum -y install gcc make wget
安装Python
yum -y install zlib-devel openssl-devel
方法一: yum install python* //centos7中默认自带python2.7.5,也可使用下面源码安装。
方法二:
【 wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
tar xzf Python-2.7.12.tgz
cd Python-2.7.12/
./configure --prefix=/usr/local/python CFLAGS=-fPIC
make && make install
cd ../
】
将Python加入环境变量
在/etc/profile文件末尾添加以下内容:
export PATH=/usr/local/python/bin:$PATH
然后使配置文件生效:
. /etc/profile
安装setuptools
方法一: yum install python-setuptools
方法二:
wget https://pypi.python.org/packages/6b/dd/a7de8caeeffab76bacf56972b3f090c12e0ae6932245abbce706690a6436/setuptools-28.3.0.tar.gz
tar xzf setuptools-28.3.0.tar.gz
cd setuptools-28.3.0/
python setup.py install
cd ../
安装pip
wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz
tar xzf pip-8.1.2.tar.gz
cd pip-8.1.2/
python setup.py install
cd ../
安装Apache
安装apr
wget http://apache.fayea.com/apr/apr-1.5.2.tar.bz2
tar xjf apr-1.5.2.tar.bz2
cd apr-1.5.2/
./configure
make && make install
cd ../
安装apr-util
wget http://apache.fayea.com/apr/apr-util-1.5.4.tar.bz2
tar xjf apr-util-1.5.4.tar.bz2
cd apr-util-1.5.4/
./configure --with-apr=/usr/local/apr/
make && make install
cd ../
安装pcre
yum -y install gcc-c++
方法一:yum install pcre
方法二:
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.bz2
tar xjf pcre-8.39.tar.bz2
cd pcre-8.39/
./configure --prefix=/usr/local/pcre
make && make install
cd ../
备注:不安装gcc-c++的话会报错。
安装httpd
yum -y install perl
方法一: yum install http*
方法二:
wget http://apache.fayea.com/httpd/httpd-2.4.23.tar.bz2
tar xjf httpd-2.4.23.tar.bz2
cd httpd-2.4.23/
./configure --prefix=/usr/local/httpd --with-pcre=/usr/local/pcre
make && make install
cd ../
备注:不安装perl的话,安装mod_wsgi时会报错。
将Apache加入环境变量
在/etc/profile文件末尾添加以下内容:
export PATH=/usr/local/httpd/bin:$PATH
然后使配置文件生效:
. /etc/profile
以上apache可以改成nginx
安装nginx
yum install nginx*
安装mod_wsgi
方法一: yum install mod_wsgi
方法二:wget https://pypi.python.org/packages/28/a7/de0dd1f4fae5b2ace921042071ae8563ce47dac475b332e288bc1d773e8d/mod_wsgi-4.5.7.tar.gz
tar xzf mod_wsgi-4.5.7.tar.gz
cd mod_wsgi-4.5.7/
./configure --with-apxs=/usr/local/httpd/bin/apxs --with-python=/usr/local/python/bin/python
make && make install
chmod 755 /usr/local/httpd/modules/mod_wsgi.so
cd ../
安装Django
方法一:yum install python-django
方法二:wget https://pypi.python.org/packages/8a/09/46f790104abca7eb93786139d3adde9366b1afd59a77b583a1f310dc8cbd/Django-1.10.2-py2.py3-none-any.whl
pip install Django-1.10.2-py2.py3-none-any.whl
安装MySQLdb(连接库使用的是mysql)
yum -y install mysql-devel
pip install MySQL-python
配置Django
将你开发好的Django程序上传到服务器,我这里上传到/wwwroot/目录。
这里面有个文件特别关键,能否正常运行就看它了,它就是wsgi.py,下面是我的文件的内容,供读者参考:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
注意:前两句需要自己添加,如果没有这两句,你的程序就不能正常运行了,后面的是Django自动生成的。
配置Nginx
location / {
uwsgi_send_timeout ;
uwsgi_connect_timeout ;
uwsgi_read_timeout ;
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:;
}
location /static {
alias /wwwroot/static;
}
如果选用apache: 配置Apache
启用虚拟主机配置文件
编辑/usr/local/httpd/conf/httpd.conf文件,找到下面这句并取消注释:
#Include conf/extra/httpd-vhosts.conf
在一堆以LoadModule开头的段落下添加一行:
LoadModule wsgi_module modules/mod_wsgi.so
修改虚拟主机配置文件
编辑/usr/local/httpd/conf/extra/httpd-vhosts.conf文件,将原来的配置全部注释掉(已经注释过的就不用再注释了),然后在末尾添加以下内容:
<VirtualHost *:80>
DocumentRoot "/wwwroot/mysite"
WSGIScriptAlias / "/wwwroot/mysite/wsgi.py" <Directory "/wwwroot/mysite">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
注意:读者请根据自己的程序修改其中的路径。
最后启动Web服务并测试【启动nginx或apache】 使用Nginx,可启动nginx后,将wsgi启动,即可通过页面访问。
Django百科全书,非常详细的文档:http://python.usyiyi.cn/translate/django_182/index.html
django, CentOS7+nginx(apache)+mod_wsgi+Python+Django的更多相关文章
- CentOS+Apache+mod_wsgi+Python+Django
前言 网上有关的教程千篇一律,都是无脑抄,自己都不验证一遍就直接复制,毫无意义,我通过官方文档和自己摸索,总结了一套教程. Django自带Web服务功能,但那只是方便开发调试,生产环境中一般将Dja ...
- windows下apache + mod_wsgi + python部署flask接口服务
windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...
- Apache mod_wsgi部署Django项目
学习python web开发,Django部署备忘 1.下载mod_wsgi,下载路径如下:http://code.google.com/p/modwsgi/downloads/list挑选For 2 ...
- 11.nginx upload module + python django 后台 实现视频上传与切片
1.需求:支持视频上传并切片,支持通过m3u8文件播放 2.视频切片的上一节已经谈过,这一节主要是视频上传的处理 第一步:upload-module模块安装 -----------首先下载upload ...
- Django 部署(Nginx)
本文主要讲解 nginx + uwsgi socket 的方式来部署 Django,比 Apache mod_wsgi 要复杂一些,但这是目前主流的方法. 推荐:使用Code Studio 云端开发, ...
- Django-Multitenant,分布式多租户数据库项目实战(Python/Django+Postgres+Citus)
Python/Django 支持分布式多租户数据库,如 Postgres+Citus. 通过将租户上下文添加到您的查询来实现轻松横向扩展,使数据库(例如 Citus)能够有效地将查询路由到正确的数据库 ...
- centos7安装python,mariaDB,django,nginx
0,安装centos7 centos默认不开启网卡,需要在安装时将ens33设置为on,或者后续通过vi ifcfg-ens33,找到onboot,设置为yes ssg登陆centos7时,如果提示W ...
- CentOS7.4 部署 Django + Python3 + Apache + Mod_wsgi
安装环境 Remote: CentOS 7.4 x64 (django.example.com) Python: Python3.6.5 Apache: Apache 2.4.6 Mod_wsgi: ...
- Cenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx到写nginx的环境部署(一)
梳理下这几个的关系: centos是redhat的社区版操作系统. Python2.7.5是开发语言(centos6.5下自带的python是2.6.6版本,所以需要源码更新,而centos7.1下面 ...
随机推荐
- flask 继承模版的基本使用
- CSS的伪类 :before 和 :after
CSS 有两个说不上常用的伪类 :before 和 :after,偶尔会被人用来添加些自定义格式什么的,但是它们的功用不仅于此.前几天发现了 Creative Link Effects 这个非常有意思 ...
- 子级用css float浮动 而父级不能自适应高度解决方法
解决子级对象使用css float浮动 而父级div不能自适应高度,不能被父级内容撑开解决方法,父级div没有高度解决方法. 当在对象内的盒子使用了float后,导致对象本身不能被撑开自适应高度,这个 ...
- linux系统下php扩展的安装
0. 这里以php安装redis扩展为例 1. 首先下载并解压redis扩展包 [root@xxx ~]# cd /usr/local/src [root@xxx src]# wget https:/ ...
- zookeeper安装及使用
0. 下载并安装 1. 开机启动 cd /etc/rc.d/init.d touch zookeeper vi zookeeper #!/bin/bash #chkconfig #descripti ...
- 51Nod1782 圣诞树
传送门 我居然忘写题解啦!(记忆废) 总的来说这题就是道大数据结构……看我代码长度就知道了,真的是长得要死…… …… 这题的操作都是路径修改单点查询,因此可以树上差分,问题就变成了维护子树中的所有标记 ...
- 字符数字转换 atoi 与 strtol
原文:http://www.cnblogs.com/JefferyZhou/archive/2010/07/01/1769555.html 在很多时候我们都很清楚 atoX 系列函数: atoi , ...
- 面试准备5之rest-framework部分
rest-framework部分 1.你理解的Http协议? 答:1超文本协议,基于tcp协议的应用层协议,端口号80 本质就是一个socket客户端.请求-->响应-->断开 2 无连接 ...
- js 显示 base64编码 的二进制流 图片
Data URI scheme.Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入.比如上面那串字符,其实是一张小图片,将这些字 ...
- 使用github参与到开源项目的维护
参与到开源项目的维护工作一般分两种,一种是由项目建立者拉入到贡献者列表中,拥有对项目的读写权限,而普通用户对项目仅有读取权限,另一种是fork项目到自己仓库,然后把修改后的内容发送给项目管理者者请求合 ...