如何设置Gunicorn以服务Python Web应用程序

在本文中,我们将设置一个VPS以使用Gunicorn和Nginx作为反向代理来服务Python Web应用程序。我们将Nginx用作反向代理,而不是直接与Gunicorn一起使用,以防止对Gunicorn的DoS攻击。使用Nginx还可以提高性能(使用代理缓冲),并可以处理更多请求。

入门

本教程假定您已经具有安装,更新和保护了Ubuntu 14.04或更高版本的VM。

  • 我们的Nginx实例将在HTTP端口80上运行(但您可以轻松升级到HTTPS)。
  • 我们的示例Python应用程序将在端口8080上侦听。iptables上将关闭此端口,以防止远程访问。
  • 本教程应在其他发行版上进行最少的更改。

安装pipvirtualenv

apt-get install python-pip python-virtualenv

关闭端口8080。只有Nginx才能访问Gunicorn。

iptables -A INPUT -p tcp --destination-port 8080 -j DROP

创建一个新文件夹并配置我们的应用程序。我们将使用Flask框架。

mkdir /var/www-folder/
cd /var/www-folder/
virtualenv exampleapp
source exampleapp/bin/activate
cd exampleapp
pip install gunicorn
pip install flask

创建应用程序文件。

nano myapplication.py 

将以下内容粘贴到内部:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, Vultr!'

这将产生一个简单的页面,上面写着“你好,Vultr!”。当有人访问该页面时。现在,启动Gunicorn。x用2倍于VM的CPU内核数替换。

gunicorn -w x myapplication:app &

安装Nginx并配置反向代理。

deactivate
apt-get install nginx
nano /etc/nginx/sites-enabled/default

搜索该location / {行,并将括号内的内容替换为以下内容。

proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8000/;

此配置指示Nginx将一些信息(HTTP协议,远程IP地址)连同实际请求一起转发到Gunicorn服务器。重新加载Nginx。

service nginx reload

至此,您的Gunicorn应用程序已正确配置。您可以使用Web浏览器访问它http://your-vps-ip/



Leave a Comment

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息