将 Apache Superset 设置为 Systemd 服务

将 Apache Superset 设置为 Systemd 服务

我已经设置并配置了 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
    

相关内容