最近因为项目上的需要开始大量使用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. Type.GetType()在跨程序集反射时返回null的解决方法

    在开发中,经常会遇到这种情况,在程序集A.dll中需要反射程序集B.dll中的类型.如果使用稍有不慎,就会产生运行时错误.例如使用Type.GetType("BNameSpace.Class ...

  2. ProgressBar、RatingBar和Spinner控件

    1.ProgressBar.SeekBar与RatingBar控件 ProgressBar控件,也就是我们通常的进度条控件,可以显示加载的进度等.SeekBar控件,滑块控件,可以根据用户的需要动态为 ...

  3. sqlserver 2008 局域网跨服务器T-SQL操作(二)

    --判断是否开启远程操作服务,如果关闭,则开启,用完之后关闭 DECLARE @value SQL_VARIANT SELECT @value=VALUE from sys.configuration ...

  4. NT kernel & System 占用占用80端口

    问题: 1 运行'netstat -ano'发现80端口被pid=4的进程占用 2 打开任务管理器,发现pid=4的进程,其实是system进程,其对应的进程描述是NT kernel & sy ...

  5. javascript 手机号抽奖

     案例   ----           手机号抽奖   开始抽奖  停止                                                       *具体的备注在代 ...

  6. Remove Element,Remove Duplicates from Sorted Array,Remove Duplicates from Sorted Array II

    以下三个问题的典型的两个指针处理数组的问题,一个指针用于遍历,一个指针用于指向当前处理到位置 一:Remove Element Given an array and a value, remove a ...

  7. com.sun.jdi.InvocationException occurred invoking method.

    文章来源于网络, 自己也遇到同样的问题,也是采用这样的方式解决的.原文链接http://zuiyanwangyue.iteye.com/blog/470638 在 HibernateDaoSuppor ...

  8. Android _优雅实现元素间的分割线 (支持3.0以下)

    转:http://blog.csdn.net/lmj623565791/article/details/42407923 1.概述 话说,随着Android SDK版本的升级,很多控件增加了新的属性方 ...

  9. jupyter巨好玩-调试代码自动变文档

    有时候,我们写python程序,总是会出现各种错误,当酒过三巡,菜过五味,所有问题都解决了之后,我们就想把犯过的错误总结一下,以便日后查询.这时候问题来了,难道要一一重现一下? jupyter来了!一 ...

  10. linux的NetworkManager服务

    在开启NetworkManager服务的情况下,在终端下敲“service network restart”命令: 正在关闭接口 eth0: 设备状态:3 (断开连接) [确定] 正在关闭接口 eth ...