2016-11-05 27 views
0

起動時にplackアプリケーションを起動する方法を知っている人はいませんか。起動時にplackアプリケーションを起動する方法

osはraspbian(ラズベリーパイ)です。 私はそれを通常のユーザー(pi)として実行したと思います。それが私が手動で始める方法です。

私は成功

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

でターンこの意志は、Apacheで使用されると、それはどんな違いがあればアプリはdancer2で書かれているrc.localにはなくせずに、このような何かを追加しようとしています。

答えて

0

問題は、perl5環境変数が初期化されていないことです(これは.bashrcにあります)。その解決策は、それが.bashrcを読み取るか、またはPERL5LIBを設定するようにファイルで、サービスを作成して開始することにsystemd私が使用ラズベリーパイでplackup

0

を呼び出す前にbash -i内plackupコマンドを実行することでした

/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を使うことができます。

+0

ただ、明確にするために、何らかの理由により死滅した場合に再起動されます確認するためにmonitsupervisordを使用することもできます。 'systemctlのenable'と' systemctl start'は異なる独立したものです。 'enable'は_"起動時に自動起動 "_を意味しますが、' start'は_ "now now" _を意味します。もちろん、_now_のための 'start'と_autostart_の' enable'の両方を行うことができます。私は1つのステップで_enableとnow_を選択するオプションもあると思いますが、それがどれであるか忘れました。 – PerlDuck

0

あなたはまた、あなたのアプリが常に実行され、例のOOM

+0

例を追加できますか? – tejas

関連する問題