2015-08-10 2 views
0

я развернула Rails 4 приложения (с помощью .rbenv) на удаленном сервере Ubuntu работает Ngninx + Unicorn с помощью Capistrano (поэтапное развертывание)Rails 4.2 + Nginx + Unicorn - Missing secret_token и secret_key_base после развертывания

E, [2015-08-10T16:53:29.822778 #24117] ERROR -- : app error: Missing `secret_token` and `secret_key_base` for 'staging' environment, set these values in `config/secrets.yml` (RuntimeError) 

Использование в комплексе Capistrano/загрузки-конфигурации, я связать secrets.yml файл на удаленном сервере в текущей версии развернуты

app/config/ 
secrets.staging.yml 
secrets.yml -> /var/www/rails/delayMessage/shared/config/secrets.yml 

и файл содержит /var/www/rails/delayMessage/shared/config/secrets.yml

staging: 
    secret_key_base: 10c7ed6bccc6d3acb71... 

Почему secret_key_base не учитывается, и почему возникает эта ошибка и отображается в unicorn.stderr.log

UPDATE 1

в unicorn.rb У меня есть следующие пути (приложение и поделились), возможно, они ошибаются

# Установить полный путь к приложению. APP_DIR = File.expand_path ('../../', ФАЙЛ) shared_dir = File.expand_path ('../../../ общий /', ФАЙЛ)

+0

Что такое 'secrets.staging.yml'? это другой файл в 'app/config' – bigsolom

+0

Я лично никогда не пользовался Единорогом, поэтому я ношу в темноте. Но я бы подтвердил, что Единорог смотрит на правильный каталог. Например, поскольку Capistrano указывает 'current' на' релизы/[timestamp] ', Unicorn может указывать на старую версию. Кроме того, убедитесь, что Unicorn перезапускается после изменения символической ссылки, поэтому он видит файл (я бы предположил, что это происходит правильно). –

+0

Спасибо за ваши отзывы ... Я посмотрю на этот указательный путь единорога ... Я обновил свой пост с текущими путями для каталога приложений и общего доступа , если вы не используете Unicorn, какой веб-сервер вы используете? (Пассажир или Puma ..) В предыдущем приложении rails я использовал Apache + Passenger, .. Я могу вернуться к Nginx + Passenger, кажется, последняя версия Fusion-Passenger (называемая «raptor» на 5 раз быстрее, чем Unicorn .... – erwin

ответ

0

Я имел подобную ситуацию, но, .rbenv не был в моем списке. Мое решение было довольно простым. Сначала я остановил единорога (не только рестарт), я имею в виду, на самом деле остановить его следующим

sudo service unicorn_myapp force-stop 

А также остановился на Nginx:

sudo service nginx stop 

Затем побежал: RAILS_ENV=environment rake secret скопировал значение в staging раздел в /deployed_app/shared/config/secrets.yml и затем перезапустить все снова

sudo service unicorn_myapp start 
sudo service nginx start 

и все возвращается на трек снова ...

Надеюсь, это поможет