我已经设置并配置了 Apache Superset,但无法让它作为 Systemd 服务运行。
我尝试在 virtualenv 中设置它并使用 systemd 像这,但我仍然收到有关 Gunicorn 不可用且设备无法启动的错误。
我还尝试为 Superset 创建一个单独的用户,安装 Superset 及其依赖项pip install --user
,该单元如下所示:
[Unit]
Description=Superset
After=syslog.target network.target
[Service]
User=superset
ExecStart=/home/superset/.local/bin/superset runserver
[Install]
WantedBy=multi-user.target
但它仍然不起作用。看着日记
Jul 13 22:54:21 radioactive-man systemd[1]: Started Superset.
Jul 13 22:54:23 radioactive-man superset[24023]: 2018-07-13 22:54:23,893:INFO:root:The Gunicorn 'superset runserver' command is deprecated. Please use the 'gunicorn' command instead.
Jul 13 22:54:23 radioactive-man superset[24023]: /bin/sh: 1: gunicorn: not found
Jul 13 22:54:23 radioactive-man superset[24023]: Starting server with command:
Jul 13 22:54:23 radioactive-man superset[24023]: gunicorn -w 2 --timeout 60 -b 0.0.0.0:8088 --limit-request-line 0 --limit-request-field_size 0 superset:app
Jul 13 22:54:23 radioactive-man superset[24023]:
在 bash 中运行命令,效果很好。
环境信息
乌班图 Linux 16.04
超级组0.26.3
答案1
$PATH
大多数情况下,当系统上存在某个文件并且您收到一条错误消息,指出未找到该文件时,这意味着操作系统在您的环境变量中找不到该文件。
让操作系统找到的最简单方法gunicorn
是将默认路径中的内容放在gunicorn
下。/usr/local/bin
将其位置添加到您的路径中只会被您的活动会话考虑,一旦您关闭它,它就会消失,除非您将其放入/etc/environment
文件中并重新启动。
还可以配置服务环境:
- 下创建一个目录
/etc/systemd/system/<service_name>.service.d
在新建的目录下创建一个文件,并配置服务环境,如下:
$ vim /etc/systemd/system/<service_name>.service.d/file.conf [Service] Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/path_to_directory_containing_gunicorn
Esc:wq
注意:由于我们添加的文件不是shell脚本,因此不支持变量扩展
写入 PATH=$PATH:/path_to_directory_having_gunicorn不会按预期工作
重新加载单位配置
$ systemctl daemon-reload