私はこの質問がbajillion回尋ねられたことを知っていますが、私はこれを理解できません。私は話題にできるすべてのページを読んだことがありますが、何も試したことはありません。init.dスクリプトはリブートでは起動しませんが、コマンドラインから動作します
基本的には、/etc/init.dにはコマンドラインからうまく動作するスクリプトがありますが、起動時には動作しません。私はそれがまったく実行されていないか、何らかのエラーが発生しているかどうかはわかりません。
Robinsonは自家製のSinatraアプリケーションです。
#!/bin/sh
### BEGIN INIT INFO
# Provides: robinson
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: robinson initscript
# Description: robinson
### END INIT INFO
# Do NOT "set -e"
DAEMON=/home/terry/projects/robinson/dev/trunk/installation/control.rb
SCRIPT_NAME=/etc/init.d/robinson
INSTALLATION_PATH="/home/terry/projects/robinson/dev/trunk/installation"
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
case "$1" in
start)
$DAEMON $INSTALLATION_PATH start
;;
stop)
$DAEMON $INSTALLATION_PATH stop
;;
restart)
$DAEMON $INSTALLATION_PATH restart
;;
*)
echo "Usage: $SCRIPT_NAME {start|stop|restart}" >&2
exit 3
;;
esac
:
だから、/etc/init.dの中にそのスクリプトの:
まず、ここではinit.dディレクトリにありますスクリプトです。そのアクセス許可は次のように設定されています。
init.d # ls -lh robinson
-rwxr-xr-x 1 root root 839 Nov 2 03:45 robinson
スクリプトでupdate-rc.dを実行しました。サービス作品... ...
init.d # sudo update-rc.d robinson remove
init.d # sudo update-rc.d robinson defaults
を、私は、コマンドラインでサービスを開始した場合
init.d # sudo service robinson start
を:実際には、私もそれを再度追加し、スクリプトを削除するには、それを実行してみましたちょうど良い。
シナトラアプリは非常に簡単です。今、私はSinatraを動かそうとしています。
# set path to app that will be used to configure unicorn
@dir = '/home/terry/projects/robinson/dev/trunk/installation/'
worker_processes 3
working_directory @dir
timeout 30
# configure for Robinson
robinson_data = '/srv/terry/robinson'
# Specify path to socket unicorn listens to,
# we will use this in our nginx.conf later
listen "#{robinson_data}/sockets/unicorn.sock", :backlog => 64
# Set process id path
pid "#{robinson_data}/pids/unicorn.pid"
# Set log file paths
stderr_path "#{robinson_data}/logs/unicorn.stderr.log"
stdout_path "#{robinson_data}/logs/unicorn.stdout.log"
それは注目に値するかもしれない:
require "rubygems"
require "sinatra"
require "sinatra/base"
# Robinson
class Robinson < Sinatra::Base
get '/*' do
return 'hello world'
end
end
# run request routine
run Robinson
これは
# unicorn socket
upstream robinson_unicorn_server {
server unix:/srv/terry/robinson/sockets/unicorn.sock
fail_timeout=0;
}
unicorn.rbは次のようになりロビンソンのためnginxの設定ファイルである:ここでconfig.ruの全体ですサーバーを再起動すると、unicorn.stderr.logにエントリが追加されません。
Operating system: Ubuntu Linux 16.04.1
Kernel and CPU: Linux 4.4.0-98-generic on x86_64
nginx version: nginx/1.10.3 (Ubuntu)
がわからない与えるために、他のどのような情報:
は、ここではいくつかのシステム情報です。追加する必要があるものがあれば教えてください。
何か助けていただければ幸いです。
I'LLのために役立つかもしれませんそれを試してみてください。しかし、今のところ私はそれを私の満足のためにkludgedしました。私はサーバーが動作しているかどうかをチェックする簡単なスクリプトを書いた。そうでない場合、スクリプトはサーバを起動します。私はそのスクリプトをrootのcrontabに入れました。それはそれを行うs'phisticated方法ではないかもしれませんが、それは動作し、私は他のものに移動することができます。 助けてくれてありがとう! – tscheingeld