1. 程式人生 > >nginx負載均衡教程之從不用root編譯開始! + flask + uwsgi 部署高併發網路服務!

nginx負載均衡教程之從不用root編譯開始! + flask + uwsgi 部署高併發網路服務!

  • 編譯使用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
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使用教程
- 什麼是uwsgi

    from 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

相關推薦

nginx負載均衡教程不用root編譯開始! + flask + uwsgi 部署併發網路服務

編譯使用nginx without root! 之前閱讀了很過國內的部落格,對nginx在linux下的使用都是一筆帶過,這個給後面的使用造成了很大的麻煩!尤其是在不用root怎麼安裝這塊!本部分詳細的講解,供新人使用!此處參考了一個國外人的[wiki

nginx負載均衡和mysql主主被動模式基礎架構綜合部署

nginx負載均衡 mysql主從(主主被動互備模式) 1.結構思路 準備用5個虛機,一個虛機安裝nginx來配置負載均衡,兩個虛機做web服務器,另外兩個虛機,安裝mysql,做主主被動配置,每次web只讀取一個mysql服務。 2.具體實施步驟 用vmware最小化安裝5個虛機,我用的是c

通過nginx負載均衡訪問庫tomcat7的日誌

nginx負載均衡 tomcat 日誌 一從庫操作以 /mnt/local/tomcat_8080 舉例1修改context.xml文件 重啟tomcat2 建立軟連接 二主庫操作修改負載均衡vi /etc/nginx nginx.confworker_processes1;events {worker_c

負載均衡系列(二)nginx

永遠 實例 表示 特性 反向代理服務器 依據 forward 訪問 子郵件 Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行 其特點是占有內存少,並發能力強,事實上nginx的並發能力

NGINX 負載均衡

ngx 算法 均衡 http 節點 backup pst 指定 自己 1、Nginx 負載均衡的組件模塊 ngx_http_proxy_module:proxy代理模塊,用於把請求後拋給服務器節點或upstream服務器池。ngx_http_upstream_module:

NGINX 負載均衡監測節點狀態 十一

圖片 ref erer oct ica figure 1.3 work app 1、監測負載均衡節點作用 用於提供主動式後端服務器健康檢查,通過它可以檢測後端realserver的健康狀態,如果後端realserver不可用,則所有的請求就不會轉發到該節點上。 2、依賴模塊

Linuxnginx負載均衡

Nginx負載均衡概述 Web伺服器,直接面向用戶,往往要承載大量併發請求,單臺伺服器難以負荷,我使用多臺WEB伺服器組成叢集,前端使用Nginx負載均衡,將請求分散的打到我們的後端伺服器叢集中,實現負載的分發。那麼會大大提升系統的吞吐率、請求效能、高容災   Nginx要實現負載均

Nginx+Tomcat搭建高效能負載均衡叢集枯藤老樹

--枯藤老樹昏鴉,小橋流水人家,古道西風瘦馬。夕陽西下,斷腸人      在天涯。 一、     工具   nginx-1.8.0   apache-tomcat-6.0.33 二、    目標   實現高效能負載均衡的Tomcat叢集:   

centos下零配置nginx(負載均衡)

centos下從零配置nginx(負載均衡) nginx下載安裝 先下載依賴環境,不然裝不上 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-

Keepalived+LVS+Nginx負載均衡可用

  一、Keepalived介紹    Keepalived是分散式部署系統解決系統高可用的軟體,結合LVS(Linux Virtual Server)使用,其功能類似於heartbeat,解決單機宕機的問題。   二、Keepalived技術原理    keepalived是以VRRP協議為實現基礎

nginx負載均衡加權輪詢

       當nginx作為代理伺服器時,需要將客戶端的請求轉發給後端伺服器進行處理,如果後端伺服器有多臺,那如何選擇合適的後端伺服器來處理當前請求,也就是本篇文章要介紹的內容。nginx儘可能的把請求分攤到各個後端伺服器進行處理,以保證服務的可用性和可靠行,提供給客戶端

三、netcore跨平臺 Linux配置nginx負載均衡

前面兩章講了netcore在linux上部署以及配置nginx,並讓nginx代理webapi。 這一章主要講如何配置負載均衡,有些步驟在前兩章講的很詳細了,所以這一章我就不會一個個截圖了。 因為本人只有一個伺服器。所以我會在同一臺伺服器上部署兩套差不多的例項。 同樣的程式碼,我們在Program.cs

nginx負載均衡配置

war eal ade remote dock lis upstream doc 配置 http {   upstream docker {       server 192.168.88.106:10001;       server 192.168.88.1

基於LVS的負載均衡實現NAT

ftp服務器 replicat 會話 集群 負載均衡技術 方式 conn 需要 執行 一 什麽是負載均衡 負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同

【轉】淺談一個網頁打開的全過程(涉及DNS、CDN、Nginx負載均衡等)

位置 filters 產生 多種方法 tps windows cnblogs 這就是 廣東 1、概要   從用戶在瀏覽器輸入域名開始,到web頁面加載完畢,這是一個說復雜不復雜,說簡單不簡單的過程,下文暫且把這個過程稱作網頁加載過程。下面我將依靠自己的經驗,總結一下整個過程

BasePath問題-nginx負載均衡配置

.... class ip地址 htm post 細致 rpo 均衡 css 在配置nginx+tomcat好後。將項目加入到webapps中。發現訪問主頁時,css與js訪問不到,導致主頁布局出錯。細致分析原因後發現css與js的地址是basePath得出的。而bas

tomcat+nginx負載均衡群集

負載均衡群集線上環境Nginx+Tomcat網站拓撲架構服務器軟件要求:主機 IP地址 主要軟件 Nginx服務器192.168.1.102 nginx-1.6.0.tar.gz Tomcat1 192.168.1.100 1.jdk-7u65-linux-x64.gz 2.apache-tomcat-

Nginx負載均衡+Keepalived可用集群

check list proxy www alived 編譯安裝nginx efi class request 一、搭建環境及軟件版本 負載均衡:Nginx 高可用:Keepalived Linux:Centos 6.5 Nginx:nginx-1.6.2 Keepaliv

tomcat+nginx負載均衡

col rec 80端口 get tom 127.0.0.1 核數 worker div 一、 工具   nginx-1.8.0   apache-tomcat-6.0.33 二、 目標   實現高性能負載均衡的Tomcat集群:    三、 步驟

nginx負載均衡簡單配置

.org star gin def lis down pes timeout install nginx負載均衡簡單配置準備三臺虛擬機來做這個實驗:172.16.160.99 web服務器172.16.160.103 web服務器172.16.160