1

我尝试使用 ruby​​ (1.9.3-rc1)、rails、capistrano、nginx 和 unicorn 在我的 vps(Ubuntu 12.04 服务器(64 位))上部署 2 天。

我还遵循 Ryan Bates 的 railscast 教程,展示了如何从头开始在 VPS 上进行部署。

实际上 cap deploy:cold 命令似乎可以正常工作(与所有其他命令一样),但是当我尝试访问我的 url 时,我遇到了“我们很抱歉,但出了点问题”=> Rails 的默认错误页面。

在我的生产日志中,我得到:

Migrating to CreateQuestionAnswers (20130317152603)
Migrating to CreateRegions (20130502212531)
Migrating to AddRegionIdToSection (20130502212557)
Migrating to CreateAnnonceImages (20130510130906)
Migrating to AddAttachmentImageToAnnonceImages (20130510130925)
Migrating to CreateFormations (20130510195503)
Migrating to CreateInscriptions (20130510195627)
Migrating to AddAttachmentImageToFormations (20130511182928)
Migrating to AddParamsToInscription (20130514231201)
Migrating to AddPaypalidToInscription (20130514234243)
   (0.3ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" 
Connecting to database specified by database.yml
Connecting to database specified by database.yml
Creating scope :all. Overwriting existing method User.all.
Creating scope :all. Overwriting existing method User.all.
Creating scope :all. Overwriting existing method Echange.all.
Creating scope :all. Overwriting existing method Echange.all.
Creating scope :validate. Overwriting existing method Annonce.validate.
Creating scope :validate. Overwriting existing method Annonce.validate.
Creating scope :all. Overwriting existing method Article.all.
Creating scope :all. Overwriting existing method Article.all.

所以我查看了我的独角兽日志,我发现了这个:

E, [2013-05-21T03:20:08.751341 #31081] ERROR -- : reaped #<Process::Status: pid 4335 exit         1> worker=0
I, [2013-05-21T03:20:08.753997 #31081]  INFO -- : worker=0 spawning...
E, [2013-05-21T03:20:08.790666 #31081] ERROR -- : reaped #<Process::Status: pid 4332 exit 1> worker=1
I, [2013-05-21T03:20:08.791251 #31081]  INFO -- : worker=1 spawning...
I, [2013-05-21T03:20:08.794600 #4341]  INFO -- : worker=0 spawned pid=4341
I, [2013-05-21T03:20:08.796302 #4341]  INFO -- : Refreshing Gem list
I, [2013-05-21T03:20:08.802089 #4344]  INFO -- : worker=1 spawned pid=4344
I, [2013-05-21T03:20:08.803227 #4344]  INFO -- : Refreshing Gem list
I, [2013-05-21T03:20:37.871677 #31081]  INFO -- : reloading config_file=/home/deployer/apps/avocat-immo/current/config/unicorn.rb
I, [2013-05-21T03:20:37.876045 #31081]  INFO -- : done reloading config_file=/home/deployer/apps/avocat-immo/current/config/unicorn.rb
I, [2013-05-21T03:20:38.002451 #31081]  INFO -- : reaped #<Process::Status: pid 4344 exit 0> worker=1
I, [2013-05-21T03:20:38.002640 #31081]  INFO -- : worker=1 spawning...
I, [2013-05-21T03:20:38.007280 #4674]  INFO -- : worker=1 spawned pid=4674
I, [2013-05-21T03:20:38.007595 #4674]  INFO -- : Refreshing Gem list
I, [2013-05-21T03:20:38.010511 #31081]  INFO -- : reaped #<Process::Status: pid 4341 exit 0> worker=0
I, [2013-05-21T03:20:38.010714 #31081]  INFO -- : worker=0 spawning...
I, [2013-05-21T03:20:38.012600 #4678]  INFO -- : worker=0 spawned pid=4678
I, [2013-05-21T03:20:38.012886 #4678]  INFO -- : Refreshing Gem list
I, [2013-05-21T03:21:08.079364 #4678]  INFO -- : worker=0 ready
I, [2013-05-21T03:21:08.080779 #4674]  INFO -- : worker=1 ready
I, [2013-05-21T03:21:46.897404 #31081]  INFO -- : reloading config_file=/home/deployer/apps/avocat-immo/current/config/unicorn.rb
I, [2013-05-21T03:21:46.900599 #31081]  INFO -- : done reloading config_file=/home/deployer/apps/avocat-immo/current/config/unicorn.rb
I, [2013-05-21T03:21:47.237973 #31081]  INFO -- : reaped #<Process::Status: pid 4678 exit 0> worker=0
I, [2013-05-21T03:21:47.238160 #31081]  INFO -- : worker=0 spawning...
I, [2013-05-21T03:21:47.241018 #31081]  INFO -- : reaped #<Process::Status: pid 4674 exit 0> worker=1
I, [2013-05-21T03:21:47.241296 #31081]  INFO -- : worker=1 spawning...
I, [2013-05-21T03:21:47.243055 #4919]  INFO -- : worker=0 spawned pid=4919
I, [2013-05-21T03:21:47.243287 #4919]  INFO -- : Refreshing Gem list
I, [2013-05-21T03:21:47.245830 #4921]  INFO -- : worker=1 spawned pid=4921
I, [2013-05-21T03:21:47.246122 #4921]  INFO -- : Refreshing Gem list
I, [2013-05-21T03:22:17.055549 #4919]  INFO -- : worker=0 ready
I, [2013-05-21T03:22:17.057331 #4921]  INFO -- : worker=1 ready
I, [2013-05-21T03:29:57.149534 #31081]  INFO -- : reloading config_file=/home/deployer/apps/avocat-immo/current/config/unicorn.rb
I, [2013-05-21T03:29:57.181644 #31081]  INFO -- : done reloading config_file=/home/deployer/apps/avocat-immo/current/config/unicorn.rb
I, [2013-05-21T03:29:57.997267 #31081]  INFO -- : reaped #<Process::Status: pid 4919 exit 0> worker=0
I, [2013-05-21T03:29:57.997689 #31081]  INFO -- : worker=0 spawning...
I, [2013-05-21T03:29:58.003458 #31081]  INFO -- : reaped #<Process::Status: pid 4921 exit 0> worker=1
I, [2013-05-21T03:29:58.003691 #31081]  INFO -- : worker=1 spawning...
I, [2013-05-21T03:29:58.010269 #7783]  INFO -- : worker=0 spawned pid=7783

一遍又一遍 ...

所以这是我的配置:

我的独角兽.rb:

root = "/home/deployer/apps/avocat-immo/current"
working_directory root
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.log"
stdout_path "#{root}/log/unicorn.log"
listen "/tmp/unicorn.avocat.sock"
worker_processes 2
timeout 30

这是我的 unicorn_init.sh

#!/bin/sh
set -e

# Feel free to change any of the following variables for your app:
TIMEOUT=${TIMEOUT-60}
APP_ROOT=/home/deployer/apps/avocat-immo/current
PID=$APP_ROOT/tmp/pids/unicorn.pid
CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E production"
AS_USER=deployer
set -u

OLD_PIN="$PID.oldbin"

sig () {
  test -s "$PID" && kill -$1 `cat $PID`
}

oldsig () {
  test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
}

run () {
  if [ "$(id -un)" = "$AS_USER" ]; then
    eval $1
  else
    su -c "$1" - $AS_USER
  fi
}

case "$1" in
start)
  sig 0 && echo >&2 "Already running" && exit 0
  run "$CMD"
  ;;
stop)
  sig QUIT && exit 0
  echo >&2 "Not running"
  ;;
force-stop)
  sig TERM && exit 0
  echo >&2 "Not running"
  ;;
restart|reload)
  sig HUP && echo reloaded OK && exit 0
  echo >&2 "Couldn't reload, starting '$CMD' instead"
  run "$CMD"
  ;;
upgrade)
  if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
  then
n=$TIMEOUT
    while test -s $OLD_PIN && test $n -ge 0
    do
      printf '.' && sleep 1 && n=$(( $n - 1 ))
    done
    echo

    if test $n -lt 0 && test -s $OLD_PIN
    then
      echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
      exit 1
    fi
    exit 0
  fi
  echo >&2 "Couldn't upgrade, starting '$CMD' instead"
  run "$CMD"
  ;;
reopen-logs)
  sig USR1
  ;;
*)
  echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
  exit 1
  ;;
esac

我努力了

/etc/init.d/unicorn_avocat-immo start
/etc/init.d/unicorn_avocat-immo stop

我也重新启动了 nginx,但似乎没有任何效果。该网站在错误页面上加载不到一秒钟,并且该网站尚未正常工作,因为它应该在生产中。

任何人都可以在这件事上帮助我吗?

在 nginx errors.log 中找到的其他信息

    2013/05/21 12:23:08 [crit] 19097#0: *16 connect() to unix:/tmp/avocat.sock failed (2: No such file or directory) while connecting to upstream, client: **.***.**.***, server: , request: "GET / HTTP/1.1", upstream: "http://unix:/tmp/avocat.sock:/", host: "**.***.**.***"
4

1 回答 1

3

只需添加 config.log_level = :debugconfig/production.rb

您将在该日志的 log/production.log 粘贴输出中收到错误日志,以便我可以帮助您

也试试rake assets:precompile

于 2013-05-21T06:28:21.700 回答