나는이 질문에 bajillion 시간을 물었지만이 사실을 알 수는 없습니다. 내가 주제에 대해 할 수있는 모든 페이지를 읽었으나 나는 아무것도 시도하지 않았다.init.d 스크립트는 재부팅시 시작되지 않지만 명령 줄에서 작동합니다.
기본적으로 /etc/init.d에 명령 줄에서 제대로 작동하지만 시작시에는 작동하지 않는 스크립트가 있습니다. 그것이 전혀 실행되지 않거나 어떤 종류의 오류가 발생하는지 나는 모른다.
로빈슨은 자체 개발 한시나 트라 응용 프로그램입니다.
#!/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 앱은 매우 간단합니다. 지금은 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)
가 확실하지주는 어떤 다른 정보 :
여기에 일부 시스템 정보입니다. 내가 추가해야 할 것이 있으면 알려줘.
도움을 주시면 감사하겠습니다.
나는거야 그것으로 실험해라. 그러나 지금 나는 그것을 나의 만족에 kludged했다. 서버가 실행 중인지 확인하는 간단한 스크립트를 작성했습니다. 그렇지 않으면 스크립트가 서버를 시작합니다. 그 스크립트를 루트의 crontab에 넣었습니다. 그것은 그것을 할 s'phisticated 방법이되지 않을 수도 있지만 작동하지만 나는 다른 것들로 이동할 수 있습니다. 도움 주셔서 감사합니다. – tscheingeld