vue+flask+gunicorn+nginx+supervisor部署的各种问题

在Vue+Flask应用部署中,遇到端口开放和apscheduler定时任务重复执行的问题。解决方法包括调整服务器安全组和防火墙设置,使用supervisor重启gunicorn,以及通过--preload选项、全局锁、父进程ID判断或单独进程启动apscheduler来避免定时任务重复。部署apscheduler时,应将其作为独立进程启动,以防止在gunicorn多进程中重复执行。
摘要由CSDN通过智能技术生成
  1. 端口问题:服务器的安全组要加入对应端口才能访问,例如nginx默认访问80端口,就要假如80端口到安全组中。服务器中的防火墙如果开启了,也要打开需要的端口才能访问
  2. 修改代码后需要重启gunicorn来使代码生效,如果使用了supervisor就用supervisor来重启
  3. 使用apscheduler来创建定时任务的情况下,假如使用gunicorn启动了多进程(worker),那么每个进程都会初始化一个任务调度器,导致定时任务被重复执行。

解决方法:

  • gunicorn启动配置中增加–preload(虽然这样可以使用scheduler创建代码只执行一次,但是问题也在于它只执行一次,重新部署以后如果用kill -HUP重启gunicorn,它并不会重启,甚至整个项目都不会更新。这是preload的副作用,除非重写部署脚本,完全重启应用。)
  • 全局锁确保实例化apscheduler只运行一次,文件锁/端口锁/redis/mysql等数据库锁均可,可能导致无法使用modify_job编辑任务(本人使用方法)
  • add_job(func=add_job_xxx,...)时,在add_job_xxx中实现加锁逻辑保证任务只运行一次,文件锁/端口锁/redis/mysql等数据库锁均可,可以正常使用modify_job编辑任务
  • 实例化apscheduler时,增加父进程ID判断,if os.getppid() == 1来判断,可能导致无法使用modify_job编辑任务。(sysytemd管理服务时init进程ID为1)
  • 思路就是区分Master进程与Worker进程来加锁,可以通过if
好的,我可以为您提供一些基本的步骤。首先,您需要在阿里云上购买一台服务器,并确保您拥有对该服务器的完全访问权限。然后,您可以按照以下步骤进行VueFlask应用程序的部署: 1. 安装Node.js和npm 在您的服务器上安装Node.js和npm,这将使您能够运行和构建Vue应用程序。 2. 安装Vue CLI 使用npm安装Vue CLI,这样您就可以在服务器上使用Vue CLI命令行工具创建和管理Vue项目。 3. 创建Vue项目 使用Vue CLI创建一个新的Vue项目,为此,请在终端中运行以下命令: ``` vue create my-project ``` 4. 构建Vue项目 使用npm运行构建命令,将Vue项目构建为静态文件,以便可以在Web服务器上提供它们。为此,请在终端中运行以下命令: ``` npm run build ``` 5. 安装Flask 在您的服务器上安装Flask,这将使您能够运行和管理Flask应用程序。 6. 编写Flask应用程序 使用PythonFlask编写您的应用程序代码,包括路由和视图函数等。 7. 部署Flask应用程序 将Flask应用程序部署到Web服务器,例如Nginx或Apache等。 8. 配置Web服务器 配置Web服务器以在服务器上提供VueFlask应用程序。这通常涉及到将Vue应用程序的静态文件和Flask应用程序的路由配置到Web服务器上。 以上是基本的步骤,您可以根据您的具体情况进行更改和定制。希望这可以帮助您部署Vue+Flask应用程序到阿里云服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值