运行 flask 应用程序作为当前用户而不是 root 通过主管
run flask app as current user instead of root via supervisor
我正在使用 supervisor 来调用和保持 flask 服务器 运行 控制我的网络界面是作为一个简单的录像机构建的。
Supervisor 以 root 权限调用服务器,因此当前用户将无法访问最终录制的文件,因为他需要在最后将它们转换并传输到其他地方。
是否有任何解决方案可以告诉主管 运行 flask 应用程序作为普通用户而不是 root 用户?
另一个问题是关于我为我的界面实现的实时预览。使用此选项,用户可以在开始录制之前看到 5 秒的实时预览(这是一个简单的 gstreamer 管道:gst-launch v4l2src device=/dev/video1 !jpegdec !ffmpegcolorspace )
但是在重新启动系统后,当我尝试查看此预览时失败并在日志文件中显示此错误:
错误:来自元素/GstPipeline:pipeline0/GstXImageSink:ximagesink0:无法初始化 X 输出
附加调试信息:
ximagesink.c(1284): gst_ximagesink_xcontext_get (): /GstPipeline:pipeline0/GstXImageSink:ximagesink0:
无法打开显示
./testWebcam.sh: 5: kill: 没有这样的进程
这是我的主管配置文件 /etc/supervisor/conf.d/RunFlask.conf
:
[program:flask_app]
command = python main.py
directory = /dir/to/your/app
autostart = true
autorestart = true
为了完整起见,这里是我用来记录的 gstreamer 管道:
nohup gst-launch-1.0 v4l2src do-timestamp=true device=/dev/video0 ! 'video/x-raw,format=BGR,width=1024,height=768' ! videoconvert ! queue ! x264enc ! mux. pulsesrc device="alsa_input.usb-Samson_Technologies_Samson_Go_Mic_Direct-00-Direct.analog-stereo" ! 'audio/x-raw,rate=88200,channels=1,depth=24' ! audioconvert ! avenc_aac compliance=experimental ! mux. matroskamux name="mux" ! filesink location=/home/sina/Desktop/Recordings/Screen.mp4 v4l2src device=/dev/video1 ! videorate ! 'image/jpeg,framerate=30/1,width=1920,height=1080' ! queue ! mux2. pulsesrc device="alsa_input.usb-046d_Logitech_Webcam_C930e_AAF8A63E-02-C930e.analog-stereo" ! 'audio/x-raw,rate=44100,channels=1,depth=24' ! audioconvert ! avenc_aac compliance=experimental ! queue ! mux2. matroskamux name="mux2" ! filesink location=/home/sina/Desktop/Recordings/Webcam.mkv &
您可以在主管配置中指定一个用户:
[program:flask_app]
user=yourusername
这将 运行 给定用户下的 Flask 应用程序。
我正在使用 supervisor 来调用和保持 flask 服务器 运行 控制我的网络界面是作为一个简单的录像机构建的。
Supervisor 以 root 权限调用服务器,因此当前用户将无法访问最终录制的文件,因为他需要在最后将它们转换并传输到其他地方。
是否有任何解决方案可以告诉主管 运行 flask 应用程序作为普通用户而不是 root 用户?
另一个问题是关于我为我的界面实现的实时预览。使用此选项,用户可以在开始录制之前看到 5 秒的实时预览(这是一个简单的 gstreamer 管道:gst-launch v4l2src device=/dev/video1 !jpegdec !ffmpegcolorspace )
但是在重新启动系统后,当我尝试查看此预览时失败并在日志文件中显示此错误:
错误:来自元素/GstPipeline:pipeline0/GstXImageSink:ximagesink0:无法初始化 X 输出 附加调试信息: ximagesink.c(1284): gst_ximagesink_xcontext_get (): /GstPipeline:pipeline0/GstXImageSink:ximagesink0: 无法打开显示 ./testWebcam.sh: 5: kill: 没有这样的进程
这是我的主管配置文件 /etc/supervisor/conf.d/RunFlask.conf
:
[program:flask_app]
command = python main.py
directory = /dir/to/your/app
autostart = true
autorestart = true
为了完整起见,这里是我用来记录的 gstreamer 管道:
nohup gst-launch-1.0 v4l2src do-timestamp=true device=/dev/video0 ! 'video/x-raw,format=BGR,width=1024,height=768' ! videoconvert ! queue ! x264enc ! mux. pulsesrc device="alsa_input.usb-Samson_Technologies_Samson_Go_Mic_Direct-00-Direct.analog-stereo" ! 'audio/x-raw,rate=88200,channels=1,depth=24' ! audioconvert ! avenc_aac compliance=experimental ! mux. matroskamux name="mux" ! filesink location=/home/sina/Desktop/Recordings/Screen.mp4 v4l2src device=/dev/video1 ! videorate ! 'image/jpeg,framerate=30/1,width=1920,height=1080' ! queue ! mux2. pulsesrc device="alsa_input.usb-046d_Logitech_Webcam_C930e_AAF8A63E-02-C930e.analog-stereo" ! 'audio/x-raw,rate=44100,channels=1,depth=24' ! audioconvert ! avenc_aac compliance=experimental ! queue ! mux2. matroskamux name="mux2" ! filesink location=/home/sina/Desktop/Recordings/Webcam.mkv &
您可以在主管配置中指定一个用户:
[program:flask_app]
user=yourusername
这将 运行 给定用户下的 Flask 应用程序。