最近因为项目上的需要开始大量使用nginx,因此也想趁机将以前常用的django+apache的架构换成django+nginx。常见的 django webapp 部署方式采用FCGIWSGI的方式部署,在这里主要对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搭建的更多相关文章

  1. python+django+uwsgi 搭建环境

    第一步: 搭建python环境 最好使用  pyenv可以很好的管理多版本下的python环境 第二步:搭建django环境 使用    pip install django==1.12.1   来安 ...

  2. 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略

    centos7+nginx+python3+django+uwsgi配置Django 项目部署   1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...

  3. CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...

  4. django uWSGI nginx搭建一个web服务器 确定可用

    网上的找了很多篇 不知道为什么不行,于是自己搭建了一个可用的Web 大家可按步骤尝试 总结下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: .确保有一个能够用runserver ...

  5. Django+Nginx+uwsgi搭建自己的博客(五)

    在上一篇博文中,向大家介绍了Users App和Index的前端部分的实现,以及前端与Django的通信部分.至此,我们的博客已经具备一个简单的雏形,可以将其部署在本地的服务器上了.目前较为流行的we ...

  6. centos下Django+uwsgi+nginx

    本篇章主要讲解uwsgi和nginx的作用,并利用两者对django项目进行部署 一.概述 在开发过程中,我们一般是在该项目的虚拟环境中启用django自带的web服务:python manage.p ...

  7. nginx+django+uwsgi

    最近来了兴致,想搞一下django开发,so,  搭建一下环境 1.安装django,可能通过pip install 或者源码安装(因为环境是python2.6.6的环境,所以这里采用django 1 ...

  8. Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)

    Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...

  9. django+uWSGI+nginx的工作原理流程与部署过程

    django+uWSGI+nginx的工作原理流程与部署过程 一.前言 知识的分享,不应该只是展示出来,还应该解释这样做是为什么... 献给和我一样懵懂中不断汲取知识,进步的人们. 授人与鱼,不如授人 ...

随机推荐

  1. UVA 12219 Common Subexpression Elimination

    题意: 求最小的表达式树,也就是把相同的表达式子树给替换成最前面相同的编号. 分析: 用map<string,int>smp;存放子树对应的字符串,如果以后出现相同的子树则用相同编号表示. ...

  2. NHibernate各种数据库连接参数文件配置方法说明

    //NHibernate各种数据库连接参数文件配置方法说明 //配置文件Config/Hibernate.cfg.xml内容如下所示: <?xml version="1.0" ...

  3. Java面试题整理(题目内容非原创)

    面试题分类: 1.java 基础面试题 Java基础中对于io 中文件的读.写,util中的list map set这些要分清楚 还有线程.socket 都需要了解下 参考链接:http://blog ...

  4. BestCoder Round #75 1003 - King's Order

    国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令. 由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令.由于大洋国在军队中安插了间谍 , 战事紧急, ...

  5. 菜鸟的jQuery源码学习笔记(三)

    each: function(callback, args) { return jQuery.each(this, callback, args); }, each:这个调用了jQuery.each方 ...

  6. Bitmap、BitmapDrawable、BitmapFactory、Matrix类之间的关系

    1.BitmapFactory是一个工具类 Bitmap实现在android.graphics包中.但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化.这必然是 某个辅助类 ...

  7. Java值创建线程的两种方式对比

    在Java中创建线程的方式有两种,第一种是直接继承Thead类,另一种是实现Runable接口.那么这两种方式孰优孰劣呢? 采用继承Thead类实现多线程: 优势:编写简单,如果需要访问当前线程,只需 ...

  8. 动态规划-Burst Balloons

    Burst Balloons Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it ...

  9. Tomcat Remote Debug操作和原理

    操作篇 这部分主要讲,如何开启tomcat远程调试,并佐以实例.本文方式适用于windows和linux. 假设有两台机器,A是tomcat服务器所在机器,B是IDE安装机器.A和B可以是同一台机器, ...

  10. STM32与LPC系列ARM资源之比较

    由于有周立公开发板的影响,LPC系列的开发板在工程师心目中一般是入门的最好型号之一.这次刚好有STM32的竞赛,正好将两者的资源进行比较一下(LPC系列以LPC213X为例). LPC213X包括LP ...