最近因为项目上的需要开始大量使用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. div滚动与控制

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head&g ...

  2. L13 DNS

    DNS: 根 root 分布式. 服务于终端客户,也服务于其他dns服务器.对其他dns服务器提供数据 是域名资料数据库,也是解析服务提供者.用户接入进来,可以得到解析的服务 仅管理下一级dns服务器 ...

  3. 华为S5700基础配置----备份和恢复配置文件

    一:备份配置文件 设备作为FTP服务器,用户PC作为FTP客户端 # 配置设备的FTP功能及FTP用户信息. <HUAWEI> system-view [HUAWEI] ftp serve ...

  4. HDU 1032 The 3n + 1 problem

    还以为要递归推一推的 结果暴力就过了 要注意 i,j 大小 #include <iostream> using namespace std; int a,b; long long cnt, ...

  5. linux 删除和安装java

    一.jdk1.4卸载 由于redhat Enterprise 5 中自带安装了jdk1.4的,所以在安装jdk1.6前我把jdk1.4的卸了,步骤如下:   1.打开终端输入#rpm -qa | gr ...

  6. Android Canvas不能换行,或者不识别\n,\r\n的解决方案

    在使用Canvas绘制文本的时候,如果要绘制的字符串含有\r\n,\n换行的时候,会识别不出来,当成空格绘制出来. 解决方案: 1.使用StaticLayout来实现,具体代码如下: TextPain ...

  7. WARNING [Project: :app] To shrink resources you must also enable ProGuard

    新版本的Android Gradle plugin中,对于resource有了更加一步的管理,可以把unused resource移除,不仅是自己工程,并且library里面也可以没有用到的,也可以移 ...

  8. Linux man 后面的数字含义及作用

    Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下: 1 Executable programs or shell co ...

  9. knockout 与checkbox联动

    knockout 通过teplate实现简单的代码实现复杂的操作绑定checkbox,代码如下自我感觉很赞!!! 前台HTml <ul data-bind="template: { n ...

  10. js cookie读取

    /**存放Cookies: 两个参数,一个是cookie的名子,一个是值*/ function SetCookie(name,value){ var Days = 30; //此 cookie 将被保 ...