【问题标题】:How do I start plack application on boot如何在启动时启动 plack 应用程序
【发布时间】:2016-11-05 19:09:59
【问题描述】:

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

操作系统是 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 编写的。

【问题讨论】:

    标签: apache raspbian dancer plack


    【解决方案1】:

    在树莓派上,我使用 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手动启动它

    你当然可以用 plakup 代替 startman。

    【讨论】:

    • 只是为了说明:systemctl enablesystemctl start 是不同且独立的事物。 enable 表示“启动时自动启动”,而start 表示“立即启动”。当然,您可以同时执行以下操作:start 代表 nowenable 代表 autostart。我认为还有一个选项可以一步启用并立即开始,但我忘记是哪个了。
    【解决方案2】:

    问题在于 perl 5 环境变量未初始化(在 .bashrc 中)。

    所以解决方案是在 bash -i 中运行 plackup 命令,使其读取 .bashrc 或在调用 plackup 之前设置 PERL5LIB

    【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 你能举个例子吗?
    猜你喜欢
    • 2012-05-12
    • 1970-01-01
    • 2011-03-07
    • 2019-06-15
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2022-06-24
    相关资源
    最近更新 更多