Python日記——nginx+Gunicorn部署你的Flask項目


轉自:http://blog.csdn.net/qq_32198277/article/details/52432890

 

大家在學習Python的時候常常都是輸入

1 python 文件名.py

 

 

這樣啟動小腳本

但實際應用中往往沒有那么簡單,因為通常都要多線程處理並發,處理頭部,這時就需要nginx和Gunicorn了

首先安裝gunicorn

1 pip install gunicorn

 

 

然后在入口文件的app.run()加上

1 from werkzeug.contrib.fixers import ProxyFix
2 app.wsgi_app = ProxyFix(app.wsgi_app)

 

 

 1 from flask import Flask
 2 
 3 app = Flask(__name__)
 4 
 5 
 6 @app.route('/')
 7 def hello_world():
 8     return 'Hello World!'
 9 
10 if __name__ == '__main__':
11     from werkzeug.contrib.fixers import ProxyFix
12     app.wsgi_app = ProxyFix(app.wsgi_app)
13     app.run()

 

然后命令行啟動gunicorn

最簡單的啟動方式是

1 gunicorn 入口文件名:app

 

默認是監聽127.0.0.1:8000

如果是要處理高並發則要開多個進程和修改監聽端口的畫

1  gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app

 

這樣就可以啟動4個進程同時處理HTTP請求,提高系統的使用效率及性能。 
還可以把端口8000改為其他

這時你可以在本機的瀏覽器上訪問127.0.0.1:8000,瀏覽器上就會出現Hello World!

注意:如果是想通過外網訪問的話就要把ip改為內網的ip

之后配置nginx

首先先備份配置 
輸入命令

1 sudo cp /etc/nginx/sites-available/default default.bak

修改配置

輸入命令

1 sudo nano /etc/nginx/sites-available/default

 

把配置改為

 1 server {
 2     listen 80;
 3     server_name example.org; # 這是HOST機器的外部域名,用地址也行
 4 
 5     location / {
 6         proxy_pass http://127.0.0.1:8000; # 這里是指向 gunicorn host 的服務地址
 7         proxy_set_header Host $host;
 8         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 9     }
10 
11   }

 

這樣啟動之后80端口就可以轉發到8000端口了

檢查配置

輸入命令

1 sudo nginx -t

若出現

1 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2 nginx: configuration file /etc/nginx/nginx.conf test is successful

 

則配置成功

重啟nginx 
輸入命令

1 sudo service nginx restart

關閉nginx

1 sudo service nginx stop

 

在已經運行了Gunicorn的前提下,在瀏覽器訪問127.0.0.1就會出現Hello World!了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM