展会信息港展会大全

Centos搭建Python+Nginx+Tornado+Mysql环境
来源:互联网   发布日期:2015-08-20 09:58:51   浏览:3067次  

导读: Python是一种解释型、面向对象、动 态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成 为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言...

Python是一种解释型、面向对象、动 态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成 为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。官网

Python-Programming-Language

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的 并发能力确实在同类型的网页服务器中表现较好。官网

Nginx (1)

Tornado是FriendFeed使用了一款使用 Python 编写的,相对简单的 非阻塞式 Web 服务器。其应用程序使用的 Web 框架看起来有些像 web.py 或者 Google 的 webapp, 不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化。 Tornado 就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题,请参阅 The C10K problem )官网

tornado

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内, 这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”), 它分为社区版和商业版,由于其体积孝速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。官网

mysql_logo

Python+Tornado的组合正在得到越来越多人的关注。Tornado和Nginx一样采用epoll的方式进行进程的调度。非阻塞的的调用方式轻易就解决了大并发的问题,再加上Python是开发轻量级、多并发程序的神器。所以,这个组给看上去相当不错。

下面我将介绍在UNIX(LINUX、MAC下的配置方法其本一致)下如何快速搭建其运行环境:

1、安装Python

wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz tar xvfz Python-2.7.5.tgzcd Python-2.7.5 ./configure

make

sudo make install

2、安装Python的包管理工具setuptools、pip和打包工具distribute

wget http://peak.telecommunity.com/dist/ez_setup.py python ez_setup.py

wget http://python-distribute.org/distribute_setup.py python distribute_setup.py

wget https://github.com/pypa/pip/raw/master/contrib/get-pip.py python get-pip.py

3、安装Readline

sudo pip install readline

4、安装Mysql

#安装cmake wget http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz

tar xvfz cmake-2.8.8.tar.gz

cd cmake-2.8.8

./configure

make

sudo make install #安装mysql wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.29.tar.gz

tar xvfz mysql-5.5.29.tar.gz

cd mysql-5.5.29

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/localmysql/data/ -DMYSQL_UNIX_ADDR=/usr/localmysql/data/mysqld.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_unicode_ci -DWITH_DEBUG=0

make

sudo make install #下载安装mysql-python wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz

tar xvfz MySQL-python-1.2.3.tar.gz

cd MySQL-python-1.2.3 #修改site.py中mysql_config的路径(为mysql安装路径下的/bin/mysql_config), site.py

mysql_config = /usr/local/mysql/bin/mysql_config #更改完进行编译和安装 python setup.py build

sudo python setup.py install #将mysql安装路径下的lib加入到环境变量LD_LIBRARY_PATH中 export LD_LIBRARY_PATH=/usr/local/mysql/lib/:$$LD_LIBRARY_PATH

5、安装一些Python的常用模块和tornado

pip install tornado

pip install torndb

pip install requests

pip install markdown

6、配置Mysql

groupadd mysql useradd -g mysql mysql chown mysql.mysql -R /service/mysql/ /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

7、安装Nginx

wget http://nginx.org/download/nginx-0.8.33.tar.gz tar zxvf nginx-0.8.33.tar.gz

cd nginx-0.8.33 ./configure

make

make install

8、配置nginx,编辑/usr/local/nginx/conf/nginx.conf文件

user nobody;

worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

upstream snail {

server 127.0.0.1:8888;

}

sendfile on; #tcp_nopush on; keepalive_timeout 65;

proxy_read_timeout 200;

tcp_nopush on;

tcp_nodelay on;

gzip on;

gzip_min_length 1000;

gzip_proxied any;

server {

listen 80;

server_name localhost; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

location / {

proxy_pass_header Server;

proxy_set_header Host $$http_host; # proxy_redirect false; proxy_set_header X-Real-IP $$remote_addr;

proxy_set_header X-Scheme $$scheme;

proxy_pass http://snail; }

}

}

9、创建一个项目

vi demo.py

import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world")

application = tornado.web.Application([

(r"/", MainHandler),

]) if __name__ == "__main__":

application.listen(8888)

tornado.ioloop.IOLoop.instance().start()

10、运行这个项目

#启动项目 nohup python demo.py & #重启Nginx /usr/local/nginx/sbin/nginx -s reload

在浏览器中输入http://127.0.0.1 看到页面输出hello word!

赞助本站

人工智能实验室

相关热词: Centos 搭建 Python+Nginx+Torna

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港