Cairo Noleto

Instalando Nginx com Passenger

| Comments

Para quem acompanha o mundo Ruby On Rails soube que no dia 16 foi lançado o Passenger com suporte total para Nginx (Lê-se Engine X). Assim temos mais uma rápida opção de deployment para Ruby On Rails.

Para instalar, primeiro instala a gem do Passenger

sudo gem install passenger

O Passenger gera o instalador fácil para Nginx e para o Apache, no nosso caso só digitarmos

sudo passenger-install-nginx-module

Nessa parte eu estava obtendo um erro e não estava instalando o Nginx e aqui nessa thread os Phusion Guys resolveram o problema. Então eu fiz um clone do projeto e rodei um rake package para gerar a gem com a modificação e fiz a instalação da gem e tudo foi resolvido.

Após isso é só configurar o Nginx, que por padrão é instalado em /opt/nginx. Para fazer o deploy é simples, adicione o seguinte código em /opt/nginx/conf/nginx.conf (altere a pasta conforme onde você instalou o Nginx)

1
2
3
4
5
6
server {
   listen 80;
   server_name localhost;
   root /var/www/aplicacao
   passenger_enabled on;
}

Para completar, eu fiz um script onde posso iniciar, parar ou reiniciar o servidor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#! /bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

#Alter to nginx path
NGINXPATH=/opt/nginx

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=$NGINXPATH/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi
 
set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile $NGINXPATH/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile $NGINXPATH/logs/$NAME.pid --exec $DAEMON
        echo "$NAME."
        ;;

  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile $NGINXPATH/logs/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile $NGINXPATH/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --quiet --pidfile $NGINXPATH/logs/$NAME.pid --exec $DAEMON
      echo "$NAME."
      ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
        exit 1
        ;;
esac
 
exit 0

Você pode colocar a inicialização automaticamente no servidor

sudo update-rc.d nginx defaults

Depois é só inicializar o servidor e pronto.

Comments