From a21de8b190a39753aea838e982a606340342e0e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= Date: Sun, 17 May 2015 18:43:57 +0200 Subject: [PATCH] Make listen directive for Unicorn configurable --- config/defaults.yml | 3 ++- config/diaspora.yml.example | 13 +++++++---- config/unicorn.rb | 45 ++++++++++--------------------------- script/server | 29 ++++++++++++++++++------ 4 files changed, 45 insertions(+), 45 deletions(-) diff --git a/config/defaults.yml b/config/defaults.yml index f4fc2997a..add0ee97e 100644 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -32,7 +32,8 @@ defaults: host: pubsub_server: 'https://pubsubhubbub.appspot.com/' server: - port: 3000 + port: + listen: '0.0.0.0:3000' rails_environment: 'development' stderr_log: stdout_log: diff --git a/config/diaspora.yml.example b/config/diaspora.yml.example index aab2d49b4..378e0d6d3 100644 --- a/config/diaspora.yml.example +++ b/config/diaspora.yml.example @@ -140,8 +140,13 @@ configuration: ## Section ## Settings affecting how ./script/server behaves. server: ## Section + ## Where the appserver should listen to (default=0.0.0.0:3000) + #listen: '127.0.0.1:3000' + #listen: 'unix:tmp/diaspora.sock' + #listen: 'unix:/run/diaspora/diaspora.sock' - ## The port on which the appserver should listen (default=3000). + ## The port on which the appserver should listen (default=none). + ## Note: this setting is deprecated, use listen instead. #port: 3000 ## Rails environment (default='development'). @@ -407,14 +412,14 @@ configuration: ## Section ## **or** an encrypted key for an unhosted button. paypal_donations: ## Section #enable: false - + ## Currency used (USD, EUR...) #currency: USD - + ## hosted Paypal button id #paypal_hosted_button_id: "change_me" ## OR encrypted key of unhosted button - #paypal_unhosted_button_encrypted: "-----BEGIN PKCS7-----" + #paypal_unhosted_button_encrypted: "-----BEGIN PKCS7-----" ## Bitcoin donations ## You can provide a bitcoin address here to allow your users to provide diff --git a/config/unicorn.rb b/config/unicorn.rb index 28ee4afc7..0dfabe003 100644 --- a/config/unicorn.rb +++ b/config/unicorn.rb @@ -1,29 +1,19 @@ -require File.expand_path('../load_config', __FILE__) +require_relative "load_config" -# Enable and set these to run the worker as a different user/group -#user = 'diaspora' -#group = 'diaspora' +port = ENV["PORT"] +port = port && !port.empty? ? port.to_i : nil +listen port || AppConfig.server.listen.get unless RACKUP[:set_listener] worker_processes AppConfig.server.unicorn_worker.to_i - -## Load the app before spawning workers -preload_app true - -# How long to wait before killing an unresponsive worker timeout AppConfig.server.unicorn_timeout.to_i - -@sidekiq_pid = nil - -#pid '/var/run/diaspora/diaspora.pid' -#listen '/var/run/diaspora/diaspora.sock', :backlog => 2048 - - stderr_path AppConfig.server.stderr_log.get if AppConfig.server.stderr_log? stdout_path AppConfig.server.stdout_log.get if AppConfig.server.stdout_log? -before_fork do |server, worker| - # If using preload_app, enable this line - ActiveRecord::Base.connection.disconnect! +preload_app true +@sidekiq_pid = nil + +before_fork do |_server, _worker| + ActiveRecord::Base.connection.disconnect! # preloading app in master, so reconnect to DB # disconnect redis if in use unless AppConfig.environment.single_process_mode? @@ -31,23 +21,12 @@ before_fork do |server, worker| end if AppConfig.server.embed_sidekiq_worker? - @sidekiq_pid ||= spawn('bin/bundle exec sidekiq') - end - - old_pid = '/var/run/diaspora/diaspora.pid.oldbin' - if File.exists?(old_pid) && server.pid != old_pid - begin - Process.kill("QUIT", File.read(old_pid).to_i) - rescue Errno::ENOENT, Errno::ESRCH - # someone else did our job for us - end + @sidekiq_pid ||= spawn("bin/bundle exec sidekiq") end end - -after_fork do |server, worker| - # If using preload_app, enable this line - ActiveRecord::Base.establish_connection +after_fork do |_server, _worker| + ActiveRecord::Base.establish_connection # preloading app in master, so reconnect to DB # We don't generate uuids in the frontend, but let's be on the safe side UUID.generator.next_sequence diff --git a/script/server b/script/server index dae8ef767..17f5784e7 100755 --- a/script/server +++ b/script/server @@ -119,17 +119,28 @@ then export DB fi +if [ -z "$PORT" -a -n "$port" ] +then + warning "Setting port via configuration is deprecated, set listen instead. See the updated config/diaspora.yml.example." + PORT="$port" +fi + args="$@" for arg in $(echo $args | awk '{ for (i = 1; i <= NF; i++) print $i}') do - [ "$prev_arg" = '-p' ] && port="$arg" + [ "$prev_arg" = '-p' ] && PORT="$arg" prev_arg="$arg" done -services=$(chk_service $port ) -if [ -n "$services" ] +if [ -n "$PORT" ] then - fatal "Port $port is already in use.\n\t$services" + export PORT + + services=$(chk_service $PORT) + if [ -n "$services" ] + then + fatal "Port $port is already in use.\n\t$services" + fi fi # Force AGPL @@ -186,11 +197,15 @@ think about editing your proxy configuration as described in: diaspora.yml.example ***************************************************************** " - fi fi # Start Diaspora -printf "Starting Diaspora in $RAILS_ENV mode on port $port " +printf "Starting Diaspora in $RAILS_ENV mode " +if [ -n "$PORT" ] +then + printf "on port $PORT " + port_option="-p $PORT" +fi if [ "$embed_sidekiq_worker" = "true" ] then echo "with a Sidekiq worker embedded into Unicorn." @@ -204,4 +219,4 @@ else fi echo "" -exec bin/bundle exec foreman start -m "xmpp=$vines,web=1,sidekiq=$workers" -p $port +exec bin/bundle exec foreman start -m "xmpp=$vines,web=1,sidekiq=$workers" $port_option