首頁 > 後端開發 > Python教學 > 如何在uvtr上部署燒瓶應用程序

如何在uvtr上部署燒瓶應用程序

Christopher Nolan
發布: 2025-02-08 08:31:09
原創
773 人瀏覽過

How to Deploy Flask Applications on Vultr

使用Gunicorn、Nginx和Let's Encrypt部署安全的Flask應用

Flask是一個用於構建Web應用程序的Python框架。借助Flask,開發者可以輕鬆定義路由、處理HTTP請求和響應,並使用Jinja2模板渲染動態內容。它還支持擴展,允許開發者集成數據庫訪問、表單處理和用戶身份驗證等功能。

本文將介紹如何使用Gunicorn部署Flask應用程序,並實現CSRF保護和內容安全策略 (CSP)。我們還將使用Nginx設置反向代理,並通過Let's Encrypt申請免費SSL證書來實現HTTPS。

在Vultr優化型雲實例上部署

  1. 註冊並登錄Vultr客戶門戶網站。
  2. 導航到“產品”頁面。
  3. 從側邊菜單中選擇“計算”。
  4. 點擊中央的“部署服務器”按鈕。
  5. 選擇“優化型雲計算”作為服務器類型。
  6. 選擇服務器位置。
  7. 選擇Ubuntu 24.04作為操作系統。
  8. 選擇合適的套餐。
  9. 如有需要,選擇任何附加功能。
  10. 點擊“立即部署”。

添加演示應用程序代碼文件

設置Python虛擬環境

  1. 安裝python3-venv包:sudo apt install python3-venv
  2. 創建虛擬環境:python3 -m venv myenv
  3. 激活虛擬環境:source myenv/bin/activate

添加演示應用程序代碼文件

  1. 克隆Github倉庫:git clone https://github.com/mayankdebnath/flask-todo-demo.git
  2. 導航到項目目錄:cd flask-todo-demo/sample/
  3. 安裝Flask和Gunicorn包:pip install flask gunicorn
  4. 允許傳入連接到5000端口:ufw allow 5000

應用CSRF保護和內容安全策略

跨站請求偽造 (CSRF) 是一種漏洞,允許攻擊者利用用戶在受信任網站上的已登錄會話,向用戶信任的不同網站發出未經授權的請求。 WTForms是一個Flask擴展,默認情況下集成了CSRF保護,以防止CSRF攻擊。

內容安全策略 (CSP) 是Web應用程序的一層額外安全措施,可以保護它們免受惡意攻擊。 CSP指示瀏覽器允許加載哪些資源到特定網頁上。通常,網站管理員通過向網頁的服務器響應添加特殊的標頭來配置CSP,然後瀏覽器接收CSP標頭並了解允許加載哪些資源。 Talisman是一個Flask擴展,簡化了向Flask應用程序添加CSP的過程。

  1. 安裝flask-wtf和talisman包:pip install flask-wtf talisman
  2. 打開app.py文件:nano app.py
  3. 編輯app.py文件以包含內容安全策略:
from talisman import Talisman

talisman = Talisman(
    app,
    content_security_policy={
        'default-src': ['\'self\''],
        'script-src': ['\'self\'', '\'unsafe-inline\'', 'https://code.jquery.com'],
        'style-src': ['\'self\'', '\'unsafe-inline\'', 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css', 'https://todoapp5.ddns.net/static/styles.css', 'https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css'],
    },
    force_https=True,
    session_cookie_secure=True,
    frame_options='DENY',
)
登入後複製
  1. 在app.py文件中,導入並配置CSRF保護:
from flask_wtf.csrf import CSRFProtect

app.config['SECRET_KEY'] = 'your_secret_key_here'
csrf = CSRFProtect(app)
csrf._csrf_request_token_key = 'X-CSRFToken'
登入後複製

保存並關閉文件。

  1. 導航到templates目錄:cd templates
  2. 打開index.html文件:nano index.html
  3. 編輯HTML頁面以包含CSRF配置:
var csrfToken = $('input[name="csrf_token"]').val();

$.ajaxSetup({
    beforeSend: function(xhr, settings) {
    if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
    xhr.setRequestHeader("X-CSRFToken", csrfToken);
        }
    }
});
登入後複製

保存並關閉文件。 8. 退出templates目錄:cd ..

配置Nginx作為反向代理

Nginx充當Web服務器和客戶端之間的反向代理。它根據您的請求配置設置來引導傳入請求。在本節中,我們將配置應用程序以進行反向代理,以實現高效的請求處理和負載平衡。我們還將從Let's Encrypt申請免費SSL證書來實現HTTPS,從而保護用戶和Web服務器之間的通信安全。

  1. 登錄Vultr客戶門戶網站。
  2. 導航到“產品”頁面。
  3. 從側邊菜單中展開“網絡”下拉菜單,然後選擇“DNS”。
  4. 點擊中央的“添加域名”按鈕。
  5. 按照設置步驟添加您的域名,選擇服務器的IP地址。
  6. 使用您的域名註冊商將以下主機名設置為域名的主名稱服務器和輔助名稱服務器:ns1.vultr.comns2.vultr.com
  7. 安裝Nginx:sudo apt install nginx
  8. 創建一個新的Nginx配置文件:sudo nano /etc/nginx/sites-available/app.conf
  9. 將以下配置粘貼到文件中:
server {
    listen 80;
    listen [::]:80;

    server_name <your_domain>;

    location / {
        proxy_pass http://127.0.0.1:5000/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
登入後複製
  1. 激活虛擬主機配置:sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
  2. 測試Nginx配置:sudo nginx -t
  3. 重新加載Nginx:sudo systemctl reload nginx
  4. 允許傳入連接到80和443端口:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
  5. 安裝certbot包:sudo snap install --classic certbot
  6. 申請SSL證書:sudo certbot --nginx -d example.com -d www.example.com (將example.com替換為你的域名)
  7. 啟動Gunicorn服務器:gunicorn -b 0.0.0.0:5000 app:app
  8. 現在您可以通過https://<your_domain></your_domain>訪問您的Flask應用程序。

在Vultr上使用Python應用程序做更多事情

  • 將Python Web應用程序容器化
  • 在Ubuntu 24.04上安裝Python和Pip
  • 在Python中使用Vultr雲推理
  • 深入探討重要的AI/ML Python包
  • 使用Python和Milvus向量數據庫進行AI驅動的搜索
  • 使用Python執行自然語言處理任務

結論

本文探討瞭如何使用Nginx反向代理和Gunicorn部署Flask應用程序,並實現CSRF保護和CSP。我們還通過添加SSL證書和啟用HTTPS訪問來保護應用程序的安全。

本文由Vultr贊助。 Vultr是全球最大的私營雲計算平台。 Vultr深受開發者的喜愛,已為185個國家的150多萬客戶提供靈活、可擴展的全球雲計算、雲GPU、裸機和雲存儲解決方案。了解更多關於Vultr的信息

以上是如何在uvtr上部署燒瓶應用程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板