trinidad_init_services 1.2.3 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +12 -0
- data/CHANGELOG.md +123 -0
- data/Gemfile +7 -1
- data/LICENSE +1 -1
- data/README.md +45 -34
- data/Rakefile +1 -6
- data/bin/trinidad_init_service +15 -11
- data/init.d/trinidad.erb +120 -51
- data/jsvc-unix-src/configure +733 -58
- data/jsvc-unix-src/native/arguments.c +3 -2
- data/jsvc-unix-src/native/jsvc-unix.c +11 -1
- data/jsvc-unix-src/native/location.c +3 -1
- data/jsvc-unix-src/native/version.h +2 -2
- data/jsvc-unix-src/support/apsupport.m4 +94 -32
- data/jsvc-unix-src/support/config.guess +770 -610
- data/jsvc-unix-src/support/config.sub +84 -59
- data/lib/trinidad/daemon.rb +11 -4
- data/lib/trinidad_init_services/configuration.rb +461 -138
- data/lib/trinidad_init_services/version.rb +1 -1
- data/spec/trinidad_init_services/configuration_spec.rb +221 -96
- data/spec/trinidad_init_services/init_service_config.yml +11 -0
- data/trinidad-libs/commons-daemon.jar +0 -0
- data/trinidad-libs/windows/amd64/prunsrv.exe +0 -0
- data/trinidad-libs/windows/ia64/prunsrv.exe +0 -0
- data/trinidad-libs/windows/prunsrv.exe +0 -0
- data/trinidad_init_services.gemspec +7 -7
- metadata +151 -147
- data/History.txt +0 -74
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: eba0572bd277127f8bd63d447aa351dc206931e8
|
4
|
+
data.tar.gz: 93784996ee1140fa3fd1a1d69f39877079a9d77c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2b2f768bf987bd52589a4bcc0f00fbfdf1f4310c47405eefb938f2557e7c5bf187318a5136f4f890254f6040be05392d5a95b5e8864b50d60d9cc8c76ba43986
|
7
|
+
data.tar.gz: 82739292c9a61af042a06168954deb467f9836b959e8f0ba57b1afa38cc5cc42ed14e2b43f020fb7cebd3a6480f7e69e9f245b1d9c78a52357e403cbe0e1a7d6
|
data/.travis.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
language: ruby
|
2
|
+
jdk:
|
3
|
+
- openjdk6
|
4
|
+
- oraclejdk7
|
5
|
+
- oraclejdk8
|
6
|
+
rvm:
|
7
|
+
- jruby
|
8
|
+
before_install:
|
9
|
+
- ((jruby -v | grep 1.8.7) && jruby --1.9 -S gem update --system 2.1.11) || true
|
10
|
+
env:
|
11
|
+
- JRUBY_OPTS="--1.8 $JRUBY_OPTS" TRINIDAD_VERSION="~> 1.4.6"
|
12
|
+
- JRUBY_OPTS="$JRUBY_OPTS"
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
## 1.3.0 (2014-07-03)
|
2
|
+
|
3
|
+
* `--no-ask` is now known as `--know`
|
4
|
+
* (portable) shell sub-string matching without echo
|
5
|
+
* do a service update when already installed (on windoze) + better removal
|
6
|
+
* include a service trinidad_init_service.log file of commands executed
|
7
|
+
* configure out redirection as well as pid file (+ log path) on windoze
|
8
|
+
* fix uninstall failing (alwo try supporting RH standarts)
|
9
|
+
* revised service id/name/desc configuration (to be 'more' similar on platforms)
|
10
|
+
* improved java_home detection and error message
|
11
|
+
* align with boot tag script conventions - avoid insserv: warning (#31)
|
12
|
+
* support for some detecting of JAVA_OPTS and calculating JVM memory requirements
|
13
|
+
* allow to detect 2.x ruby compat mode (JRuby >= 1.7)
|
14
|
+
* better init.d compat with other/older shells + support customizing JAVA_OPTS
|
15
|
+
* refactor init.d script - make sure -cwd $BASE_DIR happens + warn on missing base
|
16
|
+
* do not ask for ruby compat version - simply use the current one
|
17
|
+
* refactor log_file to out_file ... as it might be confusing
|
18
|
+
* decrease default stack-size 1536k should be still a very 'pessimistic' guess
|
19
|
+
* allow to configure jsvc's -wait and -keepstdin in generated init.d script
|
20
|
+
* better compatibility for upcoming Trinidad 1.5
|
21
|
+
* update commons-daemon to 1.0.15
|
22
|
+
|
23
|
+
## 1.2.3 (2013-09-10)
|
24
|
+
|
25
|
+
* detect if the process is still actually running
|
26
|
+
to handle starting the service after the machine was halted and restarted (#36)
|
27
|
+
* update to jruby-jsvc 0.5.1
|
28
|
+
* update to commons-daemon 1.0.13
|
29
|
+
* a better running PID ps check (fix `ps -p` without grep)
|
30
|
+
|
31
|
+
## 1.2.2 (2012-10-23)
|
32
|
+
|
33
|
+
* remove JRUBY_OPTS from init.d script (#28)
|
34
|
+
* latest jruby binary compatibility
|
35
|
+
- JAVA_MEM accepted in (and converted to) -Xmx format
|
36
|
+
- JAVA_STACK accepted in (and converted to) -Xss format
|
37
|
+
- added JAVA_MEM_MIN (-Xms format)
|
38
|
+
|
39
|
+
## 1.2.1 (2012-09-06)
|
40
|
+
|
41
|
+
* publicize ask= and say= (used from trinidad_init_service) (#25)
|
42
|
+
|
43
|
+
## 1.2.0 (2012-09-03)
|
44
|
+
|
45
|
+
* add an --uninstall option (requested on Windows) (#22)
|
46
|
+
* make ruby binary behave like a "gemtleman" see `trinidad_init_service --help`
|
47
|
+
* added possibility to specify service id and service description under windows
|
48
|
+
* ensure $PIDFILE_DIR exists and $RUN_USER has access
|
49
|
+
|
50
|
+
## 1.1.6 (2012-05-18)
|
51
|
+
|
52
|
+
* fix windows option formatting with prunsrv's arguments
|
53
|
+
* detect prunsrv.exe on windows PATH
|
54
|
+
|
55
|
+
## 1.1.5 (2012-03-06)
|
56
|
+
|
57
|
+
* not working arch detection on Windows + missing 32-bit prunsrv.exe
|
58
|
+
|
59
|
+
## 1.1.4 (2012-03-01)
|
60
|
+
|
61
|
+
* JSVC sources packaged along the gem and compiled on demand (#6)
|
62
|
+
* improve JRuby's native path detection in generated init.d script
|
63
|
+
* make gem usable with bundler :git => paths
|
64
|
+
|
65
|
+
## 1.1.3 (2012-02-20)
|
66
|
+
|
67
|
+
* do not ask for a path with $RUN_USER
|
68
|
+
|
69
|
+
## 1.1.2 (2012-01-17)
|
70
|
+
|
71
|
+
* revert previous -errfile fix
|
72
|
+
* use a better procfile name (#10)
|
73
|
+
|
74
|
+
## 1.1.1 (2012-01-16)
|
75
|
+
|
76
|
+
* issue on with -errfile &1 being misinterpreted (#8)
|
77
|
+
|
78
|
+
## 1.1.0 (2012-01-04)
|
79
|
+
|
80
|
+
* fix bug that didn't allow to create several services with different ids.
|
81
|
+
* allow to provide a configuration file to load the options from.
|
82
|
+
|
83
|
+
## 1.1.0.pre (2011-09-30)
|
84
|
+
|
85
|
+
* load prunsrv on Windows according with the architecture
|
86
|
+
|
87
|
+
## 1.0.0 (2011-06-11)
|
88
|
+
|
89
|
+
* rebranded gem
|
90
|
+
* fix shutdown compatibility errors with Trinidad 1.2.2 and above
|
91
|
+
|
92
|
+
## 0.4.2 (2011-05-17)
|
93
|
+
|
94
|
+
* fix several minor bugs
|
95
|
+
|
96
|
+
## 0.4.1 (2011-01-18)
|
97
|
+
|
98
|
+
* ensure the unix script is executable by default
|
99
|
+
|
100
|
+
## 0.4.0 (2011-01-13)
|
101
|
+
|
102
|
+
* generate Windows service.
|
103
|
+
|
104
|
+
## 0.3.2
|
105
|
+
|
106
|
+
* remove profile.jar from init script since it's no more bundled with JRuby
|
107
|
+
|
108
|
+
## 0.3.1
|
109
|
+
|
110
|
+
* use absolute path for configuration options
|
111
|
+
* start Trinidad from the application path
|
112
|
+
|
113
|
+
## 0.3.0
|
114
|
+
|
115
|
+
* remove init script extension
|
116
|
+
|
117
|
+
## 0.2.0
|
118
|
+
|
119
|
+
* fix several bugs
|
120
|
+
|
121
|
+
## 0.1.0
|
122
|
+
|
123
|
+
* initial release
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
== Trinidad
|
2
2
|
|
3
|
-
Copyright (c)
|
3
|
+
Copyright (c) 2014 Team Trinidad and contributors http://github.com/trinidad
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
6
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -2,13 +2,14 @@
|
|
2
2
|
|
3
3
|
Init services based on Apache [Commons Daemon](http://commons.apache.org/daemon/)
|
4
4
|
and [jruby-jsvc](https://github.com/nicobrevin/jruby-jsvc).
|
5
|
+
|
5
6
|
Allows you to run Trinidad as an OS daemon, works on Unix and Windows systems.
|
6
7
|
|
7
8
|
## Installation
|
8
9
|
|
9
|
-
$
|
10
|
+
$ gem install trinidad_init_services
|
10
11
|
|
11
|
-
When the gem is installed the
|
12
|
+
When the gem is installed the you launch the installation process :
|
12
13
|
|
13
14
|
$ jruby -S trinidad_init_service
|
14
15
|
|
@@ -16,40 +17,45 @@ This installer guides you through the configuration process and generates a
|
|
16
17
|
init.d script if you are on a Unix system or creates the service if you are
|
17
18
|
on a Windows box.
|
18
19
|
|
19
|
-
You can optionally provide a YAML configuration file with defaults specified
|
20
|
+
You can optionally provide a YAML configuration file with defaults specified
|
20
21
|
for the `trinidad_init_service` command. An example configuration file :
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
23
|
+
```yaml
|
24
|
+
app_path: "/home/trinidad/myapp/current"
|
25
|
+
#ruby_compat_version: RUBY1_9
|
26
|
+
#service_id: Trinidad # on Windows (defaults to :trinidad_name)
|
27
|
+
#service_desc: Trinidad Service Description # on Windows (optional)
|
28
|
+
jruby_home: /opt/jruby
|
29
|
+
java_home: /opt/java
|
30
|
+
output_path: /etc/init.d
|
31
|
+
pid_file: /home/trinidad/myapp/shared/pids/trinidad.pid
|
32
|
+
out_file: /home/trinidad/myapp/shared/log/trinidad.out # std out/err
|
33
|
+
jsvc_path: /usr/bin/jsvc # only used on Unix systems
|
34
|
+
trinidad_opts: "-e production --threadsafe"
|
35
|
+
java_opts: "-server -Xss1248k -XX:CompileThreshold=8000"
|
36
|
+
configure_memory: true # asks you for memory requirements (merges java_opts)
|
37
|
+
#total_memory: 720 # total dedicated in mega-bytes (assumes configure_memory)
|
38
|
+
#hot_deployment: true # whether using hot-deploys (assumes configure_memory)
|
39
|
+
```
|
34
40
|
|
35
41
|
You can then run the installer like so:
|
36
42
|
|
37
43
|
$ trinidad_init_service --defaults trinidad_init_defaults.yml
|
38
44
|
|
39
|
-
If any of the required options are not provided in the configuration file, then
|
40
|
-
the installer will prompt you for them. If you're running this as part of an
|
41
|
-
environment initialization script than use the *--
|
45
|
+
If any of the required options are not provided in the configuration file, then
|
46
|
+
the installer will prompt you for them. If you're running this as part of an
|
47
|
+
environment initialization script than use the *--know* option or provide
|
42
48
|
only the defaults file path on the command line (make sure all required options
|
43
49
|
are there) :
|
44
50
|
|
45
|
-
$ jruby -S trinidad_init_service trinidad_init_defaults.yml
|
51
|
+
$ jruby -S trinidad_init_service --know trinidad_init_defaults.yml
|
46
52
|
|
47
53
|
|
48
54
|
**NOTE:** Do not confuse the *defaults.yml* "configuration" file with Trinidad's
|
49
55
|
own configuration (*config/trinidad.yml*) file used when setting up the server !
|
50
56
|
|
51
57
|
|
52
|
-
###
|
58
|
+
### Linux
|
53
59
|
|
54
60
|
#### Requirements
|
55
61
|
|
@@ -63,17 +69,17 @@ you. However please note that to build JSVC on Unix you will need :
|
|
63
69
|
|
64
70
|
#### Execution
|
65
71
|
|
66
|
-
When the installation process finishes you can use the script generated to launch
|
72
|
+
When the installation process finishes you can use the script generated to launch
|
67
73
|
the server as a daemon with the options start|stop|restart, i.e:
|
68
74
|
|
69
75
|
$ /etc/init.d/trinidad restart
|
70
76
|
|
71
77
|
#### Running as a Non-Root User
|
72
78
|
|
73
|
-
By default, the Trinidad server process will run as the same user that ran the
|
74
|
-
`/etc/init.d/trinidad start` command. But the service can be configured to run
|
75
|
-
as a different user. The preferred method for doing this is the `run_user:`
|
76
|
-
attribute in the configuration YAML (or it's corresponding value at the prompt).
|
79
|
+
By default, the Trinidad server process will run as the same user that ran the
|
80
|
+
`/etc/init.d/trinidad start` command. But the service can be configured to run
|
81
|
+
as a different user. The preferred method for doing this is the `run_user:`
|
82
|
+
attribute in the configuration YAML (or it's corresponding value at the prompt).
|
77
83
|
For example:
|
78
84
|
|
79
85
|
app_path: "/home/trinidad/myapp/current"
|
@@ -81,7 +87,7 @@ For example:
|
|
81
87
|
run_user: trinidad
|
82
88
|
# ...
|
83
89
|
|
84
|
-
This causes the the server to run with non-root privileges (it essentially executes
|
90
|
+
This causes the the server to run with non-root privileges (it essentially executes
|
85
91
|
as `sudo -u run_user jsvc ...`).
|
86
92
|
|
87
93
|
On some platforms, however, it may be required that you use the JSVC `-user` argument.
|
@@ -89,12 +95,12 @@ This can be configured with the `JSVC_ARGS_EXTRA` environment variable, like thi
|
|
89
95
|
|
90
96
|
JSVC_ARGS_EXTRA="-user myuser" /etc/init.d/trinidad start
|
91
97
|
|
92
|
-
It not recommended that you mix the `-user` flag with the `run_user` option !
|
98
|
+
It is not recommended that you mix the `-user` flag with the `run_user` option !
|
93
99
|
|
94
100
|
#### Uninstall
|
95
101
|
|
96
|
-
|
97
|
-
you can uninstall using :
|
102
|
+
manage as every other service (e.g. `update-rc.d -f trinidad defaults` on Ubuntu)
|
103
|
+
you can even uninstall (will attempt to delete the script as well) using :
|
98
104
|
|
99
105
|
$ [sudo] trinidad_init_service --uninstall /etc/init.d/trinidad
|
100
106
|
|
@@ -103,17 +109,22 @@ you can uninstall using :
|
|
103
109
|
|
104
110
|
#### Execution
|
105
111
|
|
106
|
-
Open the **Services** panel under **Administrative Tools** and look for a service
|
107
|
-
called **Trinidad** (or whatever name you have chosen).
|
112
|
+
Open the **Services** panel under **Administrative Tools** and look for a service
|
113
|
+
called **Trinidad** (or whatever name you have chosen) then *Start* it.
|
114
|
+
|
115
|
+
By default the service is not setup to auto start during boot, that can be changed
|
116
|
+
from the command-line or using the Windows Services application.
|
108
117
|
|
109
118
|
#### Uninstall
|
110
119
|
|
111
|
-
|
120
|
+
on Windows uninstallation requires to pass the service name (if not default) :
|
112
121
|
|
113
|
-
$ trinidad_init_service --uninstall Trinidad
|
122
|
+
$ jruby -S trinidad_init_service --uninstall Trinidad
|
114
123
|
|
124
|
+
Please note that when the service gets uninstalled (on Windows) usually a restart
|
125
|
+
is needed for it to be installable again.
|
115
126
|
|
116
127
|
## Copyright
|
117
128
|
|
118
|
-
Copyright (c) 2012 [Team Trinidad](https://github.com/trinidad).
|
129
|
+
Copyright (c) 2012-2014 [Team Trinidad](https://github.com/trinidad).
|
119
130
|
See LICENSE (http://en.wikipedia.org/wiki/MIT_License) for details.
|
data/Rakefile
CHANGED
@@ -5,12 +5,7 @@ rescue LoadError => e
|
|
5
5
|
raise e
|
6
6
|
end
|
7
7
|
Bundler::GemHelper.install_tasks
|
8
|
-
|
9
|
-
#############################################################################
|
10
|
-
#
|
11
|
-
# Standard tasks
|
12
|
-
#
|
13
|
-
#############################################################################
|
8
|
+
task :gem => :build
|
14
9
|
|
15
10
|
task :default => :spec
|
16
11
|
|
data/bin/trinidad_init_service
CHANGED
@@ -10,14 +10,14 @@ require 'optparse'
|
|
10
10
|
defaults = nil
|
11
11
|
configuration = Trinidad::InitServices::Configuration.new
|
12
12
|
|
13
|
-
|
13
|
+
options = OptionParser.new do |opts|
|
14
14
|
opts.banner = "Usage: #{File.basename(__FILE__)} [options] [defaults]"
|
15
|
-
|
15
|
+
|
16
16
|
opts.on('-h', '--help', 'print this help') do
|
17
17
|
puts opts
|
18
18
|
exit
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
opts.on('-v', '--version', 'print version') do
|
22
22
|
begin
|
23
23
|
require 'trinidad'
|
@@ -28,26 +28,30 @@ opts = OptionParser.new do |opts|
|
|
28
28
|
exit(0)
|
29
29
|
end
|
30
30
|
|
31
|
-
opts.on('-d', '--defaults YAML_FILE', 'use passed file as defaults') do |
|
32
|
-
defaults =
|
31
|
+
opts.on('-d', '--defaults YAML_FILE', 'use passed file as defaults') do |file|
|
32
|
+
defaults = file
|
33
33
|
end
|
34
|
-
|
35
|
-
opts.on('-s', '--silent', 'do not print output on console') do
|
34
|
+
|
35
|
+
opts.on('-s', '--silent', 'do not print any output on console') do
|
36
36
|
configuration.say = false
|
37
37
|
end
|
38
38
|
|
39
|
-
opts.on('
|
39
|
+
opts.on('-k', '--know', "don't ask (disable interactive mode)") do
|
40
40
|
configuration.ask = false
|
41
41
|
end
|
42
42
|
|
43
|
-
opts.on('--
|
43
|
+
#opts.on('--no-ask', 'disable interactive (console) mode') do
|
44
|
+
# configuration.ask = false
|
45
|
+
#end
|
46
|
+
|
47
|
+
opts.on('--uninstall [NAME]', 'remove installed init service') do |name|
|
44
48
|
configuration.uninstall(name)
|
45
49
|
exit(0)
|
46
50
|
end
|
47
|
-
|
51
|
+
|
48
52
|
end
|
49
53
|
|
50
|
-
|
54
|
+
options.parse! ARGV
|
51
55
|
|
52
56
|
if ARGV.size > 0 # trinidad_init_service /home/trinidad/defaults.yml
|
53
57
|
defaults = ARGV[0]
|
data/init.d/trinidad.erb
CHANGED
@@ -1,40 +1,60 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
|
-
#
|
2
|
+
#
|
3
|
+
# trinidad init.d script using `jsvc` customized from the jsvc-wrapper.sh
|
3
4
|
# http://github.com/nicobrevin/jruby-jsvc/blob/master/bin/jsvc-wrapper.sh
|
4
5
|
#
|
5
|
-
#
|
6
|
-
#
|
6
|
+
# (c) generated by trinidad_init_services gem on <%= Time.now %>
|
7
|
+
#
|
8
|
+
### BEGIN INIT INFO
|
9
|
+
# Provides: <%= @service_id || 'trinidad' %>
|
10
|
+
# Required-Start: $network $syslog
|
11
|
+
# Required-Stop: $network $syslog
|
12
|
+
# Default-Start:
|
13
|
+
# Default-Stop:
|
14
|
+
# Description: <%= @service_desc %>
|
15
|
+
# Short-Description: start and stop trinidad
|
16
|
+
### END INIT INFO
|
17
|
+
|
18
|
+
NAME="<%= @service_name %>"
|
19
|
+
DESC="<%= @service_desc %>"
|
7
20
|
|
8
21
|
# https://github.com/trinidad/trinidad_init_services/wiki/Installing-JSVC
|
9
22
|
JSVC=<%= @jsvc %>
|
10
|
-
JAVA_HOME
|
11
|
-
JRUBY_HOME
|
12
|
-
|
13
|
-
RUBY_SCRIPT
|
23
|
+
JAVA_HOME="<%= @java_home %>"
|
24
|
+
JRUBY_HOME="<%= @jruby_home %>"
|
25
|
+
BASE_PATH="<%= @app_path || @base_path %>"
|
26
|
+
RUBY_SCRIPT="<%= @trinidad_daemon_path %>"
|
14
27
|
# The user rights for the running daemon, if you don't bind directly to 80 than
|
15
28
|
# it's always a good idea to run trinidad with non-root user rights.
|
16
|
-
# Make sure this user has rights on
|
29
|
+
# Make sure this user has rights on PID_FILE and OUT_FILE paths.
|
17
30
|
# Leaving this empty will cause the daemon to always run as whichever user calls
|
18
31
|
# the script (which during init is equivalent to running it as root).
|
19
32
|
RUN_USER="<%= @run_user %>"
|
20
33
|
# Set this to "1" to echo commands before running them (for troubleshooting) :
|
21
34
|
ECHO_COMMAND=""
|
22
35
|
|
23
|
-
#
|
24
|
-
|
25
|
-
|
36
|
+
# options that Trinidad needs to run your application, e.g. "-e production"
|
37
|
+
TRINIDAD_OPTS="<%= @trinidad_opts.is_a?(String) ? @trinidad_opts : @trinidad_opts.join(' ') %>"
|
38
|
+
|
39
|
+
# a custom (daemon) script will be started (not jruby -S) thus JRUBY_OPTS
|
40
|
+
# won't be picked up, however one can hand tune JAVA_OPTS here instead ...
|
41
|
+
<% if @java_opts.empty? -%>
|
42
|
+
JAVA_OPTS="$JAVA_OPTS"
|
43
|
+
<% else -%>
|
44
|
+
JAVA_OPTS="<%= @java_opts.is_a?(String) ? @java_opts : @java_opts.join(" \\\n") %>"
|
45
|
+
<% end -%>
|
26
46
|
|
27
|
-
|
28
|
-
|
47
|
+
PID_FILE="<%= @pid_file %>"
|
48
|
+
OUT_FILE="<%= @out_file %>"
|
29
49
|
|
30
50
|
# Create pidfile directory if missing
|
31
|
-
#
|
51
|
+
# NOTE: Remove PID_FILE_DIR creation once jsvc can be started
|
32
52
|
# as root using the -user option without any issues.
|
33
|
-
|
34
|
-
if [ ! -d "$
|
35
|
-
mkdir -p $
|
53
|
+
PID_FILE_DIR=$(dirname $PID_FILE)
|
54
|
+
if [ ! -d "$PID_FILE_DIR" ] ; then
|
55
|
+
mkdir -p $PID_FILE_DIR
|
36
56
|
if [ ! -z "$RUN_USER" ] ; then
|
37
|
-
chown -R $RUN_USER $
|
57
|
+
chown -R $RUN_USER $PID_FILE_DIR
|
38
58
|
fi
|
39
59
|
fi
|
40
60
|
|
@@ -43,7 +63,16 @@ MAIN_CLASS=com.msp.jsvc.JRubyDaemon
|
|
43
63
|
|
44
64
|
CLASSPATH=<%= @classpath.join(":") %>
|
45
65
|
|
46
|
-
|
66
|
+
if [ ! -z "$BASE_PATH" ] ; then
|
67
|
+
if [ ! -d "$BASE_PATH" ]; then
|
68
|
+
echo "'$BASE_PATH' is not a directory"
|
69
|
+
exit 1
|
70
|
+
fi
|
71
|
+
fi
|
72
|
+
|
73
|
+
if [ -z "$JRUBY_SHELL" ] ; then
|
74
|
+
JRUBY_SHELL=/bin/sh
|
75
|
+
fi
|
47
76
|
|
48
77
|
JRUBY_NATIVE_PATH=""
|
49
78
|
if [ -d "$JRUBY_HOME/lib/native/" ]; then
|
@@ -56,39 +85,56 @@ if [ -d "$JRUBY_HOME/lib/native/" ]; then
|
|
56
85
|
done
|
57
86
|
fi
|
58
87
|
|
59
|
-
# JAVA_MEM, JAVA_MEM_MIN & JAVA_STACK
|
88
|
+
# JAVA_MEM, JAVA_MEM_MIN & JAVA_STACK compatible with JRuby's binary :
|
60
89
|
|
61
90
|
if [ -z "$JAVA_MEM" ] ; then
|
62
|
-
JAVA_MEM
|
91
|
+
JAVA_MEM="-Xmx500m"
|
63
92
|
fi
|
64
93
|
# backwards compatibility we accept the non-full option (e.g. JAVA_MEM=500m)
|
65
|
-
if [
|
94
|
+
if [ "${JAVA_MEM:0:4}" != "-Xmx" ] ; then
|
66
95
|
JAVA_MEM="-Xmx$JAVA_MEM"
|
67
96
|
fi
|
68
97
|
|
69
98
|
# we accept the non-full option (e.g. JAVA_MEM_MIN=500m)
|
70
|
-
if [
|
71
|
-
JAVA_MEM_MIN
|
72
|
-
|
73
|
-
|
74
|
-
|
99
|
+
if [ -n "$JAVA_MEM_MIN" ] ; then
|
100
|
+
if [ "${JAVA_MEM_MIN:0:4}" != "-Xms" ] ; then
|
101
|
+
JAVA_MEM_MIN="-Xms$JAVA_MEM_MIN"
|
102
|
+
fi
|
103
|
+
else
|
104
|
+
if [ -z "$JAVA_MEM_MIN" ] ; then
|
105
|
+
JAVA_MEM_MIN=""
|
106
|
+
fi
|
75
107
|
fi
|
76
108
|
|
77
109
|
if [ -z "$JAVA_STACK" ] ; then
|
78
|
-
JAVA_STACK
|
110
|
+
JAVA_STACK="-Xss1536k"
|
79
111
|
fi
|
80
112
|
# backwards compatibility we accept the non-full option (e.g. JAVA_STACK=2048k)
|
81
|
-
if [
|
113
|
+
if [ "${JAVA_STACK:0:4}" != "-Xss" ] ; then
|
82
114
|
JAVA_STACK="-Xss$JAVA_STACK"
|
83
115
|
fi
|
84
116
|
|
85
|
-
|
86
|
-
|
117
|
+
if [ -z "$JAVA_OPTS" ] ; then
|
118
|
+
JAVA_OPTS="$JAVA_MEM $JAVA_MEM_MIN $JAVA_STACK"
|
119
|
+
else
|
120
|
+
for opt in Xmx Xss; do
|
121
|
+
if case ${JAVA_OPTS} in *"-${opt}"*) true;; *) false;; esac ; then
|
122
|
+
# JAVA_OPTS contains option - do no thing
|
123
|
+
else
|
124
|
+
if [ "${opt}" == "Xmx" ] ; then
|
125
|
+
JAVA_OPTS="$JAVA_OPTS $JAVA_MEM $JAVA_MEM_MIN"
|
126
|
+
fi
|
127
|
+
if [ "${opt}" == "Xss" ] ; then
|
128
|
+
JAVA_OPTS="$JAVA_OPTS $JAVA_STACK"
|
129
|
+
fi
|
130
|
+
fi
|
131
|
+
done
|
132
|
+
fi
|
87
133
|
|
88
|
-
JAVA_OPTS="$
|
134
|
+
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:$JRUBY_HOME/lib/jruby.jar"
|
89
135
|
|
90
|
-
# force file.encoding to UTF-8 :
|
91
|
-
if [
|
136
|
+
# force file.encoding to UTF-8 (if JAVA_ENCODING specified) :
|
137
|
+
if [ -z "$JAVA_ENCODING" ]; then
|
92
138
|
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
|
93
139
|
fi
|
94
140
|
|
@@ -99,36 +145,59 @@ JAVA_PROPS="$JAVA_PROPS \
|
|
99
145
|
|
100
146
|
PROC_NAME=${SCRIPT_NAME:-${APP_NAME:-"trinidad"}}
|
101
147
|
|
148
|
+
# should be multiple of 10 (min=10) :
|
149
|
+
if [ -z "$JSVC_WAIT" ] ; then
|
150
|
+
JSVC_WAIT="20"
|
151
|
+
fi
|
152
|
+
|
102
153
|
JSVC_ARGS="-home $JAVA_HOME \
|
103
154
|
$JSVC_ARGS_EXTRA \
|
104
|
-
-wait
|
105
|
-
-pidfile $
|
155
|
+
-wait $JSVC_WAIT \
|
156
|
+
-pidfile $PID_FILE \
|
106
157
|
-procname jsvc-$PROC_NAME \
|
107
|
-
-
|
108
|
-
|
109
|
-
|
158
|
+
-server"
|
159
|
+
|
160
|
+
if [ -z "$JSVC_CWD" ] ; then
|
161
|
+
JSVC_CWD="$BASE_PATH"
|
162
|
+
fi
|
163
|
+
# NOTE: jsvc -cwd does not handle quoted (' or ") paths
|
164
|
+
if [ "$JSVC_CWD" != "false" ] ; then
|
165
|
+
JSVC_ARGS="$JSVC_ARGS -cwd $JSVC_CWD"
|
166
|
+
else
|
167
|
+
if [ ! -z "$BASE_PATH" ] ; then
|
168
|
+
cd "$BASE_PATH" || exit 1
|
169
|
+
fi
|
170
|
+
fi
|
171
|
+
|
172
|
+
if [ ! -z "$JSVC_STDIN" ] ; then
|
173
|
+
if [ "$JSVC_STDIN" != "false" ] ; then
|
174
|
+
JSVC_ARGS="$JSVC_ARGS -keepstdin"
|
175
|
+
fi
|
176
|
+
fi
|
177
|
+
|
178
|
+
JSVC_ARGS="$JSVC_ARGS -outfile $OUT_FILE -errfile &1"
|
110
179
|
|
111
180
|
#
|
112
181
|
# Stop/Start
|
113
182
|
#
|
114
183
|
|
115
|
-
if [
|
116
|
-
|
184
|
+
if [ -n "$RUN_USER" ]; then
|
185
|
+
if [ $EUID -eq 0 ]; then
|
186
|
+
JSVC="sudo -u $RUN_USER $JSVC"
|
187
|
+
fi
|
117
188
|
fi
|
118
189
|
|
119
190
|
STOP_COMMAND="$JSVC $JSVC_ARGS -stop $MAIN_CLASS"
|
120
191
|
START_COMMAND="$JSVC $JSVC_ARGS -cp $CLASSPATH $JAVA_PROPS $JAVA_OPTS $MAIN_CLASS $RUBY_SCRIPT $TRINIDAD_OPTS"
|
121
192
|
|
122
|
-
cd $APP_PATH || exit 1
|
123
|
-
|
124
193
|
case "$1" in
|
125
194
|
start)
|
126
|
-
if [ -e "$
|
127
|
-
CUR_PID=$(<"$
|
195
|
+
if [ -e "$PID_FILE" ]; then
|
196
|
+
CUR_PID=$(<"$PID_FILE")
|
128
197
|
COM_NAME=$(ps -p $CUR_PID -o command= | cut -d ' ' -f 1)
|
129
198
|
PROCESS_NAME="jsvc-$PROC_NAME"
|
130
199
|
if [ "$COM_NAME" != "$PROCESS_NAME" ]; then
|
131
|
-
rm $
|
200
|
+
rm $PID_FILE
|
132
201
|
$START_COMMAND
|
133
202
|
else
|
134
203
|
echo "Pidfile already exists for pid $CUR_PID, not starting."
|
@@ -145,7 +214,7 @@ case "$1" in
|
|
145
214
|
fi
|
146
215
|
;;
|
147
216
|
stop)
|
148
|
-
if [ -e "$
|
217
|
+
if [ -e "$PID_FILE" ]; then
|
149
218
|
echo "Stopping $PROC_NAME daemon..."
|
150
219
|
if [ -n "$ECHO_COMMAND" ]; then echo $STOP_COMMAND; fi
|
151
220
|
$STOP_COMMAND
|
@@ -155,12 +224,12 @@ case "$1" in
|
|
155
224
|
fi
|
156
225
|
;;
|
157
226
|
restart)
|
158
|
-
if [ -e "$
|
227
|
+
if [ -e "$PID_FILE" ]; then
|
159
228
|
echo "Stopping $PROC_NAME daemon..."
|
160
229
|
if [ -n "$ECHO_COMMAND" ]; then echo $STOP_COMMAND; fi
|
161
230
|
$STOP_COMMAND
|
162
231
|
fi
|
163
|
-
if [ -e "$
|
232
|
+
if [ -e "$PID_FILE" ]; then
|
164
233
|
echo "Pidfile still present, $PROC_NAME hasn't stopped"
|
165
234
|
exit 1
|
166
235
|
else
|
@@ -173,8 +242,8 @@ case "$1" in
|
|
173
242
|
fi
|
174
243
|
;;
|
175
244
|
status)
|
176
|
-
if [ "$
|
177
|
-
PID=`cat $
|
245
|
+
if [ "$PID_FILE" ]; then
|
246
|
+
PID=`cat $PID_FILE`
|
178
247
|
OUTPUT=`ps -o pid $PID | grep "$PID"`
|
179
248
|
if [ ${#OUTPUT} -gt 0 ]; then
|
180
249
|
echo "Service running with pid: $PID"
|