Web server para ruby on rails

Estimados compañeros que web server me recomiendan para produccion? se
de apache2 pero no se configurarlo.

donde puedo obtener documentacion. Me regalan enlaces.

gracias

si usas apache2 te recomiendo mongrel + apache2 + mod_proxy_balancer

Y para documentarte, en la pagina de mongrel esta bastante explicado.

http://mongrel.rubyforge.org/docs/apache.html

Un saludo.

Wifer escribió:

Estimados compañeros que web server me recomiendan para produccion? se
de apache2 pero no se configurarlo.

donde puedo obtener documentacion. Me regalan enlaces.

gracias

Te voy a poner como compilar apache 2.2.3 y arrancar una aplicación
rails, probado en debian y ubuntu. El mail es un poco extenso. Al ser la
primera instalación tienes que hacerlo todo, si instalaras más
aplicaciones en esa misma máquina solo tendrías que hacer algunos pasos
(generar el fichero de configuración del virtualhost de apache y mongrel
básicamente).

== INSTALACIÓN DE APACHE

Desinstalamos los resquicios que haya en el servidor de apache &
friends(módulos).

$ sudo aptitude purge apache apache2

Instalamos las herramientas para compilar:

$ sudo aptitude install build-essentials

Descomprimimos el tarball de apache en /usr/local/src

$ cd /usr/local/src
$ sudo tar xzvf /home/rgo/apache/httpd-2.2.3.tar.gz

Ejecutamos el script configure con el flag “all” y el resto de módulos
en el directorio donde están los fuentes de apache, de esta manera
conseguimos tener TODOS los
módulos(http://wiki.apache.org/httpd/Recipes/ConfigAllMods):

$ cd httpd-2.2.3
$ sudo ./configure
–with-ldap
–enable-mods-shared=“all ssl ldap cache proxy authn_alias mem_cache
file_cache authnz_ldap charset_lite dav_lock disk_cache”

Nota:
Para compilarlo con estos módulos he necesitado:
- Módulo LDAP: libldap2-dev
- Módulo deflate: zlib1g-dev
- Módulo SSL: libssl-dev
¡Desactivar módulos no usados!(o compilar solo con los que
necesites)

Compilamos:

$ sudo make

Instalamos:

$ sudo make install

Nos quedará ubicado de esta manera:
(http://wiki.apache.org/httpd/Info/DistrosDefaultLayout#head-d5fb6824fe35135c3528a671f69ff9bea7aae295):

ServerRoot :: /usr/local/apache2
DocumentRoot :: /usr/local/apache2/htdocs
Apache Config File :: /usr/local/apache2/conf/httpd.conf
Other Config Files :: /usr/local/apache2/conf/extra/
SSL Config File ::
/usr/local/apache2/conf/extra/httpd-ssl.conf
ErrorLog :: /usr/local/apache2/error_log
AccessLog :: /usr/local/apache2/access_log
cgi-bin :: /usr/local/apache2/cgi-bin (enabled by
default, but the bundled scripts are 644)
binaries (apachectl) :: /usr/local/apache2/bin
start/stop :: /usr/local/apache2/bin/apachectl
(start|restart|graceful|graceful-stop|stop)

Para que se arranque automáticamente tenemos que copiar o crear un
enlace simbólico del fichero apachectl en /etc/init.d

$ sudo ln -s /usr/local/apache2/bin/apachectl ./httpd
$ sudo update-rc.d httpd defaults

Nota: He tenido que añadir la línea “ServerName localhost” al fichero
/usr/local/apache2/conf/http.conf Para evitar un error de que no
encontraba un dominio cualificado.

== CONFIGURAR MONGREL

Aquí doy por supuesto que la aplicación está instalada localemente.
Creo el fichero de configuración de mongrel_cluster (en este caso para
producción). Cargaremos tres instancias de mongrel (-N), nos mueve a la
carpeta de la aplicación chdir (-c) y funcionará a partir del puerto
8000(-p) dirección a la que está “bindeado” (-a) :

$ mongrel_rails cluster::configure -e production
-p 8000 -N 3 -c /home/workspace/testapp -a 127.0.0.1
–user user --group group

El fichero de configuración fue creado y guardado en
config/mongrel_cluster.yml
Arrancamos el cluster:

$ mongrel_rails cluster::start

Para pararlo:

$ mongrel_rails cluster::stop

Ponemos mongrel como servicio en el arranque.

$ mkdir /etc/mongrel_cluster
$ cd /etc/mongrel_cluster
$ sudo ln -s /home/workspace/testapp/config/mongrel_cluster.yml
/etc/mongrel_cluster/testapp.yml
$ sudo ln -s /usr/local/bin/mongrel_cluster_ctl /etc/init.d/
$ sudo update-rc.d mongrel_cluster_ctl defaults

== CONFIGURACIÓN DE APACHE

Creamos un directorio para almacenar la configuración de los virtual
hosts(configuraciones de las diferentes aplicaciones rails).

$ mkdir /usr/local/apache2/conf/rails_conf

En el fichero de configuración de apache http.conf

$ vi /usr/local/apache/conf

Añadimos:

Include external config files

Include /usr/local/apache2/conf/rails_conf/*.conf

En el fichero de configuración de apache http.conf

$ cd /usr/local/apache/conf
$ vi http.conf # Ponemos la línea anterior

Añadimos el include:

Include an external config for our examples

Include /usr/local/apache2/conf/rails_conf/*.conf

Ahora creamos el fichero de configuración de nuestra aplicación
testapp.conf con el siguiente contenido:

NameVirtualHost *:80

Setup the cluster

<Proxy balancer://testapp_cluster>
BalancerMember http://127.0.0.1:8000
BalancerMember http://127.0.0.1:8001
BalancerMember http://127.0.0.1:8002

Setup the VirtualHost for your Rails application

<VirtualHost *:80>
ServerAdmin [email protected]
ServerName localhost
ServerAlias localhost
DocumentRoot /home/workspace/testapp/public
<Directory ‘/home/workspace/testapp/public’>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

ProxyPass / balancer://testapp_cluster/
ProxyPassReverse / balancer://testapp_cluster/

Setup your Rewrite rules here

RewriteEngine On

Rewrite index to check for static

RewriteRule ^/$ /index.html [QSA]

Send all requests that are not found as existing files to the

cluster
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://testapp_cluster%{REQUEST_URI} [P,QSA,L]

Error logs

ErrorLog /usr/local/apache2/logs/testapp_error_log
CustomLog /usr/local/apache2/logs/testapp_access_log combined

Sobra decir que no me hago responable de lo que pueda ocurrir y que esto
se puede mejorar, pero para arrancar funciona :wink:

Saludos!

PS: No olvides que capistrano es tu amigo y te puede ayudar con las
instalaciones


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)

RoBe5
escribió:>> Estimados compañeros que web server me recomiendan para produccion? se

[email protected]
simplelogica.net


Ror-es mailing list
[email protected]
simplelogica.net

Si llego a ver tu respuesta antes no envío toda la parrafada :slight_smile:

Saludos!


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)

mil gracias por sus valiosos aportes, no me queda mas, sino arrancar.

Ruben
gracias por tu instructivo, esta muy bueno.

yo soy algo ignorante en esto, me puedes explicar para que sirven:
Un servidor web (Apache | nginx | Lighty) y
Un servidor de aplicaciones: mongrel

pues yo monte una pequeña aplicacion solo en mongrel y me funciona?
claro que esta en la intranet.

si puedes me aclaras. gracias

El mar, 24-04-2007 a las 19:49 +0200, Wifer escribió:

mil gracias por sus valiosos aportes, no me queda mas, sino arrancar.

Wifer, solo por aportar algo mas, hace poco escribi un articulo para
tener apache 2.2.4 + mod_procy_balancer + mongrel + mysql + subversion +
capistrano, lo puedes ver en:
http://ruben.peruonrails.com/2007/4/22/implementando-una-aplicacion-rails
, ojala te sirva de ayuda ;).

Ojala alguien se anime a escribir algo sobre pruebas para
performance(httperf) algo detallado, ya que no me entran bien esos
conceptos en yanqui.

Salud!.

El mié, 25-04-2007 a las 01:36 +0200, Wifer escribió:

Ruben
gracias por tu instructivo, esta muy bueno.
Me alegra que te haya servido ;).

yo soy algo ignorante en esto, me puedes explicar para que sirven:
Un servidor web (Apache | nginx | Lighty) y
El servidor web, es el que se encarga de entregar las paginas, imagenes,
hojas de estilos, javascript, osea solo el contenido estatico solicitado
por los clientes
Un servidor de aplicaciones: mongrel
El servidor de aplicaciones, se encargara de procesar todo el contenido
dinamico y enviarselo al servidor web, ya sea en html, xml, etc

pues yo monte una pequeña aplicacion solo en mongrel y me funciona?
Mongrel funciona de las 2 formas, tanto para servir contenido estatico,
como para procesar contenido dinamico, pero, es ideal para el contenido
dinamico por su desempeño(velocidad). La razon por la que no es
recomendale usarlo para servir contenido estatico, es que por ejemplo
Apache esta desarrollado en C, y Mongrel en Ruby(aunque tiene algo de
codigo en C), entonces un programa compilado siempre sera mas rapido
contra uno interpretado, es por eso que se deja la tarea del contenido
estatico al Apache(pueden ser otros tambien), y se tiene en el fondo a
Mongrel trabajando a traves de un proxy inverso.
claro que esta en la intranet.

si puedes me aclaras. gracias

Espero haberte aclarado en algo tus dudas, aunque no soy un experto en
el tema, pero es lo que he aprendido hasta el momento.

Ruben.

Wifer wrote:

mil gracias Ruben.

LEI en una presentacion que con mongrel no se requiere apache, que
dicen?

Una de las caracteristicas de Mongrel es que es un unico proceso. Eso
implica que solo puede atender una solicitud a la vez.

Si quieres manejar multiples solicitudes, tienes que correr varios
mongrels (hay herramientas para eso incluidas en la instalacion de
mongrel).

Pero cada uno de esos mongrels esta en un puerto separado. Asi que
necesitas algun otro mecanismo que de la cara al cliente, por asi
decirlo, y se encargue de repartir el trabajo entre los mongrels.

Los candidatos tipicos para ese trabajo son Apache 2.2 con
mod_proxy_balance, Lighttpd, nginx, y alguno que otro servidor web
ligero.

mil gracias Ruben.

Sebastian D. wrote:

Una de las caracteristicas de Mongrel es que es un unico proceso. Eso
implica que solo puede atender una solicitud a la vez.

Si quieres manejar multiples solicitudes, tienes que correr varios
mongrels (hay herramientas para eso incluidas en la instalacion de
mongrel).

Pero cada uno de esos mongrels esta en un puerto separado. Asi que
necesitas algun otro mecanismo que de la cara al cliente, por asi
decirlo, y se encargue de repartir el trabajo entre los mongrels.

Los candidatos tipicos para ese trabajo son Apache 2.2 con
mod_proxy_balance, Lighttpd, nginx, y alguno que otro servidor web
ligero.

Gracias, y cual de estos candidatos es más facil de configurar y el de
mejor desempeño. (creo que estoy exigiendo mucho) bueno el mas facil de
configurar y que este en apogueo.
gracias mil

Una Pregunta Mas.
veo que para windows no hay una plataforma (windows - apache2 - mongrel
cluster - mod_proxy)

cordial saludo.

Wifer escribió:

En el fichero de configuración de apache http.conf

Aquí por lo que veo se me fue un poco la mano :slight_smile:
Quería decir que dentro del fichero de configuración de apache
(/usr/local/apache2/conf/http.conf) hay que añadir la línea:

Include /usr/local/apache2/conf/rails_conf/*.conf

De esta manera todos los ficheros *.conf que estén dentro del directorio
/usr/local/apache2/conf/rails_conf/ serán incluidos (“metidos” dentro)
en el fichero de configuración de apache.

Estos ficheros *.conf serán los que contienen los diferentes parámetros
de tu aplicación rails (dominio de tu aplicación rails, los ficheros de
logs, proxy balancer…)

Espero que ahora esté un poco más claro, saludos!


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)

Rafael García wrote:

hola Rafael a que te refires con esto:

Añadimos:

Include external config files

Include /usr/local/apache2/conf/rails_conf/*.conf

En el fichero de configuración de apache http.conf

$ cd /usr/local/apache/conf
$ vi http.conf # Ponemos la línea anterior <----- ESTO ---->

Añadimos el include:

Include an external config for our examples

Include /usr/local/apache2/conf/rails_conf/*.conf

GRACIAS

Hola Rafa

mil gracias por ayudarme.

siguiendo tu instructivo, cuando quiero arrancar el ahace me genera
este error:

Invalid command ‘<Proxy’, perhaps misspelled or defined by a module not
included

Rafa yo quiero poner en produccion un aplicativo por la intranet.

http://172.16.4.116:8000/directorio/inicio

en la configuracion de apache me confundo, utilizo los parametros pero
no se para que tantas cosas.

este en mi archivo httpd.conf, pero me genera error.

NameVirtualHost *:80

Setup the cluster

<Proxy balancer://dir_cluster>
BalancerMember http://127.0.0.1:8000
BalancerMember http://127.0.0.1:8001
BalancerMember http://127.0.0.1:8002

Setup the VirtualHost for your Rails application

<VirtualHost *:80>
ServerAdmin [email protected]
ServerName localhost
ServerAlias localhost
DocumentRoot /home/wifer/dir/public
<Directory ‘/home/wifer/dir/public’>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

ProxyPass / balancer://dir_cluster/
ProxyPassReverse / balancer://dir_cluster/

Setup your Rewrite rules here

RewriteEngine On

Rewrite index to check for static

RewriteRule ^/$ /index.html [QSA]

Send all requests that are not found as existing files to the

cluster
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://dir_cluster%{REQUEST_URI} [P,QSA,L]

Error logs

ErrorLog /usr/local/apache2/logs/dir_error_log
CustomLog /usr/local/apache2/logs/dir_access_log combined

yo solo quiero poner en produccion una aplicacion pequeña solo de
consulta, en java ya lo ubiese hecho ya
que tengo muy experiencia con tomcat, pero quiero incursionar en rails,
eso es lo que me ha parecido duro de rails.

si mi aplicacion esta en /home/wifer/dir/app
/home/wifer/dir/demas carpetas

como debo configurar el archivo httpd.conf?

mil gracias por tu ayuda, ya llevo una semana en el asunto.

Mmmm… me da que has compilado apache sin el módulo proxy

Antes de compilar hiciste esto?

./configure
–enable-proxy
–enable-proxy-balancer
–enable-proxy-http
–enable-rewrite
–enable-cache
–enable-headers
–enable-ssl
–enable-info
|–enable-deflate
–enable-mem-cache|

Da la impresión de que te falta el módulo porque el fichero de
configuración está bien.

Venga suerte!

Wifer escribió:

Rafa yo quiero poner en produccion un aplicativo por la intranet.

Setup the cluster

ServerAlias localhost

Setup your Rewrite rules here

ErrorLog /usr/local/apache2/logs/dir_error_log
/home/wifer/dir/demas carpetas

como debo configurar el archivo httpd.conf?

mil gracias por tu ayuda, ya llevo una semana en el asunto.


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)

Mmmm… me da que has compilado apache sin el módulo proxy

Antes de compilar hiciste esto?

./configure
–enable-proxy
–enable-proxy-balancer
–enable-proxy-http
–enable-rewrite
–enable-cache
–enable-headers
–enable-ssl
–enable-info
|–enable-deflate
–enable-mem-cache|

Da la impresión de que te falta el módulo porque el fichero de
configuración está bien.

Venga suerte!

Wifer escribió:

Rafa yo quiero poner en produccion un aplicativo por la intranet.

Setup the cluster

ServerAlias localhost

Setup your Rewrite rules here

ErrorLog /usr/local/apache2/logs/dir_error_log
/home/wifer/dir/demas carpetas

como debo configurar el archivo httpd.conf?

mil gracias por tu ayuda, ya llevo una semana en el asunto.


Rafael Garcia Ortega

Prueba gratis nuestro nuevo producto GASTOSgem
(http://www.gastosgem.com)

Hola Rafael

Recibe un cordial saludo.

Te comento Rafa, que seguí tu instructivo y otros más y no pude poner en
marcha el web Server (apache2 + mongrel + mod_proxy) entonces opté por
nginx de un Ruso + mongrel y te cuento que fue tan fácil como instalar
ruby on rails. Recomiendo como web Server a
http://wiki.codemongers.com/Nginx
http://docs.planetargon.com/Nginx_Configuration/
http://www.cognovis.de/developer/en/nginx

vamos a ver su performance, intuyo que será muy bueno.

Te deseo muchos éxitos.

William B.

me funciona el aplicativo solo con mongrel, me imagino que tiene
limitaciones, cluales seria?

buscando encontré esto:

sera otra opcion para web server?

saludos