有谁知道如何在启动时启动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编写。
在树莓派上,我使用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
你当然可以用plackup来代替startman
问题是perl 5环境变量没有初始化(在。bashrc中)。
所以解决方案是在bash -i
内运行plackup命令,以便它读取.bashrc
或在调用plackup
您可能还想使用monit
或supervisord
来确保您的应用程序始终运行,并将在任何原因杀死的情况下重新启动,例如OOM