Skip to content
Extraits de code Groupes Projets
Valider 6bcac2a7 rédigé par Florian Staudacher's avatar Florian Staudacher
Parcourir les fichiers

Merge pull request #4117 from MrZYX/script_server

Refactor script/server
parents 95cef200 aca134d5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -104,6 +104,7 @@ everything is set up.
* Add a configuration entry to set max-age header to Amazon S3 resources. [#4048](https://github.com/diaspora/diaspora/pull/4048)
* Load images via sprites [#4039](https://github.com/diaspora/diaspora/pull/4039)
* Delete unnecessary javascript views. [#4059](https://github.com/diaspora/diaspora/pull/4059)
* Cleanup of script/server
## Bug fixes
......
......@@ -40,6 +40,7 @@ defaults:
database: 'mysql'
unicorn_worker: 2
embed_sidekiq_worker: false
sidekiq_workers: 1
privacy:
jquery_cdn: true
google_analytics_key:
......
......@@ -152,13 +152,18 @@ configuration: ## Section
## Valid choices are 'mysql' and 'postgres'
#database: 'mysql'
## Number of unicorn worker processes, increase this if
## Number of Unicorn worker processes, increase this if
## you have many users
#unicorn_worker: 2
## Embed a Sidekiq worker inside the unicorn process, useful for
## minimal Heroku setups
#embed_sidekiq_worker: true
## Number of Sidekiq worker processes
## Most of the time you want to increase
## environment.sidekiq.concurrency instead!
#sidekiq_workers: 1
## Settings probably affecting the privacy of your users
privacy: ## Section
......
......@@ -3,109 +3,138 @@
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
warning()
{
echo "WARNING: $1" >&2
}
fatal()
{
echo "FATAL: $1" >&2
exit 1
}
on_failure()
{
if [ $? != 0 ]
then
fatal $1
fi
}
# Check if already running/port blocked
chk_service()
{
port=${1:?Missing port}
case $os in
*[Bb][Ss][Dd]*|Darwin)
## checks ipv[46]
netstat -anL | awk '{print $2}' | grep "\.$1$"
;;
*)
# Is someone listening on the ports already? (ipv4 only test ?)
netstat -nl | grep '[^:]:'$port'[ \t]'
;;
esac
}
# ensure right directory
realpath=$( ruby -e "puts File.expand_path(\"$0\")")
cd $(dirname $realpath)/..
#Warn if legacy config exists
if [ -e 'config/script_server.yml' ]; then
echo "WARNING: config/script_server.yml was merged into config/diaspora.yml. Please read the changelog!" >&2
if [ -e "config/script_server.yml" ]
then
warning "config/script_server.yml was merged into config/diaspora.yml. Please read the changelog!"
fi
# Check if database.yml exists
if [ ! -e 'config/database.yml' ]; then
echo 'FATAL: config/database.yml is missing! Copy over config/database.yml.example to config/database.yml and edit it properly!' >&2
exit 68
if [ ! -e "config/database.yml" ]
then
fatal "config/database.yml is missing! Copy over config/database.yml.example to config/database.yml and edit it properly!"
fi
# Check if diaspora.yml exists
if [ ! -e 'config/diaspora.yml' ]; then
echo 'FATAL: config/diaspora.yml is missing! Copy over config/diaspora.yml.example to config/diaspora.yml and edit it properly!' >&2
exit 70
if [ ! -e "config/diaspora.yml" ]
then
fatal "config/diaspora.yml is missing! Copy over config/diaspora.yml.example to config/diaspora.yml and edit it properly!"
fi
# Setup environment
if [ -z "$RAILS_ENV" ]; then
if [ -z "$RAILS_ENV" ]
then
RAILS_ENV=$(bundle exec ruby ./script/get_config.rb server.rails_environment)
on_failure "Couldn't parse config/diaspora.yml!"
export RAILS_ENV
fi
os=`uname -s`
eval $(bundle exec ruby ./script/get_config.rb \
os=$(uname -s)
vars=$(bundle exec ruby ./script/get_config.rb \
port=server.port \
db=server.database \
single_process_mode=environment.single_process_mode?
embed_sidekiq_worker=server.embed_sidekiq_worker
single_process_mode=environment.single_process_mode? \
embed_sidekiq_worker=server.embed_sidekiq_worker \
workers=server.sidekiq_workers
)
on_failure "Couldn't parse config/diaspora.yml!"
eval "$vars"
if [ -z "$DB" ]; then
if [ -z "$DB" ]
then
DB=$db
export DB
fi
args="$@"
prev_arg=''
for arg in $( echo $args | awk '{ for (i = 1; i <= NF; i++) print $i}')
for arg in $(echo $args | awk '{ for (i = 1; i <= NF; i++) print $i}')
do
[ "$prev_arg" = '-p' ] && port="$arg"
prev_arg="$arg"
done
# Check if already running/port blocked
chk_service()
{
port=${1:?Missing port}
case $os in
*[Bb][Ss][Dd]*|Darwin)
## checks ipv[46]
netstat -anL | awk '{print $2}' | grep "\.$1$"
;;
*)
# Is someone listening on the ports already? (ipv4 only test ?)
netstat -nl | grep '[^:]:'$port'[ \t]'
;;
esac
}
services=$( chk_service $port )
if [ -n "$services" ]; then
echo "FATAL: Error: port $port is already in use. Exiting" >&2
echo " $services"
exit 64
services=$(chk_service $port )
if [ -n "$services" ]
then
fatal "Port $port is already in use.\n\t$services"
fi
# Force AGPL
if [ -w public -a ! -e public/source.tar.gz ]; then
branch=$( git branch | awk '/^[*]/ {print $2}')
tar czf public/source.tar.gz `git ls-tree -r $branch | awk '{print $4}'`
if [ -w "public" -a ! -e "public/source.tar.gz" ]
then
branch=$(git branch | awk '/^[*]/ {print $2}')
tar czf public/source.tar.gz $(git ls-tree -r $branch | awk '{print $4}')
fi
if [ ! -e public/source.tar.gz ]; then
echo "FATAL: Error: Can't find, or even create, public/source.tar.gz. Exiting" >&2
exit 65
if [ ! -e "public/source.tar.gz" ]
then
fatal "Can't find, or even create, public/source.tar.gz."
fi
# Check if assets are precompiled
if [ "$RAILS_ENV" = 'production' ]; then
if [ ! -e 'public/assets/default.css' ]; then
echo "FATAL: You're running in production mode without having assets precompiled." >&2
echo "Now and after each update before you restart the application, run:" >&2
echo "bundle exec rake assets:precompile" >&2
exit 71
fi
if [ "$RAILS_ENV" = "production" -a ! -e "public/assets/default.css" ]
then
fatal <<MSG
You're running in production mode without having assets precompiled.
Now and after each update before you restart the application, run:
bundle exec rake assets:precompile
MSG
fi
# Start Diaspora
echo -n "Starting Diaspora in $RAILS_ENV mode on port $port "
if [ "$embed_sidekiq_worker" = "true" ]; then
echo "with a sidekiq worker embeded into unicorn."
elif [ "$single_process_mode" = "true" ]; then
if [ "$embed_sidekiq_worker" = "true" ]
then
echo "with a Sidekiq worker embedded into Unicorn."
workers=0
elif [ "$single_process_mode" = "true" ]
then
echo "with job processing inside the request cycle."
workers=0
else
echo "with $workers Sidekiq worker(s)."
fi
echo ""
exec bundle exec foreman start -m "web=1,sidekiq=1" -p $port
exec bundle exec foreman start -m "web=1,sidekiq=$workers" -p $port
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter