https://www.cnblogs.com/minsons/articles/8191219.html
大家在學習python的時候常常都是輸入
python 文件名.py
這樣啟動小腳本
但實際應用中往往沒有那么簡單,因為通常都要多線程處理並發,處理頭部,這時就需要nginx和Gunicorn了
首先安裝gunicorn
pip install gunicorn
然后在入口文件的app.run()加上
from werkzeug.contrib.fixers import ProxyFix app.wsgi_app = ProxyFix(app.wsgi_app)
如
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': from werkzeug.contrib.fixers import ProxyFix app.wsgi_app = ProxyFix(app.wsgi_app) app.run()
然后命令行啟動gunicorn
最簡單的啟動方式是
gunicorn 入口文件名:app
默認是監聽127.0.0.1:8000
如果是要處理高並發則要開多個進程和修改監聽端口的畫
gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app
這樣就可以啟動4個進程同時處理HTTP請求,提高系統的使用效率及性能。
還可以把端口8000改為其他
這時你可以在本機的瀏覽器上訪問127.0.0.1:8000,瀏覽器上就會出現Hello World!
注意:如果是想通過外網訪問的話就要把ip改為內網的ip
之后配置nginx
首先先備份配置
輸入命令
sudo cp /etc/nginx/sites-available/default default.bak
修改配置
輸入命令
sudo nano /etc/nginx/sites-available/default
把配置改為
server {
listen 80; server_name example.org; # 這是HOST機器的外部域名,用地址也行 location / { proxy_pass http://127.0.0.1:8000; # 這里是指向 gunicorn host 的服務地址 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
這樣啟動之后80端口就可以轉發到8000端口了
檢查配置
輸入命令
nginx -t
若出現
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
則配置成功
重啟nginx
輸入命令
sudo service nginx restart
在已經運行了Gunicorn的前提下,在瀏覽器訪問127.0.0.1就會出現Hello World!了