有谁知道如何在启动时启动一个 plack 应用程序。
操作系统是 raspbian(覆盆子 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 编写的。
在树莓派上,我使用 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,你当然可以使用 plakup。
问题是 perl 5 环境变量未初始化(在 .bashrc 中)。
所以解决方案是在内部运行 plackup 命令,bash -i
以便在调用 plackup 之前读取.bashrc
或设置 PERL5LIB
您可能还想使用monit
或supervisord
确保您的应用程序始终运行,并且将在因任何原因终止时重新启动,例如 OOM