如何在启动时启动 plack 应用程序

How do I start plack application on boot

有谁知道如何在启动时启动 plack 应用程序。

os 是 raspbian(raspberry pi)。 我想我有 运行 作为普通用户 (pi)。这就是我手动启动它的方式。

我曾尝试将类似的内容添加到 rc.local 但没有成功

su pi -c 'cd /path/to/app && plackup -d -p 5000 -r -R ./lib,./t -a ./bin/app.psgi &'

这将反过来被 Apache 使用,如果有任何不同,该应用程序将在 dancer2 中编写。

问题是 perl 5 环境变量没有初始化(在 .bashrc 中)。

所以解决方案是 运行 bash -i 中的 plackup 命令,以便它读取 .bashrc 或在调用 plackup

之前设置 PERL5LIB

在 raspberry pi 我使用 systemd 创建并启动服务,在文件中: /etc/systemd/system/dancer.service

[Unit]
Description=NCI Starman Dancer App
After=syslog.target

[Service]
Type=forking
ExecStart=/usr/local/bin/starman --daemonize -l 127.0.0.1:3004 \
  --user myuser --group myuser --workers 8 -D -E production \
  --pid /var/run/dancer.pid -I/home/myuser/webservers/Dancer/lib \
  --error-log=/home/myuser/logs/dancer_error.log \
  /home/myuser/webservers/Dancer/bin/app.psgi
Restart=always

[Install]
WantedBy=multi-user.target

然后我用 systemctl enable dancer.service 启用它 或者使用 systemtctl start dancer.service

手动启动它

除了startman,你当然可以使用plackup。

您可能还想使用 monitsupervisord 来确保您的应用始终 运行 并且在任何原因(例如 OOM)终止时重新启动