• Centos搭建Python+Nginx+Tornado+Mysql环境[转载]


     

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

    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 )官网   
    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内, 这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”), 它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。官网                               
    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!
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    工具网页地址
    invalid comparison: java.util.ArrayList and java.lang.String——bug解决办法
    打印csdn博客文章内容
    git 更新远程分支列表
    idea 配置 SpringBoot 热启动详解,和热启动失效解决方案
    MacOS下安装RabbitMQ
    Spring Boot Admin
    Navicat Premium Mac 12 破解
    sql查询不重复数据
    org.apache.commons.lang3 jar的使用 ArrayUtils
  • 原文地址:https://www.cnblogs.com/plan/p/4959536.html
Copyright © 2020-2023  润新知