wiki/HowtoUnicorn.md

115 lines
3.7 KiB
Markdown
Raw Normal View History

2016-12-29 11:25:39 +01:00
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
## Howto Unicorn
Unicorn est un serveur HTTP spécifiquement fait pour des application RoR. Il se place en règle générale derrière un serveur HTTP tel que Apache ou Nginx (notamment car il n'est pas optimisé pour gérer des requêtes de clients lents).
### Installation
Unicorn se présente comme une gem qui peut être installé classiquement :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
# gem install unicorn
~~~
### Script d'init Debian
Voici un script d'init Debian permettant de lancer plusieurs instance de Unicorn dans /home :
2017-01-03 11:20:35 +01:00
~~~{.bash}
2016-12-29 11:25:39 +01:00
#!/bin/sh
### BEGIN INIT INFO
# Provides: unicorn
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
set -e
. /lib/lsb/init-functions
. /etc/default/unicorn
case "$1" in
start)
for instance in $INSTANCES; do
rails_env=`head -1 /home/$instance/www/current/config/database.yml |tr -d :`
PATH="/home/$instance/.rbenv/shims:/home/$instance/.rbenv/bin:/home/$instance/ruby-build/bin:$PATH"
WD="/home/$instance/www/current"
if [ -e /home/$instance/.rbenv/shims/unicorn_rails ]; then
log_daemon_msg "Starting unicorn server instance $instance..."
start-stop-daemon --start --quiet --name unicorn \
--pidfile $WD/tmp/pids/unicorn.pid \
--chdir $WD --chuid $instance \
--exec /home/$instance/.rbenv/shims/unicorn_rails -- \
-c $WD/config/unicorn.rb -D -E $rails_env
log_end_msg $?
fi
done
;;
stop)
for instance in $INSTANCES; do
WD="/home/$instance/www/current"
if [ -e /home/$instance/.rbenv/shims/unicorn_rails ]; then
log_daemon_msg "Stopping unicorn server instance $instance..."
start-stop-daemon --stop --quiet --name unicorn \
--pidfile $WD/tmp/pids/unicorn.pid
log_end_msg $?
fi
done
;;
gracefull_stop)
for instance in $INSTANCES; do
WD="/home/$instance/www/current"
if [ -e /home/$instance/.rbenv/shims/unicorn_rails ]; then
log_daemon_msg "Stopping gracefully unicorn server instance $instance..."
start-stop-daemon --stop --quiet --name unicorn --signal QUIT \
--pidfile $WD/tmp/pids/unicorn.pid
log_end_msg $?
fi
done
;;
reload)
for instance in $INSTANCES; do
WD="/home/$instance/www/current"
if [ -e /home/$instance/.rbenv/shims/unicorn_rails ]; then
log_daemon_msg "Reloading unicorn server instance $instance..."
kill -s USR2 `cat $WD/tmp/pids/unicorn.pid`
log_end_msg $?
fi
done
;;
restart)
for instance in $INSTANCES; do
rails_env=`head -1 /home/$instance/www/current/config/database.yml |tr -d :`
PATH="/home/$instance/.rbenv/shims:/home/$instance/.rbenv/bin:/home/$instance/ruby-build/bin:$PATH"
log_daemon_msg "Restarting unicorn server instance $instance..."
WD="/home/$instance/www/current"
if [ -e /home/$instance/.rbenv/shims/unicorn_rails ]; then
log_daemon_msg "Starting unicorn server instance $instance..."
start-stop-daemon --start --quiet --name unicorn \
--pidfile $WD/tmp/pids/unicorn.pid \
--chdir $WD --chuid $instance \
--exec bundle exec unicorn -- \
-c $WD/config/unicorn.rb -D -E $rails_env
start-stop-daemon --stop --quiet --name unicorn \
--pidfile $WD/tmp/pids/unicorn.pid
log_end_msg $?
fi
done
;;
*)
echo "Usage: $0 {start|stop|gracefull_stop|restart|reload}"
exit 1
;;
esac
~~~
2017-01-03 11:20:35 +01:00
Puis mettre la liste des instances à lancer dans le fichier _/etc/default/unicorn_.