massive refactoring for programmatic control and stability
This commit is contained in:
@@ -3,25 +3,25 @@ Bluepill.application("<%= app %>", :foreground => false, :log_file => "/var/log/
|
||||
app.uid = "<%= user %>"
|
||||
app.gid = "<%= user %>"
|
||||
|
||||
<% engine.procfile.entries.each do |process| %>
|
||||
<% 1.upto(concurrency[process.name]) do |num| %>
|
||||
<% port = engine.port_for(process, num, self.port) %>
|
||||
app.process("<%= process.name %>-<%=num%>") do |process|
|
||||
process.start_command = "<%= process.command.gsub("$PORT", port.to_s) %>"
|
||||
<% engine.each_process do |name, process| %>
|
||||
<% 1.upto(engine.formation[name]) do |num| %>
|
||||
<% port = engine.port_for(process, num) %>
|
||||
app.process("<%= name %>-<%= num %>") do |process|
|
||||
process.start_command = "<%= process.command %>"
|
||||
|
||||
process.working_dir = "<%= engine.directory %>"
|
||||
process.working_dir = "<%= engine.root %>"
|
||||
process.daemonize = true
|
||||
process.environment = {"PORT" => "<%= port %>"<% engine.environment.each_pair do |var,env| %> , "<%= var.upcase %>" => "<%= env %>" <% end %>}
|
||||
process.environment = <%= engine.env.merge("PORT" => port.to_s).inspect %>
|
||||
process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill]
|
||||
process.stop_grace_time = 45.seconds
|
||||
|
||||
process.stdout = process.stderr = "<%= log_root %>/<%= app %>-<%= process.name %>-<%=num%>.log"
|
||||
process.stdout = process.stderr = "<%= log %>/<%= app %>-<%= name %>-<%= num %>.log"
|
||||
|
||||
process.monitor_children do |children|
|
||||
children.stop_command "kill -QUIT {{PID}}"
|
||||
children.stop_command "kill {{PID}}"
|
||||
end
|
||||
|
||||
process.group = "<%= app %>-<%= process.name %>"
|
||||
process.group = "<%= app %>-<%= name %>"
|
||||
end
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string><%= "#{app}-#{process.name}-#{num}" %></string>
|
||||
<string><%= "#{app}-#{name}-#{num}" %></string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string><%= process.command %></string>
|
||||
@@ -13,10 +13,10 @@
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>StandardErrorPath</key>
|
||||
<string><%= log_root %>/<%= app %>-<%= process.name %>-<%=num%>.log</string>
|
||||
<string><%= log %>/<%= app %>-<%= name %>-<%=num%>.log</string>
|
||||
<key>UserName</key>
|
||||
<string><%= user %></string>
|
||||
<key>WorkingDirectory</key>
|
||||
<string><%= engine.directory %></string>
|
||||
<string><%= engine.root %></string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
LOG=<%= log %>/<%= name %>-<%= num %>
|
||||
|
||||
test -d "$LOG" || mkdir -p m2750 "$LOG" && chown <%= user %> "$LOG"
|
||||
exec chpst -u <%= user %> svlogd "$LOG"
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
LOG=<%= log_root %>/<%= process.name %>-<%= num %>
|
||||
|
||||
test -d "$LOG" || mkdir -p m2750 "$LOG" && chown <%= user %> "$LOG"
|
||||
exec chpst -u <%= user %> svlogd "$LOG"
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/sh
|
||||
cd <%= engine.directory %>
|
||||
exec chpst -u <%= user %> -e <%= process_env_directory %> <%= process.command %>
|
||||
cd <%= engine.root %>
|
||||
exec chpst -u <%= user %> -e <%= File.join(location, "#{process_directory}/env") %> <%= process.command %>
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<%
|
||||
app_names = []
|
||||
engine.procfile.entries.each do |process|
|
||||
next if (conc = self.concurrency[process.name]) < 1
|
||||
1.upto(self.concurrency[process.name]) do |num|
|
||||
port = engine.port_for(process, num, self.port)
|
||||
name = if (conc > 1); "#{process.name}-#{num}" else process.name; end
|
||||
environment = (engine.environment.keys.sort.map{ |var| %{#{var.upcase}="#{engine.environment[var]}"} } + [%{PORT="#{port}"}])
|
||||
app_name = "#{app}-#{name}"
|
||||
app_names << app_name
|
||||
engine.each_process do |name, process|
|
||||
1.upto(engine.formation[name]) do |num|
|
||||
port = engine.port_for(process, num)
|
||||
full_name = "#{app}-#{name}-#{num}"
|
||||
environment = engine.env.merge("PORT" => port.to_s).map do |key, value|
|
||||
"#{key}=#{shell_quote(value)}"
|
||||
end
|
||||
app_names << full_name
|
||||
%>
|
||||
[program:<%= app_name %>]
|
||||
[program:<%= full_name %>]
|
||||
command=<%= process.command %>
|
||||
autostart=true
|
||||
autorestart=true
|
||||
stopsignal=QUIT
|
||||
stdout_logfile=<%= log_root %>/<%=process.name%>-<%=num%>-out.log
|
||||
stderr_logfile=<%= log_root %>/<%=process.name%>-<%=num%>-err.log
|
||||
stdout_logfile=<%= log %>/<%= name %>-<%= num %>.log
|
||||
stderr_logfile=<%= log %>/<%= name %>-<%= num %>.error.log
|
||||
user=<%= user %>
|
||||
directory=<%= engine.directory %>
|
||||
directory=<%= engine.root %>
|
||||
environment=<%= environment.join(',') %><%
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
pre-start script
|
||||
|
||||
bash << "EOF"
|
||||
mkdir -p <%= log_root %>
|
||||
chown -R <%= user %> <%= log_root %>
|
||||
mkdir -p <%= log %>
|
||||
chown -R <%= user %> <%= log %>
|
||||
EOF
|
||||
|
||||
end script
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
start on starting <%= app %>-<%= process.name %>
|
||||
stop on stopping <%= app %>-<%= process.name %>
|
||||
start on starting <%= app %>-<%= name %>
|
||||
stop on stopping <%= app %>-<%= name %>
|
||||
respawn
|
||||
|
||||
exec su - <%= user %> -c 'cd <%= engine.directory %>; export PORT=<%= port %>;<% engine.environment.each_pair do |var,env| %> export <%= var.upcase %>=<%= shell_quote(env) %>; <% end %> <%= process.command %> >> <%= log_root %>/<%=process.name%>-<%=num%>.log 2>&1'
|
||||
exec su - <%= user %> -c 'cd <%= engine.root %>; export PORT=<%= port %>;<% engine.env.each_pair do |var,env| %> export <%= var.upcase %>=<%= shell_quote(env) %>; <% end %> <%= process.command %> >> <%= log %>/<%=name%>-<%=num%>.log 2>&1'
|
||||
|
||||
Reference in New Issue
Block a user