flask项目的部署(五)

本文详细介绍了如何将Flask项目从开发环境部署到服务器,包括使用宝塔面板、Gunicorn配置、Nginx配置SSL并处理静态资源代理,以及数据库的配置过程。作者分享了个人遇到的问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

flask项目的部署(五)


前言

前面的众多博客,已经大致说明了项目的整体逻辑,这篇博客则主要讲述flask项目如何从开发环境到部署上线(以我个人为例)


1. 准备服务器

项目开发好后,就必然需要部署在服务器上,然后还要经历备案等繁琐的操作。

这里就不赘述了,
以腾讯云的轻量应用服务器为例,具体流程官方网站都有。

参考文章使用腾讯云服务器搭建网站全流程

2. 宝塔面板部署

我个人使用的是宝塔面板部署,

因为我租的云服务器有对应的宝塔面板,所以我没有安装,如果有需要,也可以安装宝塔面板

在这里插入图片描述

进入宝塔面板后

在这里插入图片描述
可以点击网站 : 添加python项目,将你的项目上传到文件
在这里插入图片描述

在这里插入图片描述

然后指定项目路径等配置信息

在这里插入图片描述
打开设置查看配置信息:

在这里插入图片描述

如果显示未启动,可以查看项目日志中的报错信息,去修改(或许是你的模块未安装好、或许是代码有问题、或许是你的开发环境没有换为生产环境等)

3. gunicorn配置

在这里插入图片描述

# 项目目录
chdir = '/www/xingshixiaowo'

# 指定进程数
workers = 4

# 指定每个进程开启的线程数
threads = 2

#启动用户
user = 'www'

# 启动模式
worker_class = 'sync'

# 绑定的ip与端口
bind = '0.0.0.0:80'

# 设置进程文件目录(用于停止服务和重启服务,请勿删除)
pidfile = '/www/xingshixiaowo/gunicorn.pid'

# 设置访问日志和错误信息日志路径
accesslog = '/www/wwwlogs/python/xingshixiaowo/gunicorn_acess.log'
errorlog = '/www/wwwlogs/python/xingshixiaowo/gunicorn_error.log'

# 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
# debug:调试级别,记录的信息最多;
# info:普通级别;
# warning:警告消息;
# error:错误消息;
# critical:严重错误消息;
loglevel = 'critical'

# 代码发生变化是否自动重启
reload=True

# 自定义设置项请写到该处
# 最好以上面相同的格式 <注释 + 换行 + key = value> 进行书写, 
# PS: gunicorn 的配置文件是python扩展形式,即".py"文件,需要注意遵从python语法,
# 如:loglevel的等级是字符串作为配置的,需要用引号包裹起来

4. nginx配置

nginx是一个高性能的 HTTP服务器

3.1. 进入软件商店,安装nginx

在这里插入图片描述

  
  
# HTTPS server
  server {
  #listen 443 ssl;  #为什么
  listen 443

  server_name www.whtuu.cn;
  root /www/xingshixiaowo;
  index index.html index.htm;
 ssl_certificate whtuu.cn_bundle.crt;
 ssl_certificate_key whtuu.cn.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
  ssl_prefer_server_ciphers on;
   include /etc/nginx/default.d/*.conf;
 

  location / {
      add_header Content-Security-Policy upgrade-insecure-requests; #这里这个就是处理https反向代理http时候静态资源的关键
      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://127.0.0.1:80;       
      
    
  }
  
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }


        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }

 
 }
 


我这里配置有点问题,我发现如果我配置了SSL证书,即https服务,那么原来的代理功能就失效了,无法返回正确的静态文件。

如果我把下面的代码注释掉,开启了https服务的网站就不会没有样式等静态文件(可是代理似乎就失效了)

   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }


        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }

这是为什么呢,十分疑惑。请大佬帮我看一下,指出问题,十分感谢。

5. SSL证书配置

腾讯云是有免费的ssl证书的

在这里插入图片描述

可以申请证书,之后下载证书:

在这里插入图片描述
我下载的是nginx的,解压后得到安全证书:
在这里插入图片描述

为面板配置SSL证书:

在这里插入图片描述

将.Key文件和.PEM文件分别复制进去即可:
在这里插入图片描述
如果没有生效(建议重启一下面板)

之后就是为网站配置SSL证书了,同理:
在这里插入图片描述

配置完成后,对应的nginx配置也要修改,但是我也不太清除,想要求助有没有大佬,帮我看一下,为何无法正确代理。

6. 数据库的配置

我使用的是宝塔面板软件商店中的一个sql管理器 phpmyadmin

在这里插入图片描述
在数据库中添加数据库,我添加的是Mysql数据库:
在这里插入图片描述

然后,检查一下nginx的配置文件,确保有这些配置(同时监听的端口号要在面板的安全组中、以及服务器控制台的防火墙中开放)

 server {
   listen 888;
   server_name phpmyadmin;
   index index.html index.htm index.php;
   root /www/server/phpmyadmin;
   location ~ /tmp/ {
     return 403;
   }
   include enable-php.conf;
   
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }


        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }

 
   
   
 }       
        

在这里插入图片描述

在这里插入图片描述

然后,回到数据库,点击管理即可,然后输入你的用户名和密码,即可进入

在这里插入图片描述

在这里插入图片描述


总结

总的来说,我是使用gunicorn+nginx来部署的flask项目。

–2024-3-22

### Flash Builder 热部署配置 Flash Builder 支持通过特定设置来启用热部署功能,这使得开发者可以在不重启应用的情况下更新代码并立即查看更改效果。以下是关于如何在 Flash Builder 中实现这一特性的说明。 #### 启用调试模式 为了使热部署正常工作,在项目属性中开启调试选项至关重要。进入项目的 **Properties** 页面,找到 **ActionScript Compiler** 设置项,并勾选 “Compile SWF in debug mode”。这样做可以确保编译器生成带有调试信息的文件[^1]。 #### 配置服务器环境 对于基于 Flex 的应用程序来说,通常会连接到远程或本地 Tomcat/JBoss/WebSphere 等 Java 应用程序服务器上运行。因此,需要正确安装和配置所使用的服务器软件版本,并将其注册至 Flash Builder 内部作为目标平台之一。完成之后,创建一个新的 Run/Debug Configuration 来指定启动参数以及上下文路径等细节。 #### 使用 LiveCycle Data Services (LCDS) 如果正在构建 RIA(富互联网应用程序),考虑利用 Adobe 提供的服务框架 LCDS 可以为客户端提供更强大的实时数据同步能力。它不仅能够简化消息传递逻辑的设计,还特别适合用来配合 Flash Player 实现无缝刷新体验的功能——即所谓的 Hot Module Replacement 或者在此场景下的“热部署”。 当集成了 LCDS 后,则可以通过修改服务端脚本而不必重新上传整个 .swf 文件就能让前端即时反映出最新的改动;与此同时,任何对 ActionScript 类定义所做的调整也会被自动检测出来并在适当时候触发页面重载操作。 ```xml <!-- Example of a simple web.xml configuration snippet --> <servlet> <servlet-name>MessageBrokerServlet</servlet-name> <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class> <!-- Other configurations... --> </servlet> <servlet-mapping> <servlet-name>MessageBrokerServlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping> ``` 请注意上述 XML 片段仅用于展示目的,实际环境中应当依据官方文档指导来进行完整的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星石传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值