2017-05-17 56 views
0

我是一個運行在Ubuntu 16.04服務器上的nginx webserver。 現在我正在嘗試爲Rails應用程序的resque worker和scheduler構建init腳本。resque worker的systemd init腳本

我創建了一個文件resque-worker.service 「的/ etc/systemd /系統/」,它看起來是這樣的:執行 「systemctl守護重載」 和「systemctl後

[Unit] 
Description=resque-worker for pageflow 

[Service] 
Type=forking 
ExecStart=/home/pageflow/pageflow_daad/rake resque:scheduler QUEUE=* RAILS_ENV=production > /home/pageflow/pageflow_daad/log/resqueschedule.log & 

[Install] 
WantedBy=multi-user.target 

出於某種原因啓動name.service」我得到這個錯誤:

$ systemctl status resque-worker.service 
● resque-worker.service - resque-worker for pageflow 
    Loaded: loaded (/etc/systemd/system/resque-worker.service; enabled; vendor preset: enabled) 
    Active: failed (Result: exit-code) since Wed 2017-05-17 15:52:38 CEST; 15s ago 
    Process: 28096 ExecStart=/home/pageflow/pageflow_daad/rake resque:scheduler QUEUE=* RAILS_ENV=production > /home/pageflow/pageflow_daad/log/resqueschedule.log & (code=exited, status=203/EXEC) 

May 17 15:52:38 ostheim systemd[1]: Starting resque-worker for pageflow... 
May 17 15:52:38 ostheim systemd[1]: resque-worker.service: Control process exited, code=exited status=203 
May 17 15:52:38 ostheim systemd[1]: Failed to start resque-worker for pageflow. 
May 17 15:52:38 ostheim systemd[1]: resque-worker.service: Unit entered failed state. 
May 17 15:52:38 ostheim systemd[1]: resque-worker.service: Failed with result 'exit-code'. 

在這種情況下,我用我的Rails應用程序的根路徑爲‘/家庭/頁面流/ pageflow_daad /耙’。這裏我想耙二進制文件的路徑之前

的時候,我得到了錯誤:May 17 15:30:26 ostheim rake[26846]: rake aborted! May 17 15:30:26 ostheim rake[26846]: ArgumentError: couldn't find HOME environment -- expanding〜'`

我希望有人在此更多的經驗可以幫助我。

提前感謝和問候, 羅納德

回答

1

在研究了幾個docu網站和文檔本身之後,我發現了一種獲得th在跑。只是想後這一點,如果有人認爲這是有益的:

[Unit] 
Description=resque-scheduler for pageflow 

[Service] 
User=yourUser 
WorkingDirectory=/path/to/rails/app 
ExecStart=/path/to/executeable/rake resque:scheduler & 
Environment=QUEUE=* 
Environment=RAILS_ENV=production 

[Install] 
WantedBy=multi-user.target 

有了這個腳本,一個

systemctl daemon-reload 

&

systemctl start example.service 

的服務startet運行和運行就像一個魅力。

1

我認爲有2種類型的systemd單元內的錯誤。下面是一些建議:

1)讓systemd捕獲你的應用程序日誌,然後使用journalctl看它

journalctl -u resque-worker.service 

2)使用ENV的systemd方式:

[Unit] 
Description=resque-worker for pageflow 

[Service] 
Type=forking 
ExecStart=/home/pageflow/pageflow_daad/rake resque:scheduler 
Environement=QUEUE=* 
Enrironement=RAILS_ENV=production 

[Install] 
WantedBy=multi-user.target 

然後,

systemctl daemon-reload 
systemctl restart resque-worker.service 
+0

哎謝謝你的建議。 我按照你告訴我的方式更改了systemd單元,但仍然發生同樣的錯誤。 journalctl -u resque-worker.service只是給我的代碼=退出狀態= 203多數民衆贊成在所有。 還有什麼想法?在此先感謝 – LongRon

+0

我不是耙專家,但我認爲你需要'Type = simple'而不是'Type = forking',這裏是一個指向文檔的指針https://www.freedesktop.org/software/systemd/man /systemd.service.html – papey