我正在使用flask作为我的用户界面的web服务器(这是一个简单的web界面,它控制着录音,使用 gstreamer
在ubuntu上,从摄像头和一个 抓帧器 同时有点简单的球员)
每次我需要运行命令 "python main.py"
从命令提示符手动运行服务器。
我已经尝试了 init.d
解决方法,甚至写一个简单的shell脚本,每次重启系统后在启动时启动它,但它不能让服务器一直运行到最后(只是调用服务器,并终止它,我猜测
有什么办法可以帮助我每次在启动系统后启动webserver,并保持它的运行?
我想把我的系统配置成直接启动到浏览器,所以不想有任何需要由用户进行更多的操作。
任何类型的建议help都是感激的。
我想建议使用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部署文档是 此处
一口井 有据可查 解决方案是使用Gunicorn和Nginx服务器。
from myproject import application
if __name__ == "__main__":
application.run()
这将由Gunicorn处理。
gunicorn --bind 0.0.0.0:8000 wsgi
[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
sudo systemctl start myproject
sudo systemctl enable myproject