首页 > 后端开发 > Python教程 > 如何在uvtr上部署烧瓶应用程序

如何在uvtr上部署烧瓶应用程序

Christopher Nolan
发布: 2025-02-08 08:31:09
原创
850 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板