开机后自动启动python flask webserver,并一直保持到系统结束。

问题描述 投票:3回答:2

我正在使用flask作为我的用户界面的web服务器(这是一个简单的web界面,它控制着录音,使用 gstreamer 在ubuntu上,从摄像头和一个 抓帧器 同时有点简单的球员)

每次我需要运行命令 "python main.py" 从命令提示符手动运行服务器。

我已经尝试了 init.d 解决方法,甚至写一个简单的shell脚本,每次重启系统后在启动时启动它,但它不能让服务器一直运行到最后(只是调用服务器,并终止它,我猜测

有什么办法可以帮助我每次在启动系统后启动webserver,并保持它的运行?

我想把我的系统配置成直接启动到浏览器,所以不想有任何需要由用户进行更多的操作。

任何类型的建议help都是感激的。

python user-interface flask automation webserver
2个回答
6
投票

我想建议使用supervisor,文档是 此处


为了一个非常简单的演示目的,在你安装好它并完成设置后,触摸一个新的文件,像这样。

[program:flask_app]                                                                  
command = python main.py                                      
directory = /dir/to/your/app                            
autostart = true                                                                
autorestart = true

然后

$ sudo supervisorctl update

现在,你应该可以开始了。flask应用将在每次启动机器后启动。(注:发布包已经集成到服务管理基础架构中,如果你使用的是其他的,请参见 此处)

来检查你的应用程序是否在运行。

$ sudo supervisorctl status

对于生产,你可以使用nginx+uwsgi+supervisor。flask部署文档是 此处


1
投票

一口井 有据可查 解决方案是使用Gunicorn和Nginx服务器。

  1. 安装Components,并设置一个Python virtualenv的依赖关系。
  2. 创建wsgi.py文件。
from myproject import application

    if __name__ == "__main__":

         application.run()

这将由Gunicorn处理。

gunicorn --bind 0.0.0.0:8000 wsgi
  1. 通过设置systemd配置文件配置Gunicorn: etcsystemdsystemmyproject.service 。
 [Unit]
    Description=Gunicorn instance to serve myproject
    After=network.target

 [Service]
    User=sammy
    Group=www-data
    WorkingDirectory=/home/sammy/myproject
    Environment="PATH=/home/sammy/myproject/myprojectenv/bin"
    ExecStart=/home/sammy/myproject/myprojectenv/bin/gunicorn 
    --workers 3 --bind unix:myproject.sock -m 007 wsgi:app

[Install]
    WantedBy=multi-user.target
  1. 在启动时启动Gunicorn服务。
    sudo systemctl start myproject
    sudo systemctl enable myproject
© www.soinside.com 2019 - 2024. All rights reserved.