2016-11-05 91 views
0

有誰知道如何在啓動時啓動plack應用程序。如何在啓動時啓動plack應用程序

os是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如果這有什麼差別。

回答

0

問題在於perl 5環境變量未初始化(位於.bashrc中)。

因此該解決方案是調用plackup

0

在一個樹莓派我用systemd創建並啓動服務,在文件中之前運行plackup命令裏面bash -i以便讀取.bashrc或設置PERL5LIB: /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。

+0

只是爲了清楚:'systemctl enable'和' systemctl start'是不同的和獨立的東西。 '啓用'意味着_「在啓動時自動啓動」_而'開始'意味着_「現在啓動」_。當然,你可以同時做兩件事情:'開始'爲_now_和'啓用'爲_autostart_。我認爲現在也有一個選項可以在一步之內啓用並啓動,但我忘記了它是什麼。 – PerlDuck

0

您可能還需要使用monitsupervisord以確保您的應用始終運行,並將於殺的情況下,以任何理由重新啓動,例如OOM

+0

你可以添加一個例子嗎? – tejas

相關問題