百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能(项目怎么启动服务器)

toyiye 2024-04-04 11:41 23 浏览 0 评论

之前一直使用Nginx+Fastcgi来搭建python web服务器,本文介绍Nginx+UWSGI组合来实现。uWSGI 是一个快速的、纯C语言开发的、自维护的、对开发者友好的WSGI服务器,旨在提供专业的 Python web应用发布和开发。它更符合python web的标准协议,速度要比Fastcgi要快、性能更加稳定。

一、安装平台

1、安装pcre

复制代码

代码如下:

cd /home

mkdir -p /home/install/nginx && cd /home/install/nginx

wget http://ftp.exim.llorien.org/pcre/pcre-8.00.tar.gz

tar -zxvf pcre-8.00.tar.gz

cd pcre-8.00

./configure

make && make install

cd ..

2、安装Nginx

复制代码

代码如下:

wget http://nginx.org/download/nginx-0.8.50.tar.gz

tar -zxvf nginx-0.8.50.tar.gz

cd nginx-0.8.50/

./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-cc-opt='-O3' --with-cpu-opt=opteron

make && make install

cd ..

3、安装python&Mysql-python

复制代码

代码如下:

wget http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tgz

tar -zxvf Python-2.5.1.tgz

cd Python-2.5.1

./configure && make && make install

echo "export PATH=\$PATH:/usr/local/bin" >> /etc/profile

source /etc/profile

4、安装MySql-python

复制代码

代码如下:

cd ../

wget http://downloads.sourceforge.net/project/mysql-python/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz?r=&ts=1285248455&use_mirror=nchc

cd MySQL-python-1.2.2

python setup.py install

5、安装Django

复制代码

代码如下:

wget http://www.djangoproject.com/download/1.2.3/tarball/

tar -zxvf Django-1.2.3.tar.gz

cd Django-1.2.3

python setup.py install

cd ..

6、安装uWSGI

复制代码

代码如下:

wget http://projects.unbit.it/downloads/uwsgi-0.9.6.2.tar.gz

tar -zxvf uwsgi-0.9.6.2.tar.gz

cd uwsgi-0.9.6.2

make

cp uwsgi /usr/bin

二、平台配置

1、平台环境说明

1.1、项目位置:/opt/www/Purgesys

创建项目方法:

复制代码

代码如下:

cd /opt/www

django-admin.py startproject Purgesys

1.2、查看项目(出现以下文件结构说明项目已创建成功)

#tree Purgesys

复制代码

代码如下:

Purgesys

|-- __init__.py

|-- manage.py

|-- settings.py

`-- urls.py

2、Nginx相关配置

#cd /usr/local/nginx/conf

#vi django_uwsgi.conf

# Django project
server {
 listen 80;
 server_name purgesys.domain.com;
 location / {
 uwsgi_pass 127.0.0.1:9000;
 include uwsgi_params;
 access_log off;
 }
 location ^~ /static {
 root /opt/www/Purgesys;
 }
 location ^~ /admin/ {
 uwsgi_pass 127.0.0.1:9000;
 include uwsgi_params;
 access_log off;
 }
 location ~* ^.+\.(mpg|avi|mp3|swf|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|rtf|mpeg)$ {
 root /opt/www/Purgesys/static;
 access_log off;
 }
}

*Nginx-0.8.50默认已添加uwsgi输出头支持

include uwsgi_params;

#vi nginx.conf

追加子配置文件django_uwsgi.conf

http{ 
........ 
include django_uwsgi.conf; 
} 

3、UWSGI配置

#mkdir -p /home/uwsgi;cd /home/uwsgi

#mkdir -p /opt/www/logs

#echo "" > /opt/www/logs/django.log

#vi uwsgi.xml

<uwsgi>
 <socket>127.0.0.1:9000</socket>
 <listen>200</listen>
 <master>true</master>
 <pidfile>/usr/local/nginx/uwsgi.pid</pidfile>
 <processes>8</processes>
 <pythonpath>/opt/www/Purgesys</pythonpath>
 <pythonpath>/opt/www/</pythonpath>
 <module>django_wsgi</module>
 <profiler>true</profiler>
 <memory-report>true</memory-report>
 <enable-threads>true</enable-threads>
 <logdate>true</logdate>
 <limit-as>6048</limit-as>
 <daemonize>/opt/www/logs/django.log</daemonize>
</uwsgi>

4、创建应用模块

cd /opt/www/Purgesys

vi django_wsgi.py

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'Purgesys.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

5、启动服务

#/usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

#/usr/local/nginx/sbin/nginx

6、查看进程

#[liuts@webserver nginx]# ps -ef|grep uwsgi|grep -v grep

复制代码

代码如下:

root 21652 1 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

root 21653 21652 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

root 21654 21652 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

root 21655 21652 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

root 21656 21652 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

root 21657 21652 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

root 21658 21652 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

root 21659 21652 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

root 21660 21652 0 17:12 ? 00:00:00 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml

7、监听端口

#[liuts@webserver nginx]# netstat -an|grep 9000

引用

tcp 0 127.0.0.1:9000 0.0.0.0:* LISTEN

8、访问测试

输入http://serverip/

大功告成!

*附uwsgi启动脚本

#cd /home/uwsgi

#vi uwsgiserver.sh

#!/bin/bash
if [ $1 = start ];then
 psid=`ps aux|grep "uwsgi"|grep -v "grep"|wc -l`
 if [ $psid -gt 2 ];then
 echo "uwsgi is running!"
 exit 0
 else
 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml
 fi
 echo "Start uwsgi service [OK]"
elif [ $1 = stop ];then
 killall -9 uwsgi
 echo "Stop uwsgi service [OK]"
elif [ $1 = restart ];then
 killall -9 uwsgi
 /usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml
 echo "Restart uwsgi service [OK]"
else
 echo "Usages: sh uwsgiserver.sh [start|stop|restart]"
fi

#sh uwsgiserver.sh start

[uWSGI] parsing config file /home/uwsgi/uwsgi.xml

Start uwsgi service [OK]

如大家有什么疑问或感兴趣的话题可以通过weibo与我交流:http://t.qq.com/yorkoliu

以下是补充:

1、MySQL-python 安装错误如下

from setuptools import setup ImportError:

先安装

python ez_setup.py

在安装

python setup.py install

贴一下,方便其他兄弟了

2、我的nginx+uwsgi+django遇到大header的request,经常出现502,uwsgi报的是 invalid request header size,何解我的uwsgi配置为[uwsgi]socket = :8010master = truemodule = django_wsgiprocesses = 8home = /path/to/virtualenvharakiri = 20daemonize = /path/to/uwsgi.logpidfile = /path/to/uwsgi.pidpythonpath = /path/to/projectpythonpath = /path/to/uwsgibuffer-size = 32768reload-mercy = 8max-requests = 5000socket-timeout = 4

解决方法:大header可以修改nginx http head部分参数。

3、Nginx报502,但是uwsgi正常启动端口9000也正常监听。有可能是应用程序有错误导致。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码