Skip to content
Extraits de code Groupes Projets
server 4,39 ko
Newer Older
  • Learn to ignore specific revisions
  • 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
    
    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 \
      chat=chat.enabled \
      chat_server=chat.server.enabled \
      chat_bosh_proxy=chat.server.bosh.proxy
    
    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.
    
    Bigard Florian's avatar
    Bigard Florian a validé
    Please tar up a copy of your Diaspora installation 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
    
    if [ "$RAILS_ENV" = "production" -a -z "$(find public/assets -maxdepth 1 -name 'default-*.css' -print -quit)" ]
    
    Jonne Haß's avatar
    Jonne Haß a validé
    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"
    
    # Check for old curl versions (see https://github.com/diaspora/diaspora/issues/4202)
    if [ `curl -V | grep AsynchDNS | wc -l` -ne 1 ]
    then
      warning "
    *****************************************************************
    curl does not support async DNS, this can cause Sidekiq to crash!
    Please update curl to version 7.32, see issue
    https://github.com/diaspora/diaspora/issues/4202 for details
    *****************************************************************
    "
    fi
    
    
    Lukas Matt's avatar
    Lukas Matt a validé
    vines=0
    
    if [ "$chat" = "true" ] && [ "$chat_server" = "true" ]
    then
      vines=1
    
      if [ "$chat_bosh_proxy" = "false" ]
      then
        warning "
    *****************************************************************
    You enabled the chat feature but haven't configured BOSH! That
    could lead to mixed-content problems with the http clients. Please
    think about editing your proxy configuration as described in:
    
    diaspora.yml.example
    *****************************************************************
    "
      fi
    
    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)."
    
    Lukas Matt's avatar
    Lukas Matt a validé
    exec bundle exec foreman start -m "xmpp=$vines,web=1,sidekiq=$workers" -p $port