Travaillait avec Rails 5 et tout paramétrer via Vagrant. J'ai réussi à faire fonctionner mon site via Nginx et Webrick. Quand j'essaye avec Unicorn, il me montre la page par défaut d'Apache2. J'ai enlevé la valeur par défaut dans sites-available
et j'en ai créé une sous sites-enabled
qui est liée à nginx.conf
.Apache2 Ubuntu Page par défaut Affichage
Voici mon fichier nginx.conf
:
upstream unicorn {
server unix:/tmp/unicorn.mysiteNginx.sock fail_timeout=0;
}
server {
listen 80 default deferred;
# server_name projectname.com;
root /vagrant/public;
try_files $uri/home.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
unicorn.rb
fichier:
working_directory "/vagrant"
pid "/vagrant/tmp/pids/unicorn.pid"
stderr_path "/vagrant/log/unicorn.log"
stdout_path "/vagrant/log/unicorn.log"
listen "/tmp/unicorn.mysiteNginx.sock"
worker_processes 2
timeout 30
fichier unicorn_init.sh
:
#!/bin/sh
set -e
# Example init script, this can be used with nginx, too,
# since nginx and unicorn accept the same signals
# Feel free to change any of the following variables for your app:
# Remember -E production flag for production & sudo -c "$CMD" - user so it's not run as root!
TIMEOUT=${TIMEOUT-60}
APP_ROOT=/vagrant
PID=$APP_ROOT/tmp/pids/unicorn.pid
CMD="/home/vagrant/.rvm/bin/ruby-2.3.1_unicorn -D -c $APP_ROOT/config/unicorn.rb -E production"
action="$1"
set -u
old_pid="$PID.oldbin"
cd $APP_ROOT || exit 1
sig() {
test -s "$PID" && kill -$1 `cat $PID`
}
oldsig() {
test -s $old_pid && kill -$1 `cat $old_pid`
}
case $action in
start)
sig 0 && echo >&2 "Already running" && exit 0
su -c "$CMD" - vagrant
;;
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"
su -c "$CMD" - vagrant
;;
upgrade)
if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
then
n=$TIMEOUT
while test -s $old_pid && test $n -ge 0
do
printf '.' && sleep 1 && n=$(($n - 1))
done
echo
if test $n -lt 0 && test -s $old_pid
then
echo >&2 "$old_pid still exists after $TIMEOUT seconds"
exit 1
fi
exit 0
fi
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
su -c "$CMD" - vagrant
;;
reopen-logs)
sig USR1
;;
*)
echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
exit 1
;;
esac
Avant de soumettre cette question, j'ai fait quelques recherches sur le débordement de la pile et j'ai fait un peu de dépannage avec une question similaire mais sans succès jusqu'ici. Toute aide serait appréciée!
--- 1 --- MISE À JOUR
C'est ce que montre en error.log
quand je fais sudo service unicorn restart
:
017/08/07 22:41:17 [notice] 2387#2387: signal process started
2017/08/07 22:41:18 [emerg] 2391#2391: bind() to 0.0.0.0:80 failed (98: Address already in use)
2017/08/07 22:41:18 [emerg] 2391#2391: bind() to 0.0.0.0:80 failed (98: Address already in use)
2017/08/07 22:41:18 [emerg] 2391#2391: bind() to 0.0.0.0:80 failed (98: Address already in use)
2017/08/07 22:41:18 [emerg] 2391#2391: bind() to 0.0.0.0:80 failed (98: Address already in use)
2017/08/07 22:41:18 [emerg] 2391#2391: bind() to 0.0.0.0:80 failed (98: Address already in use)
2017/08/07 22:41:18 [emerg] 2391#2391: still could not bind()
--- MISE À JOUR 2 ---
Se connecter après sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1854 root 6u IPv4 11471 0t0 TCP *:http (LISTEN)
nginx 1855 www-data 6u IPv4 11471 0t0 TCP *:http (LISTEN)
Vous devez voir les journaux nginx. Parfois, c'est parce que vous devez créer des répertoires tmp et pids. –
Avez-vous besoin d'un processus Apache2 en cours d'exécution? Si vous ne le faites pas, essayez de l'arrêter. –
Et vous devez définir server_name. –