开机后自动启动python flask webserver 并保持开机直到结束
Start python flask webserver automatically after booting the system and keep it on till the end
我正在使用 Flask 作为我的 UI 的网络服务器(这是一个简单的网络界面,可以通过网络摄像头和 [=26] 在 ubuntu 上使用 gstreamer
控制录制=]framegrabber 同时/有点简单的播放器)
每次我需要从命令提示符手动 运行 命令 "python main.py"
到 运行 服务器。
我尝试了 init.d
解决方案,甚至编写了一个简单的 shell 脚本并在每次启动时重新启动系统后启动它,但它无法保持服务器正常运行 运行宁到最后(我猜只是调用服务器并终止它)
是否有任何解决方案可以帮助我在启动时每次引导系统后启动网络服务器并保持它并 运行ning?
我想将我的系统配置为直接启动到浏览器,因此不需要用户执行更多操作。
任何类型的 suggestion/help 都表示赞赏。
很好documented解决方案是使用Gunicorn和Nginx服务器:
- 安装组件并设置 Python 具有依赖项的 virtualenv
- 创建 wsgi.py 文件:
from myproject import application
if __name__ == "__main__":
application.run()
这将由 Gunicorn 处理:
gunicorn --bind 0.0.0.0:8000 wsgi
- 通过设置 systemd 配置文件配置 Gunicorn:/etc/systemd/system/myproject.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
- 启动时启动 Gunicorn 服务:
sudo systemctl start myproject
sudo systemctl enable myproject
我想建议使用 supervisor,文档是 here
出于非常简单的演示目的,在安装并完成设置后,触摸一个新的文件,如下所示:
[program:flask_app]
command = python main.py
directory = /dir/to/your/app
autostart = true
autorestart = true
然后
$ sudo supervisorctl update
现在,您应该可以开始了。 Flask 应用程序将在您每次启动机器后启动。(注意:分发包已经集成到服务管理基础架构中,如果您使用其他的,请参阅 here)
检查您的应用是否 运行:
$ sudo supervisorctl status
生产环境可以使用nginx+uwsgi+supervisor。 Flask 部署文档是 here
我正在使用 Flask 作为我的 UI 的网络服务器(这是一个简单的网络界面,可以通过网络摄像头和 [=26] 在 ubuntu 上使用 gstreamer
控制录制=]framegrabber 同时/有点简单的播放器)
每次我需要从命令提示符手动 运行 命令 "python main.py"
到 运行 服务器。
我尝试了 init.d
解决方案,甚至编写了一个简单的 shell 脚本并在每次启动时重新启动系统后启动它,但它无法保持服务器正常运行 运行宁到最后(我猜只是调用服务器并终止它)
是否有任何解决方案可以帮助我在启动时每次引导系统后启动网络服务器并保持它并 运行ning?
我想将我的系统配置为直接启动到浏览器,因此不需要用户执行更多操作。
任何类型的 suggestion/help 都表示赞赏。
很好documented解决方案是使用Gunicorn和Nginx服务器:
- 安装组件并设置 Python 具有依赖项的 virtualenv
- 创建 wsgi.py 文件:
from myproject import application
if __name__ == "__main__":
application.run()
这将由 Gunicorn 处理:
gunicorn --bind 0.0.0.0:8000 wsgi
- 通过设置 systemd 配置文件配置 Gunicorn:/etc/systemd/system/myproject.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
- 启动时启动 Gunicorn 服务:
sudo systemctl start myproject
sudo systemctl enable myproject
我想建议使用 supervisor,文档是 here
出于非常简单的演示目的,在安装并完成设置后,触摸一个新的文件,如下所示:
[program:flask_app]
command = python main.py
directory = /dir/to/your/app
autostart = true
autorestart = true
然后
$ sudo supervisorctl update
现在,您应该可以开始了。 Flask 应用程序将在您每次启动机器后启动。(注意:分发包已经集成到服务管理基础架构中,如果您使用其他的,请参阅 here)
检查您的应用是否 运行:
$ sudo supervisorctl status
生产环境可以使用nginx+uwsgi+supervisor。 Flask 部署文档是 here