当前位置: 首页 > news >正文

在Linux环境部署Flask应用并启用SSL/TLS安全协议

部署Flask应用通常涉及以下几个步骤:准备应用程序、选择合适的WSGI服务器、配置Web服务器代理、申请SSL证书以及配置SSL。

准备Flask应用

首先,你需要在Linux服务器上安装必要的软件,包括:

  1. Python和pip(Python包管理器)
  2. 虚拟环境(virtualenv或conda)
  3. Flask框架和依赖库

使用以下命令安装Flask及其依赖:

pip install flask gunicorn

这里gunicorn是一个Python WSGI HTTP服务器,适合用来运行Python web应用。

选择WSGI服务器

Gunicorn是Flask框架中广泛使用的WSGI服务器之一。它能处理应用程序的并发请求,提高性能。确保Flask应用可通过Gunicorn运行无误,命令格式如下:

gunicorn app:app

其中第一个 app是你的Python文件名(不含.py扩展名),第二个 app是Flask应用实例的名称。

配置Web服务器代理

尽管Gunicorn能作为Web服务器使用,但在生产环境中通常会在它前面设置一个代理服务器,如Nginx或Apache,以增强安全性、负载均衡等。这里以Nginx为例,首先安装Nginx:

sudo apt update
sudo apt install nginx

配置Nginx代理传输到Gunicorn,编辑Nginx配置文件:

sudo nano /etc/nginx/sites-available/your_domain

添加以下内容到配置文件中:

server {listen 80;server_name your_domain.com www.your_domain.com;location / {proxy_pass http://localhost:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

将 your_domain.com替换成你的域名,localhost:8000则是指向Gunicorn服务。然后,启用新的配置并重启Nginx服务:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx

申请SSL/TLS证书

现在的Web应用应该通过HTTPS提供服务,这要求你得为你的域名获取SSL/TLS证书。Let's Encrypt是一个流行的选择,它提供了免费的证书。可以使用Certbot来自动化证书的申请和维护过程。

安装Certbot和Nginx插件:

sudo apt install certbot python3-certbot-nginx

然后运行Certbot并遵循提示完成证书的部署:

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

这将调整Nginx配置以使用SSL,并将证书和密钥文件放在标准的位置。

配置SSL/TLS

Certbot会自动配置SSL,但你可能还想优化配置以使用强密码或实现其他安全性能。

编辑Nginx配置文件,指定SSL设置:

server {listen 443 ssl http2;server_name your_domain.com www.your_domain.com;ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;ssl_protocols TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;# ... 其他SSL配置location / {proxy_pass http://localhost:8000;# ... 其他proxy设置}
}

完成后,重启Nginx以使更改生效:

sudo systemctl restart nginx

至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。

http://www.zskr.cn/news/4507.html

相关文章:

  • 博客园美化
  • NOIP备考
  • 用 Java 和 Tesseract 实现验证码图像识别
  • Ubuntu 24.04 服务器调整MySQL 8.0.42 三节点集群(一主两从架构)安装部署配置教程
  • 第九篇:数据库服务克隆应用
  • Ubuntu 安装
  • 幼等数论
  • 深入解析:轻松Linux-9.进程间通信
  • 2025.9.14——1黄1绿
  • Ubuntu 中改图片大小
  • Day01
  • 认识眼图和眼图的参数
  • 25.09.14 与其感慨路难行,不如马上出发
  • 初始化 MCP 环境 创建 MCP Server (一)
  • 博客园格式设置
  • win11 系统如何进行硬盘分区?固态硬盘怎么分区?SSD 固态硬盘是分区好还是不分区好?
  • 豆豆守护如何下载?
  • Nacos服务注册与发现
  • 新学期第一次随笔:慢慢学,总会有进步
  • 详细介绍:【C语言】第四课 指针与内存管理
  • My First Blog
  • 设置基础软件仓库时出错
  • 详细介绍:boost::circular_buffer的使用方法简介
  • 增肌,减脂,变瘦的联系和区别
  • Nordic Neuton.AI 技术优势;
  • 基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
  • LilCTF 2025
  • AES算法原理与举例说明
  • devexpress gridcontrol表格知识
  • 字符串算法笔记