Nginx+PostgreSQL+Django+UWSGI搭建
最近因为项目上的需要开始大量使用nginx,因此也想趁机将以前常用的django+apache的架构换成django+nginx。常见的 django webapp 部署方式采用FCGI 或 WSGI的方式部署,在这里主要对CentOS 6.5下Python 2.7.5环境下采用 Nginx + PostgreSQL + Django + uwsgi 的搭建与配置步骤做一个简要说明,主要留作备忘,也希望对大家有所帮助。
一、Nginx-1.6.2安装
1. 在安装nginx前,需要确保系统安装了g++、gcc、openssl、openssl-devel、pcre、pcre-devel和zlib、zlib-devel软件。安装必须软件:
root@localhost :: /usr/local => yum install gcc-c++ => yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
2. 卸载系统原有的nginx
root@localhost :: /usr/local => yum remove nginx
3. 编译安装Nginx
root@localhost :: /usr/local/download => wget http://nginx.org/download/nginx-1.6.2.tar.gz => .tar.gz => cd nginx- => ./configure --prefix=/usr/local/nginx- => make && make install => /sbin/nginx /usr/bin/nginx
4. 启动Nginx
root@localhost :: /usr/local/download/nginx- => /usr/local/nginx-/sbin/nginx
其他nginx常用命令: => /usr/local/nginx-/sbin/nginx -s reload # nginx重启(stop, quit, reopen, reload)
5. 测试是否安装成功
#测试端口
netstat –na|
#浏览器中测试(有时候ip:80无法显示,需要关闭防火墙的干扰:service iptables stop)
http://localhost
# Nginx正常启动:

二、PostgreSQL-9.4.0安装
1. 新增用户组及用户
PostgreSQL默认是通过postgres:postgres来启动和使用的,因此在安装PostgreSQL前需要先创建postgres用户组及postgres用户。
root@localhost 11:30:18 ~
=> groupadd postgres
=> useradd postgres -g postgres
=> passwd postgres #设置postgres用户密码
2、安装postgresql-9.4.0
root@localhost :: /usr/local/download => wget https://ftp.postgresql.org/pub/source/v9.4.0/postgresql-9.4.0.tar.gz => .tar.gz => cd postgresql- => ./configure --prefix=/usr/local/postgresql- => make => make install
3. PostgreSQL启动
# 新建数据库文件保存目录
=> /database
# 新建数据库log文件目录
=> /logdb
# 修改目录拥有者
=> /database -R => /logdb –R
# 执行数据库初始化脚本
=> su postgres [postgres@localhost postgresql-]$ /usr/local/postgresql-/bin/initdb --encoding=utf8 -D /usr/local/postgresql-/database
# 启动PostgreSQL服务
[postgres@localhost postgresql-]$ /log/logfile [postgres@localhost postgresql-]$ /usr/local/postgresql-/bin/pg_ctl -D /usr/local/postgresql-/database -l /usr/local/postgresql-/logdb/logfile start
# 登录PostgreSQL数据库
[postgres@localhost postgresql-]$ psql

三、Django-1.6.10安装
1. 源码安装
root@localhost :: /usr/local/download => wget https://www.djangoproject.com/m/releases/1.6/Django-1.6.10.tar.gz => .tar.gz => cd Django- => python setup.py install
2.测试是否安装成功

四、uwsgi-2.0.5.1安装
1. 源码安装
root@localhost :: /usr/local/download => wget http://projects.unbit.it/downloads/uwsgi-2.0.5.1.tar.gz => tar zvxf uwsgi-2.0.5.1.tar.gz => cd uwsgi-2.0.5.1 => python setup.py install
# 该安装,默认将uwsgi安装在了$python的路径下了,我这里安装在了:/usr/local/python2.7/bin/uwsgi
2. 测试是否安装成功
root@localhost :: /App/tmp
=> vi test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello Worldi,uwsgi success!"
root@localhost :: /App/tmp => uwsgi --http : --wsgi-file /App/tmp/test.py

五、Django配置使用PostgreSQL
1. 安装psycopg2
Python使用PostgreSQL数据库,需要通过psycopg2进行调用,因此Django中使用PostgreSQL,就先应该安装psycopg2模块:
root@localhost :: /usr/local/download => wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.4.tar.gz => .tar.gz => cd psycopg2- => python setup.py install
2. 创建Django Project
root@localhost :: /App/django-websites => python /usr/local/python2./bin/django-admin.py startproject websites
3. 设置Django使用PostgreSQL
root@localhost :: /App/django-websites/websites/websites => vi settings.py …………
DATABASES = {
'default': {
#'ENGINE': 'django.db.backends.sqlite3',
#'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE' : 'django.db.backends.postgresql_psycopg2',
'NAME' : 'djangodb',
'USER' : 'django',
',
'HOST' : 'localhost',
',
}
}
………
4. 创建后台数据库
shenweiyan@localhost :: /App/django-websites/websites => python manage.py syncdb Creating tables ... Creating table django_admin_log Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_groups Creating table auth_user_user_permissions Creating table auth_user Creating table django_content_type Creating table django_session You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes # 输入yes/no Username (leave blank to use 'shenweiyanj'): django(不输,即默认当前系统用户名) Email address: # 邮箱地址,不输的话,可直接enter跳过 Password: 123456 # 密码 Password (again): 123456 # 确认密码 Superuser created successfully. Installing custom SQL ... Installing indexes ... Installed fixture(s)
六、uWSGI搭配Nginx+Django使用
1. Nginx 配置
#在 nginx.conf 上加入/修改,我的 server 配置如下(一切从简……):
server {
listen ;
server_name localhost;
#charset koi8-r;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1;mode=block";
server_tokens off;
#access_log logs/host.access.log main;
access_log /usr/local/nginx-/logs/access.log;
error_log /usr/local/nginx-/logs/error.log;
location /static { alias /usr/local/python2.7/lib/python2.7/site-packages/django/contrib/admin/static/; }
location / {
uwsgi_pass ;
include uwsgi_params;
}
#error_page /.html;
}
2. uWSGI 配置
# ini 配置
root@localhost :: ~ => mkdir -p /etc/uwsgi/logs root@localhost :: ~ => vi /etc/uwsgi/uwsgi.ini [uwsgi] socket= listen= max-requests= socket-timeout= master=true pidfile=/etc/uwsgi/logs/uwsgi.pid processes= pythonpath=/App/django-websites/websites/ chdir=/App/django-websites/websites/websites module=websites.wsgi:application profiler=true memory-report=true enable-threads=true logdate=true limit-as= uid=nobody gid=nobody daemonize=/etc/uwsgi/logs/django.log
# 启动uwsgi
root@localhost :: ~ => uwsgi /etc/uwsgi/uwsgi.ini [uWSGI] getting INI configuration from /etc/uwsgi/uwsgi.ini
# 每一次Django后台数据库进行修改,均需要重启uwsgi,其重启可通过kill掉/etc/uwsgi/logs/uwsgi.pid,再利用“uwsgi /etc/uwsgi/uwsgi.ini”启动即可。
七、完成安装
至此,Nginx+PostgreSQL+Django+UWSGI搭建已全部完成,我们在网页浏览器打开:http://localhost/admin/,输入五(4)中设置的用户名(django)和密码(django)登录Django的后台数据库管理界面,即可看到相应的后台数据库信息。

Nginx+PostgreSQL+Django+UWSGI搭建的更多相关文章
- python+django+uwsgi 搭建环境
第一步: 搭建python环境 最好使用 pyenv可以很好的管理多版本下的python环境 第二步:搭建django环境 使用 pip install django==1.12.1 来安 ...
- 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略
centos7+nginx+python3+django+uwsgi配置Django 项目部署 1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...
- CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...
- django uWSGI nginx搭建一个web服务器 确定可用
网上的找了很多篇 不知道为什么不行,于是自己搭建了一个可用的Web 大家可按步骤尝试 总结下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: .确保有一个能够用runserver ...
- Django+Nginx+uwsgi搭建自己的博客(五)
在上一篇博文中,向大家介绍了Users App和Index的前端部分的实现,以及前端与Django的通信部分.至此,我们的博客已经具备一个简单的雏形,可以将其部署在本地的服务器上了.目前较为流行的we ...
- centos下Django+uwsgi+nginx
本篇章主要讲解uwsgi和nginx的作用,并利用两者对django项目进行部署 一.概述 在开发过程中,我们一般是在该项目的虚拟环境中启用django自带的web服务:python manage.p ...
- nginx+django+uwsgi
最近来了兴致,想搞一下django开发,so, 搭建一下环境 1.安装django,可能通过pip install 或者源码安装(因为环境是python2.6.6的环境,所以这里采用django 1 ...
- Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...
- django+uWSGI+nginx的工作原理流程与部署过程
django+uWSGI+nginx的工作原理流程与部署过程 一.前言 知识的分享,不应该只是展示出来,还应该解释这样做是为什么... 献给和我一样懵懂中不断汲取知识,进步的人们. 授人与鱼,不如授人 ...
随机推荐
- HasMap
您还未登录 ! 登录 注册 论坛首页 → Java企业应用论坛 → 深入理解HashMap 全部 Hibernate Spring Struts iBATIS 企业应用 Lucene SOA Java ...
- tomcat 发布webService
<!-- tomcat发布webservice时所需jar --> <dependency> <groupId>com.sun.xml.ws</groupId ...
- SQL Server数据恢复——日志备份
太坑了,我把数据给删了 “大坑啊,数据被我误删了.”从事数据库相关工作的过程中,我想应该很多人会有过和我一样的遭遇吧?尤其是在进行update或者delete操作的时候,忘记了where条件.这些毁灭 ...
- JavaScript 对象扩展代码
JavaScript 扩展代码 更具需要写的几个扩展. 扩展核心自执行函数 Object.extend /** * 对象扩展体 参数是 {属性|方法:属性值|方法体} * 只执行实现 * * 实例对基 ...
- zend guard loader
1 .是zendoptimizer的前身, 在php 5.3 (含)之前使用更新到6 ,5.4 之后不再使用.是代码优化的一种,7中opcache 类似功效. 2 .php版本的变量 phpversi ...
- 论山寨手机与Android联姻 【3】手机是怎样生产出来的
要说清楚MTK在商业模式上有什么优势,以及Android对于MTK未来的手机开发会有什么影响,首先得了解手机从设计,开发到生产的整个过程.让我们先来看看手机的生产过程.在生产制造环节,山寨手机和正牌手 ...
- draw lines on ColumnChart
原文 http://blog.csdn.net/lixuekun820/article/details/5485042 Summary: Adobe 的 Flex Chart提供了很强大的功能,通过简 ...
- android开发关于和使用本机内存、内置存储卡和外置存储卡 (转)
转自:http://www.2cto.com/kf/201304/204729.html 关于android存储器简介: android开发常常需要涉及数据缓存,这就 ...
- MySQL必知必会 学习笔记(一)
第一章 了解SQL 模式: 关于数据库和表的布局以及特性的信息.[描述表可以存储什么样的数据,数据如何分解,各部分信息如何命名等等,可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)] ...
- js计算时间差,包括计算,天,时,分,秒
收集两个计算时间差的计算方法代码片段: var date1=new Date(); //开始时间 var date2=new Date(); //结束时间 var date3=date2.getTim ...