[置顶] nginx负载均衡教程之从不用root编译开始! + flask + uwsgi 部署高并发网络服务!
2016-08-07 23:44
471 查看
编译使用nginx without root!
之前阅读了很过国内的博客,对nginx在linux下的使用都是一笔带过,这个给后面的使用造成了很大的麻烦!尤其是在不用root怎么安装这块!本部分详细的讲解,供新人使用!此处参考了一个国外人的[wiki](https://gist.github.com/simonw/92481),个别的时候需要翻墙才能看啊! 本文的所有的参考链接: https://www.nginx.com/resources/admin-guide/installing-nginx-open-source/ https://gist.github.com/simonw/92481 http://nginx.org/en/docs/http/load_balancing.html[/code]1,###此package不用install,只要解压即可 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz tar -zxf pcre-8.39.tar.gz 2,###同上 wget http://www.openssl.org/source/openssl-1.0.2f.tar.gz tar -zxf openssl-1.0.2f.tar.gz 3,###同上 wget http://zlib.net/zlib-1.2.8.tar.gz tar -zxf zlib-1.2.8.tar.gz 4,###安装nginx wget "http://nginx.org/download/nginx-1.10.1.tar.gz" tar -zxvf nginx-1.10.1.tar.gz mkdir -p nginx_tool cd nginx-1.10.1 ./configure --prefix=../nginx_tool/ --with-pcre=(刚才解压的pcre的绝对路径) --with-zlib=(刚刚解压的zlib路径) --with-openssl=(刚才解压的openssl的绝对路径) make make install当完成上面这些操作的时候,nginx就会安装在给定的nginx_tool路径下,install完成以后,可以查看下nginx_tool中都有哪些directions。一般情况下,如下所示: $ls nginx_tool/ conf html logs sbin #恭喜你,sbin中的nginx就是编译好的可执行的工具,conf中的nginx.conf就是默认的配置文件,这个文件在后面会有很大的用处!
使用flask 做个简单的demo进行nginx尝试
第一步,就是用flask做个简单的demo;
如果您没有安装flask,或者没有任何对flask使用的经验,请预先安装flask!
方法是:pip install flask --user #方法,可以不用root进行安装mkdir -p test_flask cd test_flask vim test_flask.py
在test_flask.py中输入以下内容:from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello Python 1' #此处的数字是后面用来验证负载均衡使用的! if __name__ == '__main__': app.run(host="此处换成您机器的ip,如果不知道怎么获取,请查询ifconfig命令使用方法",port=9090)
执行python test_flask.py ,当你看到下面提示的时候,表示你的第一个flask demo就完成了;* Running on http://yourip:9090/ (Press CTRL+C to quit)
第二步,就是用nginx,把咱们的flask demo部署上来了
在niginx conf directions下新建一个文件,叫做test_nginx.conf
输入以下内容worker_processes 20; events { worker_connections 1024; } http { upstream back { #least_conn; server 127.0.0.1:8597 weight=1; server 127.0.0.1:8598 weight=1; server 127.0.0.1:8599 weight=1; } server { listen 9876; server_name 1.1.1.3:9876; #公网地址,此处应该将公网地址绑定为您计算机对外网公开的地址,例如10.109.108.134; location / { proxy_pass http://back; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理 } } }
在后台启动3个test_flask.py的进程,地址都是127.0.0.1,端口号分别是8597,8598,8599,每个脚本中的“hello world ”字符串中加入不同的数字,为了后面验证负载均衡使用;
而后按照下面的步骤执行;cd nginx/sbin ./nginx -c ../conf/test_nginx.conf
而后,打开您的浏览器,输入ip:9876您就会看到“hello world 1”,“hello world 2”,“hello world 3”,在您的python web server上来回切换了!更多的使用nginx负载均衡的文档,详见文章开头提供的链接!
第二步,就是标准化,用uwsgi规范化服务器部署
# uwsgi使用教程
- 什么是uwsgifrom flask import Flask,request app = Flask(__name__) @app.route('/welcome',methods = ["GET"]) def hello_world(): return 'Hello World!' @app.route('/answer',methods=["POST"]) def ans(): data = request.form.get("data") return "From server: " + data if __name__ == '__main__': app.run(host="ip",port=8970)
怎么看这段code都是简陋的,存在着下面的几个问题:
1,链接超时怎么办?这个server是否还会稳定?
2,如果这个server我想限制链接的数量又该怎么办?
3,限制链接的最大时长呢?
4,更改外部的链接协议呢?
5,and so on ……
从安装uwsgi开始pip install uwsgi --user
托管flask app$uwsgi -s 10.101.167.107:8990 -w main:app --buffer-size=32768 --protocol http --harakiri 60 --limit-post 65536 -p 1 *** Starting uWSGI 1.4.9 (64bit) on [Mon Aug 22 19:58:49 2016] *** compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-4) on 05 August 2016 22:14:14 os: Linux-3.10.0-327.ali2000.alios7.x86_64 #1 SMP Tue Dec 29 19:54:05 CST 2015 nodename: rs1d07474.et2sqa machine: x86_64 clock source: unix pcre jit disabled
此时在浏览器中打开 http://ip:8970/welcome , 同样会显示hello world!终于,您的flask app正式的托管在了uwsgi这个server上,走出了正式化的一步!
这个时候,您就可以使用将第二步中的简陋的python webserver ,用uwsgi托管之后在使用nginx负载均衡了!
uwsgi的参数的介绍文档1:uwsgioption.html
uwsgi的快速开始文档1:WSGIquickstart.html
相关文章推荐
- [置顶] neo4j使用教程(1) 从搭建neo4j网络服务开始
- Flask+uwsgi+Nginx+Ubuntu部署教程
- Flask学习11:阿里云新手Flask + nginx + uwsgi + ubuntu的完整项目部署教程
- 并发网络服务程序---架构设计关注点
- 教程:如何用Axis2开发和部署Web服务
- ant 全功能编译打包部署ftp启动服务的 build.xml
- Linux网络服务之(1)&部署DHCP服务
- 网络服务器的几种并发服务模型
- 修改Java文件不用重启Tomcat服务----热部署、热加载
- 高性能并发TCP网络服务-IOCP框架修正VC2008版本
- 菜鸟学Linux之三:Linux下用户的集中管理之信息网络服务(NIS)的搭建与部署
- 利用Windows的部署服务网络批量安装Windows7/2008
- CA service(MCSE第八天--网络服务)部署CA加密OE邮件
- 三星i9300 ROOT教程与网络解锁教程
- 使用Ant构建web项目 从编译到测试 生成测试报告 打包 邮件发送 远程下载tomcat 部署运行一条龙服务之ant脚本
- 多台主机使用DNS服务器实现网络负载均衡详细教程
- Windows 网络服务架构系列课程详解(三) ---------Web站点的部署方案 推荐
- Linux网络服务之(3)&部署Samba服务
- 不用锁表,没有异常:在高并发网络中高效的更新数据库数据的方式