文档章节

Nginx+uWSGI+DJango+Python+ Mysql 搭建可靠的python web服务

 我的去哈哈
发布于 2014/03/28 04:24
字数 960
阅读 276
收藏 6

本文出自:http://www.huxun360.com/view_blog/28

一、安装所需工具

yum -y install gcc gcc-c++ rpm-build mysql* libtool-ltdl* libtool automake autoconf libtool make setuptool

二、编译安装python2.7.5

1. 下载python2.7.5,保存到 /data/qtongmon/software

http://www.python.org/ftp/python/


2. 解压文件

tar xvf Python-2.7.5.tar.bz2


3. 创建安装目录

mkdir /usr/local/python27


4. 安装python

./configure --prefix=/usr/local/python27 --enable-shared

make

make install


5. 修改老版本的ln指向(注意:这里修改后,可能会影响yum的使用)

mv /usr/bin/python /usr/bin/python2.4.3

ln -s /usr/local/python27/bin/python /usr/bin/python


6.yum是使用python写的,升级新版本的python后会导致yum不可用,如下为运行yum时的错误提示:

There was a problem importing one of the Python modules

required to run yum. The error leading to this problem was:

No module named yum

解决方法:

查找yum文件,并编辑此py文件

[root@TC-Boss ~]# which yum

/usr/bin/yum

[root@TC-Boss ~]# vi /usr/bin/yum

#!/usr/bin/python

改为:

whereis python出来的结果(老版本的python)

#!/usr/bin/python2.6

然后保存OK.



二、安装uWSGI

下载uWSGI的最新版

wget http://projects.unbit.it/downloads/

因为我最后采用xml配置django app 的部署,所以编译 uWSGI 时候需要把libxml编译进去

yum -y install libxml2-devel

剩下的就简单了

tar zxvf uwsgi-1.9.17.tar.gz

cd uwsgi-1.9.17

make

cp uwsgi /usr/sbin/uwsgi

如果遇到错误:python: error while loading shared libraries: libpython2.7.so.1.0:

cannot open shared object file: No such file

按如下方式解决:

vim /etc/ld.so.conf.d/python2.7.conf

加入以下内容:/usr/local/python27/lib (实际的python安装路径下的lib目录)

保存退出后运行:

ldconfig

即可


至此 uWSGI 就算是安装完成了,下一步安装 Nginx


三、Nginx 安装

参考另一篇文章:http://galean.blog.51cto.com/7702012/1268352

注意编译的时候要加上参数:--with-cc-opt='-O3' --with-cpu-opt=opteron

[root@htuidc nginx-1.4.2]# ./configure --with-http_stub_status_module --prefix=/usr/local/nginx --with-cc-opt='-O3' --with-cpu-opt=opteron


四、安装MySql-python

wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download

tar zxvf MySQL-python-1.2.3.tar.gz

cd MySQL-python-1.2.3

python setup.py install


ImportError: No module named setuptools 解决方案 :

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz

tar zxvf setuptools-0.6c11.tar.gz

cd setuptools-0.6c11

python setup.py build

python setup.py install


/usr/bin/ld: cannot find -lpython2.7错误,解决方案 :

cd /usr/lib

ln -s /usr/local/python27/lib/libpython2.7.so libpython2.7.so

ll -a|grep python

lrwxrwxrwx. 1 root root 39 Oct 1 16:39 libpython2.7.so -> /usr/local/python27/lib/libpython2.7.so

drwxr-xr-x. 3 root root 4096 May 3 15:15 python2.6


出错:error: command 'gcc' failed with exit status 1

处理方法:

yum -y install mysql-devel

安装完成,到你的python安装目录下的site-packages目录里检查以下文件是否存在,如果存在即代表安装成功了

Linux:MySQL_python-1.2.3c1-py2.6-linux-i686.egg

测试方法

1)运行命令python进入python运行环境

2)输入以下python代码进行测试

import MySQLdb

test=MySQLdb.connect(db='mydb',host='localhost',user='root',passwd='p')

cur = test.cursor()

cur.execute('show databases;')

for data in cur.fetchall():

print data


五、安装Django

wget https://www.djangoproject.com/m/releases/1.5/Django-1.5.4.tar.gz

tar xzvf Django-1.5.4.tar.gz

cd Django-1.5.4

python setup.py install


测试Django安装

终端中输入 python,进入python交互模式,输入如下:

>>>import django

django.VERSION

正常情况会显示版本号码。


六、nginx配置

server {

 listen  80; ## listen for ipv4; this line is default and implied

 #listen  [::]:80 default ipv6only=on; ## listen for ipv6

 server_name blog.hysia.com;

 access_log /var/log/nginx/blog.hysia.com-access.log ;

 error_log /var/log/nginx/blog.hysia.com-error.log ;


 location / {

     uwsgi_pass 127.0.0.1:8630;

     include uwsgi_params;

 }

}


七、配置Django app

配置很简单,几乎不用改动你app的任何文件。

首先在你的app目录创建个wsgi.py 文件,内容如下:

import os,sys

if not os.path.dirname(__file__) in sys.path[:1]:

 sys.path.insert(0, os.path.dirname(__file__))

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'


from django.core.handlers.wsgi import WSGIHandler

application = WSGIHandler()


然后在app目录创建个django.xml文件,作为uWSGI运行的配置文件,内容如下:

<uwsgi>

 <socket>127.0.0.1:8630</socket>

 <chdir>/data/web/vpssite</chdir>

 <pythonpath>..</pythonpath>

 <module>wsgi</module>

</uwsgi>


最后一步,运行 uWSGI 就行了,如下:

uwsgi -x /data/web/vpssite/django.xml

这样你的Django app 就用 uWSGI hold住了。django.xml的配置远不止这些比如log文件,内存限制等等,具体的可以参考 http://projects.unbit.it/uwsgi/wiki/Example


© 著作权归作者所有

粉丝 3
博文 57
码字总数 55253
作品 0
东城
私信 提问
(旧)3- Flask构建弹幕微电影网站- 课程介绍

Flask 构建微电影视频网站 已上线演示地址: http://movie.mtianyan.cn 项目源码地址:https://github.com/mtianyan/movieproject 持续更新教程与代码commit。欢迎大家一起学习,star。 介绍微...

天涯明月笙
2018/02/11
0
0
windows 下 python apache mysql 环境搭建

朋友建议学习python一下 据说可以做很多事情 而我只会PHP 于是就想想学习一下python 首先要搭建环境吧 在网上搜了一下 大多都是 用了mod_python 这个东西 我也搞不清楚是什么东西 反正就是按...

长宁楚王陈涉
2013/09/08
1K
6
十分钟上线-在FC上部署基于django开发的个人博客系统

前言 这篇文章适合所有的python开发新手、老鸟以及想准备学习开发python的程序猿。本文以一个基于django开源的个人博客移植到函数计算为例,向您讲解如何使用阿里云函数计算快速构建或移植基...

rsong
2018/06/21
0
0
如何使用阿里云主机搭建lordofpomelo

最近使用osc赠送的88元代金卷,用1元的价格购买了1个月阿里云主机..适逢网易开源了一个基于Node.js的游戏服务端框架 pomelo.就顺手搭建了一个官方提供的demo.网上看到很多同志搭建失败.这里分...

酒逍遥
2012/11/26
609
1
Python开发文件分享系统,让协同工作变得简单!

在工作中,大家应该都遇到过这类问题:一项工作需要多人配合协调来完成,或者个人的工作内容会影响整个团队等问题,这个时候,能及时记录与分享个人的工作就显得尤为重要。也许你可以微信、Q...

妄心xyx
03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员Java教程分享Zookeeper基本原理与运用场景

好程序员Java教程分享Zookeeper基本原理与运用场景一、什么是Zookeeper? zookeeper是一个分布式的一致性协调服务。 换句话说,也可以把zookeeper看成一个小型的分布式文件系统。但是和FastD...

好程序员官网
32分钟前
6
0
mysql表情符

1 修改表字段为utf8md4 ALTER table property_info MODIFY `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL 2 MySQL数据库服务器配置文件mysqld.cn......

干死it
51分钟前
4
0
正则表达式的基本语法

本文摘自LTP.NET知识库。 正则表达式的形式一般如下: /love/ 其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。 用户只要把希望查找匹配对象的模式内容放入“/”定界符之...

木庄
53分钟前
6
0
java 框架有哪些?

十大常用框架: 一、SpringMVC 二、Spring 三、Mybatis 四、Dubbo 五、Maven 六、RabbitMQ 七、Log4j 八、Ehcache 九、Redis 十、Shiro 延展阅读: 一、SpringMVC Spring Web MVC是一种基于J...

java框架开发者
53分钟前
10
0
细谈Mysql事务

文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。 上一篇着重谈到了MySQL锁的概念,里面谈到了事务的概念,其实大部分开发者对于事务肯定不陌生,...

程序猿周先森
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部