Skip to content
Extraits de code Groupes Projets
server 3,31 ko
Newer Older
danielgrippi's avatar
danielgrippi a validé
#   Copyright (c) 2010-2011, Diaspora Inc.  This file is
Jonne Hass's avatar
Jonne Hass a validé
#   licensed under the Affero General Public License version 3 or later.  See
#   the COPYRIGHT file.
Jonne Haß's avatar
Jonne Haß a validé
warning()
{
  echo "WARNING: $1" >&2
}

fatal()
{
  echo "FATAL: $1" >&2
  exit 1
}

on_failure()
{
  if [ $? != 0 ]
  then
    fatal "$1"
Jonne Haß's avatar
Jonne Haß a validé
  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
}


Jonne Hass's avatar
Jonne Hass a validé
# ensure right directory
realpath=$( ruby -e "puts File.expand_path(\"$0\")")
cd $(dirname $realpath)/..
Jonne Hass's avatar
Jonne Hass a validé

#Warn if legacy config exists
Jonne Haß's avatar
Jonne Haß a validé
if [ -e "config/script_server.yml" ]
then
  warning "config/script_server.yml was merged into config/diaspora.yml. Please read the changelog!"
Jonne Hass's avatar
Jonne Hass a validé
fi
Jonne Hass's avatar
Jonne Hass a validé
# Check if database.yml exists
Jonne Haß's avatar
Jonne Haß a validé
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!"
Jonne Hass's avatar
Jonne Hass a validé
fi

# Check if diaspora.yml exists
Jonne Haß's avatar
Jonne Haß a validé
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!"
Jonne Hass's avatar
Jonne Hass a validé
fi

# Setup environment
Jonne Haß's avatar
Jonne Haß a validé
if [ -z "$RAILS_ENV" ]
then
  RAILS_ENV=$(bundle exec ruby ./script/get_config.rb server.rails_environment)
Jonne Haß's avatar
Jonne Haß a validé
  on_failure "Couldn't parse config/diaspora.yml!"
Jonne Haß's avatar
Jonne Haß a validé

os=$(uname -s)
vars=$(bundle exec ruby ./script/get_config.rb \
  port=server.port \
Jonne Haß's avatar
Jonne Haß a validé
  single_process_mode=environment.single_process_mode? \
  embed_sidekiq_worker=server.embed_sidekiq_worker \
  workers=server.sidekiq_workers
Jonne Haß's avatar
Jonne Haß a validé
on_failure "Couldn't parse config/diaspora.yml!"
eval "$vars"
Jonne Haß's avatar
Jonne Haß a validé
then
Jonne Haß's avatar
Jonne Haß a validé
for arg in $(echo $args | awk '{ for (i = 1; i <= NF; i++) print $i}')
Alec Leamas's avatar
Alec Leamas a validé
do
  [ "$prev_arg" = '-p' ] && port="$arg"
  prev_arg="$arg"
Jonne Haß's avatar
Jonne Haß a validé
services=$(chk_service $port )
if [ -n "$services" ]
then
  fatal "Port $port is already in use.\n\t$services"
Jonne Haß's avatar
Jonne Haß a validé
if [ -w "public" -a ! -e  "public/source.tar.gz" ]
then
  if command -v git > /dev/null 2>&1 && git rev-parse --is-inside-work-tree > /dev/null 2>&1
  then
    branch=$(git branch | awk '/^[*]/ {print $2}')
    tar czf public/source.tar.gz  $(git ls-tree -r $branch | awk '{print $4}')
  else
    fatal "Can't generate public/source.tar.gz for you.
Please tar up a copy of your Diaspora installtion and place it there."
Jonne Haß's avatar
Jonne Haß a validé
if [ ! -e "public/source.tar.gz" ]
then
  fatal "Can't find public/source.tar.gz"
# Check if assets are precompiled
Jonne Haß's avatar
Jonne Haß a validé
if [ "$RAILS_ENV" = "production" -a ! -e "public/assets/default.css" ]
then
  fatal "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"
Jonne Hass's avatar
Jonne Hass a validé
# Start Diaspora
echo -n "Starting Diaspora in $RAILS_ENV mode on port $port "
Jonne Haß's avatar
Jonne Haß a validé
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."
Jonne Haß's avatar
Jonne Haß a validé
  workers=0
else
  echo "with $workers Sidekiq worker(s)."
Jonne Haß's avatar
Jonne Haß a validé
exec bundle exec foreman start -m "web=1,sidekiq=$workers" -p $port