2015-08-10 6 views
0

I a déployé une application Rails 4 (en utilisant .rbenv) à un serveur Ubuntu distant exécutant Ngninx + Unicorn en utilisant Capistrano (Déploiement mise en scène)Rails 4.2 + Nginx + Unicorn - Missing secret_token et secret_key_base après déployé

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) 

aide Capistrano/upload-config, je lie le fichier secrets.yml sur le serveur distant dans la version actuelle déployé

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

et le fichier contient /var/www/rails/delayMessage/shared/config/secrets.yml

staging: 
    secret_key_base: 10c7ed6bccc6d3acb71... 

Pourquoi le secret_key_base pas pris en compte, et pourquoi cette erreur relevée et affichée dans la unicorn.stderr.log

MISE À JOUR 1

dans unicorn.rb Je les chemins suivants (app et partagé) ensemble ... peut-être qu'ils ont tort

# Définissez votre chemin d'accès complet à l'application. APP_DIR = File.expand_path ('../../', FICHIER) shared_dir = File.expand_path ('../../../ partagé /', FICHIER)

+0

Qu'est-ce que 'secret.staging.yml'? est-ce un autre fichier dans 'app/config' – bigsolom

+0

Je n'ai personnellement jamais utilisé Unicorn, donc je poignarde dans l'obscurité. Mais, je confirme qu'Unicor regarde le bon répertoire. Par exemple, comme Capistrano pointe 'current' à' releases/[timestamp] ', Unicorn pointe peut-être vers une ancienne version. Alternativement, assurez-vous que Unicorn est en cours de redémarrage après le changement de lien symbolique afin qu'il voit le fichier (j'imagine que cela se passe correctement). –

+0

Merci pour vos commentaires ... Je vais jeter un oeil à ce chemin de pointage Unicorn ... J'ai mis à jour mon poste avec les chemins actuels pour dir dir et partagé si vous n'utilisez pas Unicorn, quel serveur web utilisez-vous? (Passager ou Puma ..) Avec l'application précédente de rails j'ai utilisé Apache + Passenger, .. Je peux revenir à Nginx + Passenger, il semble que la dernière version de Fusion-Passenger (appelée «raptor» est 5X plus rapide que Unicorn .... – erwin

Répondre

0

I avait une situation similaire, mais, .rbenv n'était pas sur ma liste. Ma solution était en fait, assez facile. Tout d'abord je me suis arrêté licorne (non seulement redémarrer), je veux dire, arrêtez-vous vraiment avec les éléments suivants

sudo service unicorn_myapp force-stop 

Et aussi arrêté le Nginx:

sudo service nginx stop 

puis a couru le: RAILS_ENV=environment rake secret copié la valeur dans la staging section /deployed_app/shared/config/secrets.yml puis, remis en marche à nouveau avec tous

sudo service unicorn_myapp start 
sudo service nginx start 

et tout est de retour sur les rails ...

Espérons que ça aide