Rails/Uberspacify: 503 Сервис временно недоступен

Я тестирую http://uberspace.de/ с помощью uberspacify, коллекции рецептов капистрано. Перед тем, как начать с uberspacify, я настроил сервер, как описано в документации, предоставленной uberspace. Мое приложение RubyOnRails только что запустилось. Теперь, когда я развернул через uberspacify, следующая ошибка написана в /var/www/virtual/john/logs/error_log:

[ошибка] (111) Отказано в соединении: прокси: HTTP: попытка подключения к 127.0.0.1:44477 (*) не удалась

Обратите внимание, что порт 44477 отличается каждый раз при развертывании.
Сам сайт утверждает:

503 Service Temporarily Unavailable
The server is temporarily unable to service your request due to 
maintenance downtime or capacity problems. Please try again later.
Apache/2.2.15 (CentOS) Server at foobar.phoenix.uberspace.de Port 443

Здесь Capfile Я готов:

# Capfile
load 'deploy'
# Uncomment if you are using Rails' asset pipeline
load 'deploy/assets'
load 'config/deploy' # remove this line to skip loading any of the default tasks

Вот конфигурация в deploy.rb:

# config/deploy.rb

# include uberspacify base recipes
require "uberspacify/base"

# comment this if you don"t use MySQL
require "uberspacify/mysql"

# the Uberspace server you are on
server "phoenix.uberspace.de", :web, :app, :db, :primary => true

# your Uberspace username
set :user, "john"

# a name for your app, [a-z0-9] should be safe, will be used for your gemset,
# databases, directories, etc.
set :application, "foobar"

# the repo where your code is hosted
set :scm, :git
set :repository, "git@bitbucket.org:obama/#{application}.git"
set :branch, "master"

# optional stuff from here

# By default, your app will be available in the root of your Uberspace. If you
# have your own domain set up, you can configure it here
# set :domain, "www.dummyapp.com"

# By default, uberspacify will generate a random port number for Passenger to
# listen on. This is fine, since only Apache will use it. Your app will always
# be available on port 80 and 443 from the outside. However, if you"d like to
# set this yourself, go ahead.
# set :passenger_port, 55555

# By default, Ruby Enterprise Edition 1.8.7 is used for Uberspace. If you
# prefer Ruby 1.9 or any other version, please refer to the RVM documentation
# at https://rvm.io/integration/capistrano/ and set this variable.
set :rvm_ruby_string, "1.9.3@#{application}"

Я выполнил следующие команды:

$ bundle exec cap deploy:setup
$ bundle exec cap deploy:migrations

Интересно, если Uberspacify позаботится обо всей конфигурации. Учебник по uberspace для RubyOnRails работает с fcgi и .htaccess с правилами перезаписи. Также они не используют rvm.

Здесь Gemfile приложения:

source 'https://rubygems.org'

ruby '1.9.3'
gem 'rails', '~> 3.2.13'
gem 'counter_culture', git: 'https://github.com/dorilla/counter_culture'
gem 'jquery-rails', '~> 3.0.2'
gem 'therubyracer', '~> 0.11.4', require: 'v8'
gem 'attribute_normalizer', '~> 1.1.0'
gem 'pry', '~> 0.9.12.2'

# Parsing ShapeFiles
gem 'rgeo', '~> 0.3.20'
gem 'rgeo-shapefile', '~> 0.2.3'
gem 'georuby', '~> 2.0.0'
gem 'dbf', '~> 2.0.6'
gem 'gdal', '~> 0.0.5'

gem 'capistrano', '~> 2.15.5'
gem 'uberspacify', '~> 0.9.3'
gem 'mysql2', '~> 0.3.13'

group :assets do
  gem 'sass-rails', '~> 3.2.5'
  gem 'coffee-rails', '~> 3.2.2'
  gem 'uglifier', '~> 2.1.1'
end

group :development do
  gem 'debugger', '~> 1.6.0'
end

group :development, :test do
  gem 'sqlite3', '~> 1.3.7'
  gem 'rspec-rails', '~> 2.14.0'
  gem 'rspec-smart-formatter', '~> 0.0.4', require: false
  gem 'factory_girl_rails', '4.2.1'
  gem 'factory_girl_extensions', '2.1.0'
end

group :production do
  gem 'mysql2', '~> 0.3.13'
end

Интересно, что мне нужно было установить библиотеку gdal через менеджер пакетов toast: $ toast arm gdal прежде чем я смог успешно установить $ gem install gdal, Этот драгоценный камень необходим для разбора ShapeFiles.


Я заметил что нет ~/.passenger каталог после deploy:setup а также deploy:migrations успешно обработано.

2 ответа

Решение

Проблема решена с помощью @patheticpat!!!

Вот шаги, которые были полезны для анализа проблемы на сервере.

  • Чтобы проверить, запущен ли веб-сервер вообще, запустите $ curl http://localhost:{PORT}, Порт можно найти в ~/html/.htaccess или в ~/service/rails-{yourapp}/run,
  • Чтобы вручную запустить сервер, выполните $ ~/service/rails-{yourapp}/run и остерегайтесь ошибок.
  • Текущее развертывание можно найти в /var/www/virtual/$USER/rails/{yourapp}/current,
  • Чтобы запустить Passenger вручную $ bundle exec passenger start -p $PORT -e production
  • Чтобы запустить "Пассажир как сервис", запустите $ svc -u ~/service/rails-{yourapp}
  • Чтобы остановить запуск службы пассажиров $ svc -d ~/service/rails-{yourapp}

В процессе проб и ошибок мы выяснили, что есть PATH проблема, и мы заметили, что ~/service/rails-{yourapp}/run источники $HOME/.bash_profile как можно увидеть здесь. Следует упомянуть, что я использую zsh в сочетании с oh-my-zsh и пользовательскими точечными файлами. Мы заметили, что я уже настроил RVM в ~/.zshrc, Этот файл уже содержит исходную команду:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

Мы выяснили, что это на самом деле мешает RVM поставить то же самое утверждение в ~/.bash_profile как это уже задокументировано здесь.

Подводя итог: если вы удалите конфигурацию rvm из своих пользовательских файлов точек, uberspacify прекрасно настроит и запустит веб-сервер.


@uberspacify: я предлагаю вам переписать скрипт rvm, чтобы следить за предупреждением, упомянутым здесь, и реагировать соответствующим образом.

Я автор Uberspacify. Кажется, что Passenger с вашим Rails-приложением еще не запущен (пока). Вот почему Apache сообщает "Отказ в соединении" на порте 44477 - это порт, который uberspacify выбрал случайным образом для внутренней связи между пассажиром и Apache.

Чтобы отладить это, вы можете проверить файлы журналов в /var/www/virtual/< your username>/rails/<your app>/shared/log,

Также, пожалуйста, не забудьте отменить любые изменения конфигурации, которые вы сделали в соответствии с инструкциями Uberspace. Их инструкции предназначены для развертывания только для FCGI и не имеют ничего общего (и, скорее всего, несовместимы) с Uberspacify. Единственными предварительными условиями для использования Uberspacify являются обычное приложение Rails и учетная запись Uberspace.

Другие вопросы по тегам