diff options
Diffstat (limited to 'es/docs/installing')
-rw-r--r-- | es/docs/installing/ami.md | 159 | ||||
-rw-r--r-- | es/docs/installing/deploy.md | 194 | ||||
-rw-r--r-- | es/docs/installing/email.md | 628 | ||||
-rw-r--r-- | es/docs/installing/index.md | 65 | ||||
-rw-r--r-- | es/docs/installing/macos.md | 164 | ||||
-rw-r--r-- | es/docs/installing/manual_install.md | 894 | ||||
-rw-r--r-- | es/docs/installing/next_steps.md | 122 | ||||
-rw-r--r-- | es/docs/installing/script.md | 76 | ||||
-rw-r--r-- | es/docs/installing/vagrant.md | 70 |
9 files changed, 2372 insertions, 0 deletions
diff --git a/es/docs/installing/ami.md b/es/docs/installing/ami.md new file mode 100644 index 000000000..3c91aaf74 --- /dev/null +++ b/es/docs/installing/ami.md @@ -0,0 +1,159 @@ +--- +layout: es/page +title: Instalación desde el AMI +--- + +# Instalación con EC2 de Amazon + +<p class="lead"> + Hemos creado una Amazon Machine Image (AMI) para que pueda efectuar el despliegue + rápidamente en EC2 de Amazon. Resulta práctico si, por ejemplo, solamente desea evaluar Alaveteli. +</p> + +Existen [otras formas de instalar Alaveteli]({{ page.baseurl }}/docs/installing/). + +## Instalación con nuestra AMI + +Para ayudarle a probar Alaveteli, hemos creado una AMI con una instalación básica de +Alaveteli, que puede utilizar para crear un servidor funcional en una implementación de EC2 +de Amazon. Se creará una implementación que funcionará como +<a href="{{ page.baseurl }}/docs/glossary/#development" class="glossary__link">servidor de desarrollo</a>. +Si desea crear un +<a href="{{ page.baseurl }}/docs/glossary/#production" class="glossary__link">servidor de producción</a>, +deberá +[modificar la configuración]({{ page.baseurl }}/docs/customising/config/#staging_site). + +<div class="attention-box"> + <p> + <strong>Qué incluye el AMI:</strong> + El AMI le ofrece exactamente lo mismo que el + <a href="{{ page.baseurl }}/docs/installing/script/">script de instalación</a>. + Obtiene un sitio web basado en Alaveteli implementado con Rails en el servidor + de aplicaciones Thin con Nginx, utilizando la base de datos PostgreSQL. Todo ello + sobre los servidores EC2 de Amazon, listo para ser + <a href="{{ page.baseurl }}/docs/customising/">configurado y personalizado</a>. + </p> +</div> + +Las implementaciones de Amazon se clasifican por tamaños. Lamentablemente la implementación *Micro* +no tiene memoria suficiente para que Alaveteli funcione y este es el único tamaño disponible +en Amazon para su uso gratuito. Necesitará la implementación *Small* o una superior, por la que +Amazon le facturará el importe correspondiente. + +### Uso de los servicios web de Amazon + +Para ello necesitará: + + * Una cuenta de Amazon + * Un par de claves SSL (las pantallas del servicio web de Amazon le guiarán al respecto) + +Si aún no dispone de estos elementos, deberá crearlos. Consulte la introducción de Amazon sobre el +[funcionamineto de un servidor virtual en AWS](http://docs.aws.amazon.com/gettingstarted/latest/awsgsg-intro/gsg-aws-virtual-server.html). + +### Lance la implementación + +Una vez haya iniciado sesión en el servicio de Amazon y haya navegado hasta la consola +**EC2 Management Console**, puede lanzar la implementación. Si prefiere hacerlo manualmente, +encontrará el AMI en la región «EU West (Ireland)» con el ID +`ami-baf351cd` y el nombre «Basic Alaveteli installation 2014-10-06». +Alternativamente puede utilizar este enlace: + +<p class="action-buttons"> + <a href="https://console.aws.amazon.com/ec2/home?region=eu-west-1#launchAmi=ami-baf351cd" class="button">Lanzar + implementación con AMI de instalación de Alaveteli</a> +</p> + +Cuando se lance la implementación, lo primero que deberá elegir es el *tipo* de implementación. +Recuerde que el tipo *Micro* no dispone de memoria suficiente para ejecutar +Alaveteli, así que deberá elegir al menos *Small* o *Medium*. Estos tipos no están +disponibles en Amazon para su uso gratuito. + +Una vez creada la implementación, la interfaz de Amazon le ofrecerá numerosas opciones +de configuración. En general puede aceptar las opciones predeterminadas para todo, +excepto para los grupos de seguridad. Resulta seguro hacer clic en **Review and +Launch** directamente (más que configurar manualmente todos los detalles de la +implementación) debido a que aún puede tener la oportunidad de configurar los grupos +de seguridad. Haga clic en **Edit Security Groups** en la página de resumen antes de +pulsar el gran botón **Launch**. + +Deberá elegir grupos de seguridad que permitan al menos HTTP, HTTPS y SSH entrantes +y también SMTP, si desea probar el correo entrante. Los ajustes de Amazon disponibles +aquí le permiten especificar las direcciones IP desde las que su implementación aceptará +solicitudes. Es una buena práctica restringirlas (si duda, elija una fuente *Source* +de «My IP» para todas ellas, excepto para las conexiones HTTP entrantes, para las que +deberá definir *Source* como «Anywhere»). Puede modificar cualquiera de estas opciones más +adelante, si necesita hacerlo. + +### Inicie sesión en el servidor (shell) + +Necesitará acceso a la consola shell de línea de comando del servidor para controlar y +configurar su sitio basado en Alaveteli. + +Para acceder al servidor, utilice `ssh` y el archivo `.pem` de su par de claves SSL. +Modifique el archivo `.pem` y el ID de implementación para que concuerden con los suyos en +este comando, que conecta con su servidor y le registra como el usuario llamado `ubuntu`. +Utilice este comando desde su propio equipo para iniciar sesión en el servidor: + + ssh -i path-to/your-key-pair.pem ubuntu@instance-id.eu-west-1.compute.amazonaws.com + +No se le solicitará ninguna contraseña porque el archivo `.pem` suministrado con la +opción `-i` contiene la autorización que concuerda con la ubicada en el otro extremo, +en el servidor. Iniciará sesión en el terminal shell de su nuevo servidor de Alaveteli +y podrá introducir comandos Unix en él. + +### Prueba de humo: inice Alavateli + +Debe configurar su sitio basado en Alavateli, pero si solo desea ver si su implementación +funciona correctamente, *puede* arrancarla directamente. Lo ideal sería omitir este +paso e ir directamente a la configuración... Pero sabemos que la mayoría de personas +prefieren ver algo en el navegador primero. ;-) + +En el terminal shell de línea de comando, como usuario `ubuntu`, inicie Alaveteli ejecutando: + + sudo service alaveteli start + +Encuentre la URL de «DNS público» en su implementación de EC2 desde la consola AWS y acceda a +ella en el navegador. Tendrá la forma +`http://your-ec2-hostname.eu-west-1.compute.amazonaws.com`. Aquí verá su sitio basado en +Alaveteli. + +Su sitio aún no está configurado, así que *esto no es seguro* (por ejemplo, aún no ha +definido sus propias contraseñas para acceder a la interfaz de administración), así que, una vez +haya visto el sitio en funcionamiento, detenga el sitio basado en Alaveteli con: + + sudo service alaveteli stop + + +### Usuarios de shell: `ubuntu` y `alaveteli` + +Cuando inicia sesión en la consola shell de línea de comando de su implementación, debe hacerlo +como usuario `ubuntu`. Este usuario puede utilizar los permisos `sudo` libremente para ejecutar comandos +como root. Sin embargo, el código en realidad es propiedad (y se ejecuta a través) del usuario `alaveteli`. + +Necesitará +[personalizar la configuración del sitio]({{ page.baseurl }}/docs/customising/config/). +Para ello, inicie sesión en su servidor de EC2 y edite el archivo de configuración `general.yml`. + +El archivo de configuración que necesita editar es +`/var/www/alaveteli/alaveteli/config/general.yml`. Por ejemplo, utilice el +editor `nano` (como usuario `alaveteli`) de este modo: + + ubuntu@ip-10-58-191-98:~$ sudo su - alaveteli + alaveteli@ip-10-58-191-98:~$ cd alaveteli + alaveteli@ip-10-58-191-98:~/alaveteli$ nano config/general.yml + +Tras efectuar los cambios en este archivo, necesitará iniciar el servidor de aplicaciones +(utilice `restart` en lugar de `start` si ya se halla en funcionamiento): + + alaveteli@ip-10-58-191-98:~/alaveteli$ logout + ubuntu@ip-10-58-191-98:~$ sudo service alaveteli start + +Su sitio estará funcionando en la URL de nuevo, que tiene la forma +`http://your-ec2-hostname.eu-west-1.compute.amazonaws.com`. + +Si tiene algún problema o alguna consulta, indíquelo en al [lista de correo de desarrollo de Alaveteli](https://groups.google.com/forum/#!forum/alaveteli-dev) o [informe de un error](https://github.com/mysociety/alaveteli/issues?state=open). + + +##¿Qué hacer ahora? + +Consulte los [siguientes pasos]({{ page.baseurl }}/docs/installing/next_steps/). diff --git a/es/docs/installing/deploy.md b/es/docs/installing/deploy.md new file mode 100644 index 000000000..aa90ca479 --- /dev/null +++ b/es/docs/installing/deploy.md @@ -0,0 +1,194 @@ +--- +layout: es/page +title: Despliegue +--- + +# Despliegue de Alaveteli + +<p class="lead"> + A pesar de que puede instalar Alaveteli y simplemente modificar la plataforma cuando lo necesite, + le recomendamos adoptar una forma de <strong>despliegue</strong> automático, + especialmente en su + <a href="{{ page.baseurl }}/docs/glossary/#production" class="glossary__link">servidor de producción</a>. + Alaveteli proporciona un mecanismo de despliegue mediante el uso de Capistrano. +</p> + +## ¿Por qué realizar un despliegue? + +A pesar de que puede [instalar Alaveteli]({{ page.baseurl }}/docs/installing/) de diversas +maneras, una vez se halle en funcionamiento, tarde o temprano necesitará efectuar cambios +en el sitio. Un ejemplo común es la actualización del sitio cuando publicamos una nueva +versión. + +El mecanismo de despliegue se encarga de situar todos los archivos necesarios en su lugar +correspondiente, de forma que cuando necesite publicar los cambios no corra el riesgo de +olvidar actualizar todos los archivos modificados ni de romper la configuración accidentalmente. +En su lugar, el despliegue hace todo esto de forma automática. También es más eficiente +debido a que resulta más rápido que llevar a cabo los cambios o la copia de archivos manualmente, +de forma que su sitio dejará de funcionar durante el menor tiempo posible. + +Le **recomendamos encarecidamente** que utilice un mecanismo de despliegue para su +<a href="{{ page.baseurl }}/docs/glossary/#production" class="glossary__link">servidor de producción</a> +y, si utiliza uno, para su +<a href="{{ page.baseurl }}/docs/glossary/#staging" class="glossary__link">servidor de pruebas</a> también. + +## Capistrano + +<a href="{{ page.baseurl }}/docs/glossary/#capistrano" class="glossary__link">Capistrano</a> +se incluye en Alaveteli como un sistema de despliegue estándar. + +El principio básico de Capistrano consiste en ejecutar comandos `cap [do-something]` +en su equipo local y Capistrano se conecta con el servidor (mediante +`SSH`) y efectua en él la tarea correspondiente en su lugar. + +### Configuración + +Capistrano requiere la configuración de ciertos detalles en ambos extremos, es decir, +en el servidor donde desea que funcione Alaveteli y en su equipo local. + +* *El servidor* es la máquina en la que se pondrá en funcionamiento la implementación de + de Alaveteli que está desplegando. + +* Su *equipo local* puede ser su portátil o un dispositivo similar, así como aquellos que + pertenezcan a cualquier miembro de su equipo con permisos para realizar despliegues. + +Para permitir que el mecanismo de despliegue de Capistrano funcione, necesitará configurar +el servidor de modo que la aplicación de Alaveteli reciba servicio desde un directorio llamado +`current`. Una vez hecho esto, desplegar una nueva versión consistirá esencialmente +en crear un directorio hermano con marca de tiempo respecto al directorio `current` y +cambiar el enlace simbólico `current` desde el antiguo directorio con marca de tiempo al nuevo. +Las opciones que deban persistir entre despliegues, como archivos de configuración, se mantendrán +en un directorio compartido `shared` ubicado en el mismo nivel y enlazado simbólicamente desde cada +directorio de despliegue con marca de tiempo. + +Estamos [trabajando para facilitar este proceso](https://github.com/mysociety/alaveteli/issues/1596), +pero de momento, este es el proceso manual que necesita seguir para configurar este mecanismo de +despliegue. Recuerde que solo debe hacer esto una vez para configurarlo y que después podrá +efectuar despliegues con gran facilidad (consulte el [uso a continuación](#uso)). + +En primer lugar, en el servidor: + +* [Instale Alaveteli]({{ page.baseurl }}/docs/installing/). +* Otorgue al usuario de Unix que ejecuta Alaveteli la capacidad de conectar a su servidor por SSH. Puede darle una contraseña o, preferentemente, definir claves SSH para que pueda acceder mediante SSH desde su equipo local al servidor: + * Para proporcionarle una contraseña (si aún no dispone de una): `sudo passwd [UNIX-USER]`. Almacene esta contraseña de forma segura en su equipo local, por ejemplo, en un gestor de contraseñas. + * Para definir claves SSH, siga las instrucciones de la [documentación de Capistrano](http://capistranorb.com/documentation/getting-started/authentication-and-authorisation/). No hay necesidad de configurar claves SSH para el repositorio de git, ya que es público. +* Asegúrse de que el usuario de Unix que pone en funcionamiento Alaveteli tiene permisos de escritura en el directorio raíz de su aplicación Alaveteli. +* Mueva la aplicación Alaveteli a un lugar temporal del servidor, como su directorio de inicio + (temporalmente su sitio no será accesible hasta que el despliegue ubique los nuevos archivos + en su lugar correspondiente). + +A continuación, en su equipo local: + +* Instale Capistrano: + * Capistrano requiere Ruby 1.9 o superior y puede instalarse con RubyGems. + * Ejecute `gem install capistrano`. +* Instale bundler si aún no lo ha hecho. Para ello ejecute: `gem install bundler`. +* Compruebe el [repositorio de Alaveteli](https://github.com/mysociety/alaveteli/) + (necesita algunos de los archivos disponibles localmente, incluso aunque no ejecute + Alaveteli en esta máquina). +* Copie el archivo de ejemplo `config/deploy.yml.example` a `config/deploy.yml`. +* Ahora personalice las opciones de despliegue en dicho archivo: edite + `config/deploy.yml` adecuadamente, por ejemplo, editando el nombre del + servidor. Modifique también `deploy_to` para que coincida con la ruta actual de + instalación de Alaveteli en el servidor. Si ha utilizado el script de instalación, + será `/var/www/[HOST or alaveteli]/alaveteli`. Si utiliza el servidor de + aplicaciones Thin en lugar de Passenger (así será si ha ejecutado el script + de instalación), necesitará configurar `rails_app_server` como `thin` y + `rails_app_port` como el puerto en el que esté funcionando. Si ha utilizado el + script, será 3300. + + +* Cambie con el comando `cd` al repositorio de Alaveteli de destino (en caso contrario, los comandos `cap` que ejecutará + ahora no funcionarán). +* Aún en su equipo local, ejecute `cap -S stage=staging deploy:setup` para configurar Capistrano en el servidor. + +Si obtiene un error `SSH::AuthenticationFailed` y no se le solicita la contraseña del usuario de despliegue, puede tratarse de [un error](http://stackoverflow.com/questions/21560297/capistrano-sshauthenticationfailed-not-prompting-for-password) en la versión del paquete gem net-ssh 2.8.0. +Pruebe a instalar la versión 2.7.0 en su lugar: + + gem uninstall net-ssh + + gem install net-ssh -v 2.7.0 + +De vuelta en el servidor: + +* Copie los siguientes archivos de configuración desde la copia temporal de Alaveteli efectuada + al principio (tal vez en su directorio de inicio) al directorio `shared` que + Capistrano acaba de crear en el servidor: + * `general.yml` + * `database.yml` + * `rails_env.rb` + * `newrelic.yml` + * `aliases` ← si está utilizando Exim como MTA +* Si utiliza Exim como MTA, edite el archivo de alias `aliases` que acaba de copiar + para que la ruta hacia Alaveteli incluya el elemento `current`. Si es, por ejemplo, + `/var/www/alaveteli/alaveteli/script/mailin`, ahora deberá ser + `/var/www/alaveteli/alaveteli/current/script/mailin`. +* Copie los siguientes directorios desde su copia temporal de Alaveteli al directorio + `shared` creado por Capistrano en el servidor: + * `cache/` + * `files/` + * `lib/acts_as_xapian/xapiandbs` (copie este directorio directamente en `shared` de forma que se convierta en `shared/xapiandbs`) + * `log/` + +Ahora, de vuelta en su equipo local: + +* Asegúrese de que aún se halla en el repositorio de Alaveteli (si no es así, vuelva a él con el comando `cd`). +* Ejecute `cap -S stage=staging deploy:update_code` para obtener la salida del código en el servidor. +* Cree un directorio de despliegue en el servidor ejecutando *uno* de estos comandos: + * `cap deploy` si está desplegando un <a href="{{ page.baseurl }}/docs/glossary/#staging" class="glossary__link">servidor de pruebas</a>. + * `cap -S stage=production deploy` para <a href="{{ page.baseurl }}/docs/glossary/#production" class="glossary__link">producción</a>. + +De vuelta en el servidor: + +* Actualice la configuración del servidor web (con Apache o Nginx) para añadir el elemento `current` + a la ruta desde la que está sirviendo a Alaveteli. Si ha efectuado la instalación utilizando el + script, esta acción consistirá en sustituir `/var/www/alaveteli/alaveteli/` por + `/var/www/alaveteli/alaveteli/current` en `/etc/nginx/sites-available/default`. +* Edite el archivo crontab del servidor para que las rutas que apuntan a los procesos cron también incluyan el + elemento `current`. Si ha utilizado el script de instalación, el archivo crontab se hallará en + `etc/cron.d/alaveteli`. +* Acutalice la configuración del MTA para que incluya el elemento `current` en las rutas que utiliza. + Si ha utilizado el script de instalación, el MTA será Postfix y deberá editar + `/etc/postfix/master.cf` para sustituir `argv=/var/www/alaveteli/alaveteli/script/mailin` por + `argv=/var/www/alaveteli/alaveteli/current/script/mailin`. + Si utiliza Exim como MTA, edite `etc/exim4/conf.d/04_alaveteli_options` + y actualice la variable `ALAVETELI_HOME` con la nueva ruta de Alaveteli. + Reinicie el MTA después de efectuar los cambios. + +* También necesitará actualizar la ruta hacia Alaveteli en sus [scripts init]({{ page.baseurl }}/docs/installing/manual_install/#demonios-y-procesos-cron). + Debería tener un script para ejecutar los tracks de alerta + (`/etc/init.d/foi-alert-tracks`) y, posiblemente, scripts para purgar + la caché de Varnish (`/etc/init.d/foi-purge-varnish`) y reiniciar el + servidor de aplicaciones (`/etc/init.d/alaveteli`). + +¡Buf, hemos terminado! + +Ahora puede eliminar la copia temporal de Alaveteli (tal vez ubicada en su directorio de inicio). + +### Uso + +Antes de lanzar ningún comando de Capistrano, cambie con el comando `cd` al destino del repositorio de +Alaveteli en su equipo local (porque buscará en él la configuración que ha definido). + +Asegúrese de que dispone de un archivo `config/deploy.yml` con los ajustes correctos para su +sitio. Si hay otras personas en su equipo que necesiten efectuar un despliegue, deberá +compartirlo con ellas también. Puede ser una buena idea mantener la última versión en un +[Gist](http://gist.github.com/). + +* Para efectuar un despliegue en un servidor de pruebas, ejecute sencillamente `cap deploy`. +* Para efectuar un despliegue en producción, ejecute `cap -S stage=production deploy`. + +Es posible que, después del despliegue, vea que el antiguo directorio de despliegue sigue ahí, +es decir, el que era `current` antes de sustituirlo por el nuevo. Por defecto el mecanismo +de despliegue guarda los cinco últimos despliegues. Ejecute +`cap deploy:cleanup` para eliminar versiones antiguas. + +Para obtener instrucciones de uso adicionales, consulte el [sitio web +de Capistrano](http://capistranorb.com/). + +### Esto no es lo que esperaba + +Si un despliegue falla o si descubre después de efectuarlo que en realidad la última versión +no estaba lista, ¡que no surja el pánico! Ejecute `cap deploy:rollback` +y devolverá `current` al despliegue anterior. + diff --git a/es/docs/installing/email.md b/es/docs/installing/email.md new file mode 100644 index 000000000..51b43c9c3 --- /dev/null +++ b/es/docs/installing/email.md @@ -0,0 +1,628 @@ +--- +layout: es/page +title: Instalación del MTA +--- + +# Instalación del MTA + +<p class="lead"> + Alaveteli envía y recibe correo. Necesitará configurar su servidor + de correo (MTA) para gestionarlo adecuadamente. Aquí ofrecemos ejemplos + para Postfix y Exim4, dos de los MTA más populares. +</p> + +## Cómo gestiona el correo Alaveteli + +### Correo de solicitud + +Cuando alguien realiza una solicitud de información pública a una autoridad a través de +Alaveteli, la aplicación envía un correo con la solicitud a la autoridad. + +La dirección `reply-to` del correo es un campo especial que indica que toda respuesta +debe dirigirse automáticamente de vuelta a Alaveteli, para que Alaveteli pueda +distinguir en qué solicitud debe mostrarse la respuesta recibida. Este comportamiento +requiere cierta configuración del MTA en el servidor donde se halla Alaveteli para +encaminar todos los correos a esta dirección especial con el objetivo de que Alaveteli +los gestione mediante su script `script/mailin`. Las direcciones especiales tienen +la siguiente estructura: + + <foi+request-3-691c8388@example.com> + +Partes de esta dirección son controladas con opciones incluidas en +`config/general.yml`: + + INCOMING_EMAIL_PREFIX = 'foi+' + INCOMING_EMAIL_DOMAIN = 'example.com' + +Si se produce algún error en Rails durante el procesamiento del correo, el script `script/mailin` devuelve un código de salida `75` al MTA. Postfix y Exim (y tal vez otros) entienden esta acción como una señal para que el MTA lo vuelva a intentar más tarde. Además, se envía por correo el rastro de pila a `CONTACT_EMAIL`. + +Las instalaciones de [producción]({{ page.baseurl }}/docs/glossary/#production) de Alaveteli deberían realizar copias de seguridad de los correos enviados a direcciones especiales. Puede configurar su MTA para realizar estas copias en un buzón de correo independiente. + +### Correo transaccional + +Alaveteli también envía correos a usuarios sobre sus solicitudes, para informarles cuando alguien ha respondido o solicitarles que realicen alguna acción. + +Configure la dirección desde la que se envían estos mensajes en la opción [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email) de `config/general.yml`: + + CONTACT_EMAIL = 'team@example.com' + +La dirección contenida en [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email) también es visible en varios lugares del sitio para que los usuarios puedan ponerse en contacto con el equipo que gestiona el sitio web. + +Debe configurar su MTA de forma que entregue el correo enviado a estas direcciones a los administradores del sitio para que puedan responder en consecuencia. + +### Correo de tracks + +Los usuarios suscritos a las actualizaciones del sitio, denominadas `tracks`, reciben correos cuando hay novedades que pueden interesarles. + +Configure la dirección desde la que se envían estos mensajes en la opción [`TRACK_SENDER_EMAIL`]({{ page.baseurl }}/docs/customising/config/#track_sender_email) ubicada en `config/general.yml`: + + TRACK_SENDER_EMAIL = 'track@example.com' + +### Gestión de rebotado automático (opcional) + +Debido a que [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email) y [`TRACK_SENDER_EMAIL`]({{ page.baseurl }}/docs/customising/config/#track_sender_email) aparecen en la cabecera `From:` de los correos enviados desde Alaveteli, a veces reciben correos de respuesta, incluidos <a href="{{ page.baseurl }}/docs/glossary/#bounce-message">mensajes rebotados</a> y notificaciones de tipo «fuera de oficina». + +Alaveteli proporciona un script (`script/handle-mail-replies`) que gestiona los mensajes rebotados y las notificaciones de tipo «fuera de oficina» y reenvía los correos genuinos a los administradores. + +También evita que se sigan enviando correos de tracks a direcciones de correo de usuarios que parezcan tener problemas permanentes de entrega. + +Para utilizar la gestión automática de mensajes rebotados, asigne a [`TRACK_SENDER_EMAIL`]({{ page.baseurl }}/docs/customising/config/#track_sender_email) y a [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email) una dirección que filtrará a través de `script/handle-mail-replies`. Los mensajes que no sean de rebote o «fuera de oficina» se reenviarán a [`FORWARD_NONBOUNCE_RESPONSES_TO`]({{ page.baseurl }}/docs/customising/config/#forward_nonbounce_responses_to), opción en la que debe definir un alias de correo que apunte a la lista de administradores del sitio. + +Consulte las indicaciones específicas para su MTA sobre cómo llevar esto a cabo con [Exim]({{ page.baseurl }}/docs/installing/email#filtre-los-mensajes-entrantes-hacia-direcciones-de-administracin) y [Postfix]({{ page.baseurl }}/docs/installing/email#filtre-mensajes-entrantes-en-las-direcciones-de-administracin-del-sitio). + +_Nota:_ La gestión de rebotado no se aplica a los [correos de solicitud]({{ page.baseurl }}/docs/installing/email#correo-de-solicitud). Los mensajes rebotados de autoridades se añaden a la página de la solicitud para que el usuario pueda ver lo ocurrido. Los usuarios pueden pedir ayuda a los administradores del sitio para que se vuelva a enviar la solicitud, si es necesario. + + +--- + +<div class="attention-box"> + <ul> + <li>Los comandos incluidos en este manual requieren permisos de usuario root.</li> + <li>Los comandos deben ejecutarse en el terminal o mediante SSH.</li> + </ul> +</div> + +Asegúrese de seguir las indicaciones correctas para el MTA específico que utilice: + +* [Postfix](#configuracin-de-ejemplo-con-postfix) +* [Exim4](#configuracin-de-ejemplo-con-exim4) + +## Configuración de ejemplo con Postfix + +Esta sección muestra un ejemplo de configuración de su MTA con +**Postfix**. Si utiliza Exim4 en lugar de Postfix, consulte la +[configuración de ejemplo con Exim4](#configuracin-de-ejemplo-con-exim4). + +### Instale Postfix + + # Instale debconf para poder configurar de forma no interactiva + apt-get -qq install -y debconf >/dev/null + + # Establezca la configuración predeterminada «Internet Site» + echo postfix postfix/main_mailer_type select 'Internet Site' | debconf-set-selections + + # Defina el nombre de host (sustituya example.com por su nombre de host) + echo postfix postfix/mail_name string "example.com" | debconf-set-selections + + # Instale Postfix + DEBIAN_FRONTEND=noninteractive apt-get -qq -y install postfix >/dev/null + +### Configure Postfix + + +#### Redirija el correo entrante de solicitudes en Alaveteli + +Si el usuario de Unix que va a poner el sitio en funcionamiento +es `alaveteli` y el directorio donde está instalado Alaveteli es +`/var/www/alaveteli`, cree una ruta para la recepción de correos +de solicitudes: + + cat >> /etc/postfix/master.cf <<EOF + alaveteli unix - n n - 50 pipe + flags=R user=alaveteli argv=/var/www/alaveteli/script/mailin + EOF + +El usuario de Unix debe tener permisos de escritura en el directorio de instalación de Alaveteli. + +Configure Postfix para que acepte mensajes de entrega local cuando los destinatarios sean: + + - definidos por una expresión regular en `/etc/postfix/transports` + - cuentas locales de UNIX + - alias locales especificados como expresiones regulares en `/etc/postfix/recipients` + +<!-- Comment to enable markdown to render code fence under list --> + + cat >> /etc/postfix/main.cf <<EOF + transport_maps = regexp:/etc/postfix/transports + local_recipient_maps = proxy:unix:passwd.byname regexp:/etc/postfix/recipients + EOF + +Actualice la línea `mydestination` ubicada en `/etc/postfix/main.cf` (encargada de definir a qué dominios se efectuarán entregas locales). Añada su dominio, no `example.com`, al principio de la lista: + + mydestination = example.com, localhost.localdomain, localhost + +<div class="attention-box"> +Este manual presupone que ha definido <a href="{{ page.baseurl }}/docs/customising/config/#incoming_email_prefix"><code>INCOMING_EMAIL_PREFIX</code></a> como <code>foi+</code> en <code>config/general.yml</code> +</div> + +Redirija todo el correo entrante cuya dirección `To:` empiece por `foi+` hacia la ruta de `alaveteli` (`/var/www/alaveteli/script/mailin`, como se especifica en `/etc/postfix/master.cf` en el inicio de esta sección): + + cat > /etc/postfix/transports <<EOF + /^foi.*/ alaveteli + EOF + +#### Realice copias de seguridad de los correos de solicitudes + +Puede copiar todo el correo entrante de Alaveteli en una cuenta para copias de seguridad ubicada en un buzón independiente, por si se produce algún problema. + +Cree un usuario de Unix `backupfoi`: + + adduser --quiet --disabled-password \ + --gecos "Alaveteli Mail Backup" backupfoi + +Añada la siguiente línea a `/etc/postfix/main.cf`: + + recipient_bcc_maps = regexp:/etc/postfix/recipient_bcc + +Configure el correo enviado a una dirección con el prefijo `foi+` para que se envíe al usuario de la copia de seguridad: + + cat > /etc/postfix/recipient_bcc <<EOF + /^foi.*/ backupfoi + EOF + + +#### Defina los destinatarios válidos para su dominio + +Cree `/etc/postfix/recipients` con el siguiente comando: + + cat > /etc/postfix/recipients <<EOF + /^foi.*/ this-is-ignored + /^postmaster@/ this-is-ignored + /^user-support@/ this-is-ignored + /^team@/ this-is-ignored + EOF + +La columna de la izquierda de este archivo especifica las expresiones regulares que +definen direcciones para las que se aceptará correo. Los valores de la parte derecha +son ignorados por Postfix. Aquí permitimos que Postfix acepte correos hacia +direcciones especiales de Alaveteli y hacia `postmaster@example.com`, +`user-support@example.com` y `team@example.com`. + +El dominio `@example.com` se define en `mydestination`, como se ha mostrado anteriormente. Esta variable debería incluir su propio dominio. + +#### Defina grupos de destinatarios de correo de contacto + +Para definir los grupos de destinatarios de las direcciones de correo `postmaster@`, `team@` y `user-support@` en su dominio, añada registros de alias para ellos en `/etc/aliases`: + + cat >> /etc/aliases <<EOF + team: user@example.com, otheruser@example.com + user-support: team + EOF + +#### Descarte correo entrante no deseado + +Configure Postfix para que descarte los mensajes enviados a la dirección [`BLACKHOLE_PREFIX`]({{ page.baseurl }}/docs/customising/config/#blackhole_prefix), cuyo valor por defecto es `do-not-reply-to-this-address`: + + cat >> /etc/aliases <<EOF + # Utilizamos esta opción como campo remitente para algunos mensajes + # en los que no nos interesa la confirmación de entrega + do-not-reply-to-this-address: /dev/null + EOF + +Si dispone de una dirección [`BLACKHOLE_PREFIX`]({{ page.baseurl }}/docs/customising/config/#blackhole_prefix), sustituya `do-not-reply-to-this-address` con la dirección que ha configurado. + +#### Filtre mensajes entrantes en las direcciones de administración del sitio + +Puede utilizar la [gestión automática de rebotado]({{ page.baseurl }}/docs/installing/email/#gestin-de-rebotado-automtico-opcional) de Alaveteli para filtrar mensajes rebotados enviados a [`TRACK_SENDER_EMAIL`]({{ page.baseurl }}/docs/customising/config/#track_sender_email) +y a [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email). + + +<div class="attention-box"> +Este manual presupone que ha configurado las opciones siguientes en <code>config/general.yml</code>: + + <ul> + <li><a href="{{ page.baseurl }}/docs/customising/config/#contact_email">CONTACT_EMAIL</a>: <code>user-support@example.com</code></li> + <li><a href="{{ page.baseurl }}/docs/customising/config/#track_sender_email">TRACK_SENDER_EMAIL</a>: <code>user-support@example.com</code></li> + <li><a href="{{ page.baseurl }}/docs/customising/config/#forward_nonbounce_responses_to">FORWARD_NONBOUNCE_RESPONSES_TO</a>: <code>team@example.com</code></li> + </ul> + +Modifique los siguientes ejemplos con las direcciones que ha configurado: +</div> + +Cree un nuevo flujo de gestión de respuestas: + + cat >> /etc/postfix/master.cf <<EOF + alaveteli_replies unix - n n - 50 pipe + flags=R user=alaveteli argv=/var/www/alaveteli/script/handle-mail-replies + EOF + +_Nota:_ Sustituya `/var/www/alaveteli` con la ruta correcta de Alaveteli, si es necesario. + +Redirija el correo enviado a `user-support@example.com` hacia `alaveteli_replies`: + + cat >> /etc/postfix/transports <<EOF + /^user-support@*/ alaveteli_replies + EOF + +Finalmente, edite `/etc/aliases` para eliminar `user-support`: + + team: user@example.com, otheruser@example.com + +#### Registro + +Para que los registros de Postfix sean leídos correctamente desde +`script/load-mail-server-logs`, necesita aplicarles la función logrotate con una fecha +en el nombre de archivo. Como esta acción creará numerosos archivos de tipo logrotate (uno por día), +se recomienda almacenarlos en un directorio específico para ellos. + +También necesitará indicarle a Alaveteli dónde se almacenan los archivos de registro y que se hallan en formato +Postfix. Actualice +[`MTA_LOG_PATH`]({{ page.baseurl }}/docs/customising/config/#mta_log_path) y +[`MTA_LOG_TYPE`]({{ page.baseurl }}/docs/customising/config/#mta_log_type) en `config/general.yml`: + + MTA_LOG_PATH: '/var/log/mail/mail.log-*' + MTA_LOG_TYPE: "postfix" + +Configure Postfix para que efectúe los registros en su propio directorio: + +##### Debian + +En `/etc/rsyslog.conf`, defina: + + mail.* -/var/log/mail/mail.log + + +##### Ubuntu + +En `/etc/rsyslog.d/50-default.conf`, defina: + + mail.* -/var/log/mail/mail.log + +##### Configure logrotate + +Configure logrotate para que rote los archivos de registro en el formato requerido: + + cat >> /etc/logrotate.d/rsyslog <<EOF + /var/log/mail/mail.log + { + rotate 30 + daily + dateext + missingok + notifempty + compress + delaycompress + sharedscripts + postrotate + reload rsyslog >/dev/null 2>&1 || true + endscript + } + EOF + +#### Aplique los cambios + +Como usuario root, aplique todos estos cambios con los siguientes comandos: + + service rsyslog restart + + newaliases + postmap /etc/postfix/transports + postmap /etc/postfix/recipients + postmap /etc/postfix/recipient_bcc + postfix reload + +#### Solución de problemas (Postfix) + +Para probar la entrega de correo, ejecute: + + $ /usr/sbin/sendmail -bv foi+request-1234@example.com + +Asegúrese de sustituir `example.com` por su dominio. Este comando indica +si el envío de correo a `foi\+.*example.com` y a la cuenta de la copia de seguridad +funciona (no envía ningún correo para probarlo). Si funciona, debería recibir +un correo de informe de entrega con un texto similar a: + + <foi+request-1234@example.com>: delivery via alaveteli: + delivers to command: /var/www/alaveteli/script/mailin + <backupfoi@local.machine.name>: delivery via local: delivers to mailbox + +También puede probar otros alias que haya configurado para su dominio en +esta sección, con el objetivo de comprobar si entregarán el correo tal como espera. Por +ejemplo, puede probar el redireccionamiento de mensajes rebotados del mismo modo. El texto +de este informe de entrega debería ser similar a: + + <user-support@example.com>: delivery via alaveteli_replies: delivers to command: /var/www/alaveteli/script/handle-mail-replies + + +Es posible que necesite instalar el paquete `mailutils` para leer el informe +de entrega utilizando el comando `mail` en un nuevo servidor: + + apt-get install mailutils + +Si los correos no son recibidos por su instalación de Alaveteli, encontrará más consejos +sobre errores de correo entrante en el apartado de [solución de problemas generales de correo]({{ page.baseurl }}/docs/installing/email#solucin-de-problemas-generales-de-correo). + + + +## Configuración de ejemplo con Exim4 + +Esta sección muestra un ejemplo de configuración de su MTA con +**Exim4**. Si utiliza Postfix en lugar de Exim4, consulte la +[configuración de ejemplo con Postfix](#configuracin-de-ejemplo-con-postfix). + + +### Instale Exim4 + +Instale Exim4: + + apt-get install exim4 + + +### Configure Exim4 + +#### Configure Exim para que reciba correo desde otros servidores + +Edite `/etc/exim4/update-exim4.conf.conf`. Defina las siguientes opciones (utilice su nombre de host, no `example.com`): + + dc_eximconfig_configtype='internet' + dc_other_hostnames='example.com' + dc_local_interfaces='0.0.0.0 ; ::1' + dc_use_split_config='true' + +Esta última línea indica a Exim que utilice los archivos de `/etc/exim4/conf.d` para configurarse a sí mismo. + +#### Defina las variables generales y las opciones de registro + +Cree `/etc/exim4/conf.d/main/04_alaveteli_options` con el comando: + + cat > /etc/exim4/conf.d/main/04_alaveteli_options <<'EOF' + ALAVETELI_HOME=/var/www/alaveteli + ALAVETELI_USER=alaveteli + log_file_path=/var/log/exim4/exim-%slog-%D + MAIN_LOG_SELECTOR==+all -retry_defer + extract_addresses_remove_arguments=false + EOF + +Esta acción configura `ALAVETELI_HOME` y `ALAVETELI_USER` para su uso en otros archivos de configuración y define las opciones de registro. + +- **`ALAVETELI_HOME`:** define el directorio de instalación de Alaveteli. +- **`ALAVETELI_USER`:** debería ser el usuario de Unix que va a poner en funcionamiento su sitio. Debe tener permisos de escritura en `ALAVETELI_HOME`. +- **`log_file_path`:** El nombre y la ubicación de los archivos de registro creados por Exim deben coincidir con los esperados por el script `load-mail-server-logs`. +- **`MAIN_LOG_SELECTOR`:** El script `check-recent-requests-sent` espera que los registros contengan la información de remitente `from=<...>`, por lo que aumentamos la minuciosidad de los registros. +- **`extract_addresses_remove_arguments`:** si se le asigna el valor `false`, cuando el paquete gem `mail` utilice la opción de línea de comando `-t` para especificar las direcciones de entrega, Exim interpretará que dichas direcciones deben añadirse, no eliminarse. Consulte [esta publicación de `mail`](https://github.com/mikel/mail/issues/70) para obtener más información. + +<div class="attention-box"> +Nota: Si está editando una configuración existente de Exim en lugar de crear una nueva, compruebe la opción <code>untrusted_set_sender</code> en <code>/etc/exim4/conf.d/main/02_exim4-config_options</code>. Por defecto, los usuarios que no son de confianza en Exim solo pueden definir una dirección de remitente vacía para declarar que un mensaje no debe generar nunca ningún rebote. <code>untrusted_set_sender</code> puede definirse como una lista de patrones de dirección, de forma que los usuarios que no sean de confianza puedan definir direcciones de remitente que concuerden con alguno de los patrones listados. Si especifica una lista de patrones, también necesitará añadir <code>ALAVETELI_USER</code> a la lista <code>MAIN_TRUSTED_USERS</code> para permitir que se defina la ruta de retorno del correo saliente. Esta opción también se encuentra en <code>/etc/exim4/conf.d/main/02_exim4-config_options</code> en una configuración dividida. Busque la línea que empieza por <code>MAIN_TRUSTED_USERS</code>, similar a: + + <pre><code>MAIN_TRUSTED_USERS = uucp</code></pre> + +y añada el usuario de Alaveteli: + + <pre><code>MAIN_TRUSTED_USERS = uucp : alaveteli</code></pre> + + Si <code>untrusted_set_sender</code> está definido como <code>*</code>, los usuarios que no sean de confianza podrán establecer direcciones de remitente sin restricciones, así que no será necesario añadir <code>ALAVETELI_USER</code> a la lista <code>MAIN_TRUSTED_USERS</code>. +</div> + + +#### Redirija el correo entrante de solicitudes desde Exim hacia Alaveteli + +En esta sección añadiremos una configuración al flujo de correo entrante para direcciones +especiales de Alaveteli hacia Alaveteli y también las enviaremos al buzón local de la copia de +seguridad. + +Cree el usuario de Unix `backupfoi`: + + adduser --quiet --disabled-password \ + --gecos "Alaveteli Mail Backup" backupfoi + +Especifique un `router` de Exim para las direcciones especiales de Alaveteli, que redirigirá los mensajes hacia Alaveteli mediante una ruta de transporte local: + + cat > /etc/exim4/conf.d/router/04_alaveteli <<'EOF' + alaveteli_request: + debug_print = "R: alaveteli for $local_part@$domain" + driver = redirect + data = ${lookup{$local_part}wildlsearch{ALAVETELI_HOME/config/aliases}} + pipe_transport = alaveteli_mailin_transport + EOF + +Cree `/etc/exim4/conf.d/transport/04_alaveteli`, que define las propiedades de la rita de transporte `transport` que entregará el correo a Alaveteli: + + cat > /etc/exim4/conf.d/transport/04_alaveteli <<'EOF' + alaveteli_mailin_transport: + driver = pipe + command = $address_pipe ${lc:$local_part} + current_directory = ALAVETELI_HOME + home_directory = ALAVETELI_HOME + user = ALAVETELI_USER + group = ALAVETELI_USER + EOF + + +<div class="attention-box"> + Este manual presupone que ha definido <a href="/docs/customising/config/#incoming_email_prefix"><code>INCOMING_EMAIL_PREFIX</code></a> como <code>foi+</code> en <code>config/general.yml</code>. +</div> + +Cree el archivo `config/aliases` que el `router` `alaveteli_request` de Exim obtendrá. Este archivo redirige el correo desde direcciones especiales a `script/mailin` y al usuario `backupfoi`. + + cat > /var/www/alaveteli/config/aliases <<'EOF' + ^foi\\+.*: "|/var/www/alaveteli/script/mailin", backupfoi + EOF + +_Nota:_ Sustituya `/var/www/alaveteli` con la ruta correcta de Alaveteli, si es necesario. + +#### Defina sus grupos de correo de destinatarios de contacto + +Para definir grupos de destinatarios de las direcciones de correo `team@` y `user-support@` de su dominio, añada registros de alias para ellos en `/var/www/alaveteli/config/aliases`: + + cat >> /var/www/alaveteli/config/aliases <<EOF + team: user@example.com, otheruser@example.com + user-support: team + EOF + +#### Descarte correo entrante no deseado + +Configure Exim para que descarte todos los mensajes enviados a la dirección [`BLACKHOLE_PREFIX`]({{ page.baseurl }}/docs/customising/config/#blackhole_prefix), cuyo valor predeterminado es `do-not-reply-to-this-address`. + + cat >> /var/www/alaveteli/config/aliases <<EOF + # Utilizamos esta opción como campo remitente para algunos mensajes + # en los que no nos interesa la confirmación de entrega + do-not-reply-to-this-address: :blackhole: + EOF + +_Nota:_ Sustituya `/var/www/alaveteli` con la ruta correcta de Alaveteli, si es necesario. + +#### Filtre los mensajes entrantes hacia direcciones de administración + +Puede utilizar la [gestión de rebotado automática]({{ page.baseurl }}/docs/installing/email/#gestin-de-rebotado-automtico-opcional) de Alaveteli para filtrar mensajes rebotados enviados a [`TRACK_SENDER_EMAIL`]({{ page.baseurl }}/docs/customising/config/#track_sender_email) +y a [`CONTACT_EMAIL`]({{ page.baseurl }}/docs/customising/config/#contact_email). + +<div class="attention-box"> +Este manual presupone que ha configurado lo siguiente en <code>config/general.yml</code>: + + <ul> + <li><a href="{{ page.baseurl }}/docs/customising/config/#contact_email">CONTACT_EMAIL</a>: <code>user-support@example.com</code></li> + <li><a href="{{ page.baseurl }}/docs/customising/config/#track_sender_email">TRACK_SENDER_EMAIL</a>: <code>user-support@example.com</code></li> + <li><a href="{{ page.baseurl }}/docs/customising/config/#forward_nonbounce_responses_to">FORWARD_NONBOUNCE_RESPONSES_TO</a>: <code>team@example.com</code></li> + </ul> + +Modifique los siguientes ejemplos con las direcciones que haya configurado. +</div> + +Modifique la línea `user-support` ubicada en `/var/www/alaveteli/config/aliases`: + + user-support: |/var/www/alaveteli/script/handle-mail-replies + +#### Registro + +Deberá indicar a Alaveteli dónde se almacenan los archivos de registro y que se hallan en formato Exim. Actualice [`MTA_LOG_PATH`]({{ page.baseurl }}/docs/customising/config/#mta_log_path) y [`MTA_LOG_TYPE`]({{ page.baseurl }}/docs/customising/config/#mta_log_type) en `config/general.yml`: + + MTA_LOG_PATH: '/var/log/exim4/exim-mainlog-*' + MTA_LOG_TYPE: 'exim' + + +#### Aplique los cambios en Exim + +Finalmente, ejecute los comandos: + + update-exim4.conf + service exim4 restart + +Si existe el archivo `/etc/exim4/exim4.conf`, `update-exim4.conf` +silenciosamente no hará nada. Algunas distribuciones incluyen este archivo. Si +es su caso, necesitará eliminarlo o renombrarlo antes de ejecutar `update-exim4.conf`. + + +#### Solución de problemas (Exim) + +Para probar la entrega de correo, ejecute como usuario con permisos (sustituyendo `example.com` por su nombre de dominio): + + exim4 -bt foi+request-1234@example.com + +Este comando debería indicarle qué routers están siendo procesados. Debería mostrarse algo similar a: + + $ exim4 -bt foi+request-1234@example.com + R: alaveteli for foi+request-1234@example.com + foi+request-1234@example.com -> |/var/www/alaveteli/script/mailin + transport = alaveteli_mailin_transport + R: alaveteli for backupfoi@your.machine.name + R: system_aliases for backupfoi@your.machine.name + R: userforward for backupfoi@your.machine.name + R: procmail for backupfoi@your.machine.name + R: maildrop for backupfoi@your.machine.name + R: lowuid_aliases for backupfoi@your.machine.name (UID 1001) + R: local_user for backupfoi@your.machine.name + backupfoi@your.machine.name + <-- foi+request-1234@example.com + router = local_user, transport = mail_spool + +Esta información indica que la parte encargada del redireccionamiento (que hace que los correos hacia +`foi\+.*@example.com` se reenvíen al script `mailin` de Alaveteli y a la cuenta +local de copia de seguridad) está funcionando. Puede probar el redireccionamiento +de los mensajes rebotados del mismo modo: + + exim4 -bt user-support@example.com + R: alaveteli for user-support@example.com + user-support@example.com -> |/var/www/alaveteli/script/handle-mail-replies + transport = alaveteli_mailin_transport + +Si los correos no son recibidos por su instalación de Alaveteli, encontrará más consejos sobre +errores de correo entrante en la siguiente sección. También existe una +fantástica [hoja de referencia de Exim](http://bradthemad.org/tech/notes/exim_cheatsheet.php) +en línea, que puede resultarle útil. + +## Solución de problemas generales de correo + +Primero necesita comprobar si su MTA está entregando los correos entrantes +correspondientes al comando `script/mailin`. Existen varios formas de +configurar su MTA para que lo haga. Hemos documentado una forma de hacerlo +[en Exim]({{ page.baseurl }}/docs/installing/email/#configuracin-de-ejemplo-con-exim4), incluyendo [un comando que puede utilizar]({{ page.baseurl }}/docs/installing/email/#solucin-de-problemas-exim) +para comprobar que el redireccionamiento del correo está configurado correctamente. +También hemos documentado una forma de configurar [Postfix]({{ page.baseurl }}/docs/installing/email/#configuracin-de-ejemplo-con-postfix), con un [comando de depuración]({{ page.baseurl }}/docs/installing/email/#solucin-de-problemas-postfix) similar. + +En segundo lugar necesitará probar que el propio script de correo está funcionando +correctamente mediante su ejecución desde la línea de comando. Para ello, encuentre +una dirección "To" válida para una solicitud en su sistema. Puede hacer esto a través +de la interfaz de administración de su sitio o desde la línea de comando, de este modo: + + $ ./script/console + Loading development environment (Rails 2.3.14) + >> InfoRequest.find_by_url_title("why_do_you_have_such_a_fancy_dog").incoming_email + => "request-101-50929748@localhost" + +Ahora tome el origen de un correo válido (hay algunos correos de muestra en +`spec/fixtures/files/`), edite la cabecera `To:` para que concuerde con dicha dirección +y después rediríjalo a través del script de correo. Un código de salida distinto de +cero significa que se ha producido un error. Por ejemplo: + + $ cp spec/fixtures/files/incoming-request-plain.email /tmp/ + $ perl -pi -e 's/^To:.*/To: <request-101-50929748@localhost>/' /tmp/incoming-request-plain.email + $ ./script/mailin < /tmp/incoming-request-plain.email + $ echo $? + 75 + +El script `mailin` envía por correo los detalles de todo error a +`CONTACT_EMAIL` (definido en el archivo `general.yml`). Un problema común +consiste en que el usuario que ejecuta el MTA to tiene permisos de escritura en +`files/raw_emails/`. + +Si todo parece correcto a nivel local, deberá comprobar también desde otro ordenador +conectado a internet que el servidor DNS para su dominio indica que su servidor +de Alaveteli está gestionando el correo y que su servidor está recibiendo correo +en el puerto 25. El siguiente comando es una consulta para preguntar qué servidor +está gestionando el correo para el dominio `example.com`, que recibe como respuesta +`mail.example.com`. + + $ host -t mx example.com + example.com mail is handled by 5 mail.example.com. + +Este comando siguiente prueba la conexión con el puerto 25, el puerto SMTP +estándar, en `mail.example.com`, y es rechazada. + + $ telnet mail.example.com 25 + Trying 10.10.10.30... + telnet: connect to address 10.10.10.30: Connection refused + +La siguiente transcripción muestra una conexión satisfactoria en la que el servidor +acepta el correo para su entrega (los comandos que debe introducir se indican con +el carácter `$`): + + $ telnet 10.10.10.30 25 + Trying 10.10.10.30... + Connected to 10.10.10.30. + Escape character is '^]'. + 220 mail.example.com ESMTP Exim 4.80 Tue, 12 Aug 2014 11:10:39 +0000 + $ HELO X + 250 mail.example.com Hello X [10.10.10.1] + $ MAIL FROM: <test@local.domain> + 250 OK + $ RCPT TO:<foi+request-1234@example.com> + 250 Accepted + $ DATA + 354 Enter message, ending with "." on a line by itself + $ Subject: Test + $ + $ Este es un correo de prueba. + $ . + 250 OK id=1XHA03-0001Vx-Qn + QUIT + diff --git a/es/docs/installing/index.md b/es/docs/installing/index.md new file mode 100644 index 000000000..29de03dad --- /dev/null +++ b/es/docs/installing/index.md @@ -0,0 +1,65 @@ +--- +layout: es/page +title: Instalación +--- + +# Instalación de Alaveteli + +<p class="lead"> + Existen diversas formas de instalar Alaveteli. + Hemos elaborado una Amazon Machine Image (AMI) para que pueda desplegar rápidamente + en EC2 de Amazon (práctico si solamente desea evaluarlo, por ejemplo). + Si prefiere utilizar su propio servidor, existe un script de instalación que + efectúa la mayor parte del trabajo, o también puede seguir las instrucciones de + instalación manual. +</p> + +## Antes de empezar + +Importante: necesita decidir si está instalando Alaveteli para su +<a href="{{ page.baseurl }}/docs/glossary/#development" class="glossary__link">desarrollo</a> o su +<a href="{{ page.baseurl }}/docs/glossary/#production" class="glossary__link">producción</a>. + +Un servidor de **desarrollo** en aquel donde modificará, personalizará y tal vez +experimentará mientras lo pone en funcionamiento. Siempre debería hacer esto en primer +lugar. En este entorno podrá ver mensajes de depuración y no necesitará preocuparse +demasiado sobre la eficiencia y el rendimiento del sitio (pues en realidad no +recibe gran cantidad de tráfico). + +Un servidor de **producción** es diferente: le interesa que el servidor de producción funcione +de la forma más eficiente posible, así que opciones tales como la memoria caché se activan +y otras como los mensajes de depuración se desactivan. Es importante que pueda implementar cambios +rápida y eficientemente en un servidor de producción, por lo que recomendamos que considere también + el uso de un [mecanismo de despliegue]({{ page.baseurl }}/docs/installing/deploy/). + +Lo ideal sería que también tuviera un +<a href="{{ page.baseurl }}/docs/glossary/#staging" class="glossary__link">servidor de pruebas</a>, +utilizado exclusivamente para probar el código nuevo en un entorno idéntico a su servidor +de producción antes de publicarlo. + +Si tiene dudas, probablemente deba utilizar un servidor de desarrollo. Póngalo en marcha, juegue +con él, personalícelo y, más adelante, puede instalarlo como un servidor de producción. + +## Despliegue + +Si está utilizando un servidor de producción, le **recomendamos encarecidamente** el +uso del [mecanismo de despliegue]({{ page.baseurl }}/docs/installing/deploy/) Capistrano +incluido en Alaveteli. Configúrelo y nunca tendrá que editar archivos en estos servidores, +pues Capistrano se encargará de ello en su lugar. + +## Instalación del código principal + +* [Instalación en un entorno de desarrollo virtual de Vagrant]({{ page.baseurl }}/docs/installing/vagrant/): una buena elección para desarrollo y para poder jugar con el sitio. +* [Instalación con EC2 de Amazon]({{ page.baseurl }}/docs/installing/ami/) utilizando nuesta AMI. +* [Instalación utilizando el script]({{ page.baseurl }}/docs/installing/script/) que efectúa la instalación completa en su propio servidor. +* [Instalación manual]({{ page.baseurl }}/docs/installing/manual_install/): instrucciones paso a paso. + +Si está configurando un servidor de desarrollo en MacOS X, también disponemos de +[instrucciones de instalación para MacOS]({{ page.baseurl }}/docs/installing/macos/). + +## Otros datos sobre la instalación + +Alaveteli necesita poder enviar y recibir correo. Si efectúa la instalación manual, necesitará [configurar su +MTA (servidor de correo) en consecuencia]({{ page.baseurl }}/docs/installing/email/). Los otros métodos de instalación lo harán automáticamente. + +* [Instalación del MTA]({{ page.baseurl }}/docs/installing/email/). diff --git a/es/docs/installing/macos.md b/es/docs/installing/macos.md new file mode 100644 index 000000000..4909fda53 --- /dev/null +++ b/es/docs/installing/macos.md @@ -0,0 +1,164 @@ +--- +layout: es/page +title: Instalación en MacOS X +--- + +# Instalación en MacOS X + +<p class="lead"> + No recomendamos el uso de OS X en producción, pero si desea configurar + Alaveteli en su Mac para su desarrollo, estas indicaciones le serán + de ayuda. +</p> + +Existen [otras formas de instalar Alaveteli]({{ page.baseurl }}/docs/installing/). + +## MacOS X 10.7 + +Siga estas instrucciones para poner en marcha Alaveteli localmente en una máquina con OS X. Estas instrucciones se han probado con Xcode 4.1 en OS X Lion (10.7). No recomendamos el uso de OS X en producción. + +**Nota:** Este manual está incompleto actualmente. Ayúdenos publicando problemas en [el grupo de Google alaveteli-dev](https://groups.google.com/group/alaveteli-dev) o enviando solicitudes pull. + +## Xcode + +Si utiliza OS X Lion, descargue *Command Line Tools for Xcode* de [Apple](https://developer.apple.com/downloads/index.action). Se trata de un nuevo paquete de Apple que proporciona las herramientas integradas de línea de comando independientemente del resto de Xcode. Necesitará registrar una cuenta gratuita de desarrollador de Apple. + +**Nota:** En Xcode 4.2 ya no se incluye una versión de GCC sin LLVM. Homebrew ha actuado ante esta circunstancia [cambiando a Clang](https://github.com/mxcl/homebrew/issues/6852). Sin embargo, es posible que encuentre errores al instalar RVM. *Informe de ellos en la [lista de correo](https://groups.google.com/group/alaveteli-dev).* Las siguientes instrucciones se han probado con Xcode 4.1. En caso necesario, puede instalar GCC de Xcode 4.1 ejecutando: + + brew install https://github.com/adamv/homebrew-alt/raw/master/duplicates/apple-gcc42.rb + +## Homebrew + +Homebrew es un gestor de paquetes para OS X. Es el preferido frente a otras alternativas como MacPorts y Fink. Si todavía no tiene instalado Homebrew, ejecute el comando: + + ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go) + +A continuación instale los paquetes requeridos por Alaveteli: + + brew install catdoc elinks gnuplot gs imagemagick libmagic libyaml links mutt poppler tnef wkhtmltopdf wv xapian unrtf + + +### Instale PostgreSQL + +Alaveteli utiliza PostgreSQL por defecto. Si ha probado Alaveteli con MySQL o SQLite, infórmenos en el [grupo de Google alaveteli-dev](https://groups.google.com/group/alaveteli-dev). + + brew install postgresql + initdb /usr/local/var/postgres + mkdir -p ~/Library/LaunchAgents + cp /usr/local/Cellar/postgresql/9.0.4/org.postgresql.postgres.plist ~/Library/LaunchAgents/ + launchctl load -w ~/Library/LaunchAgents/org.postgresql.postgres.plist + +## PDF Toolkit + +[Descargue el paquete de instalación](https://github.com/downloads/robinhouston/pdftk/pdftk.pkg) y ejecútelo. + +## Ruby + +### Instale RVM + +RVM es la forma preferida de instalar numerosas versiones de Ruby en OS X. Alaveteli utiliza Ruby 1.8.7. Los siguientes comandos presuponen que está utilizando Bash. + + curl -L https://get.rvm.io | bash -s stable + +Lea las notas `rvm notes` y los requisitos `rvm requirements` con cuidado para obtener más instrucciones. Después, instale Ruby: + + rvm install 1.8.7 + rvm install 1.9.3 + rvm use 1.9.3 --default + +### Instale mahoro y pg con flags + +Los paquetes gem `mahoro` y `pg` necesitas comandos de instalación especiales. Rubygems debe atrasarse a la versión 1.6.2 para evitar advertencias sobre funcionalidades obsoletas al efectuar las pruebas. + + rvm 1.8.7 + gem update --system 1.6.2 + gem install mahoro -- --with-ldflags="-L/usr/local/Cellar/libmagic/5.09/lib" --with-cppflags="-I/usr/local/Cellar/libmagic/5.09/include" + env ARCHFLAGS="-arch x86_64" gem install pg + +#### Actualización + +Con fecha de 22 de agosto de 2012 o anterior, puede instalar `mahoro` en Ruby 1.9.3 en OS X 10.7 Lion mediante: + + brew install libmagic + gem install mahoro + +## Alaveteli + +La siguiente información procede en gran parte del [proceso de instalación manual]({{ page.baseurl }}/docs/installing/manual_install). + +### Configure la base de datos + +Cree una base de datos para su usuario de Mac, ya que Homebrew no crea uno por defecto: + + createdb + +Cree un usuario `foi` desde la línea de comando, de este modo: + + createuser -s -P foi + +_Nota:_ Dejar la contraseña en blanco puede causar gran confusión si no está familiarizado con PostgreSQL. + +Cree una plantilla para nuestras bases de datos de Alaveteli: + + createdb -T template0 -E UTF-8 template_utf8 + echo "update pg_database set datistemplate=true where datname='template_utf8';" | psql + +A continuación, cree las bases de datos: + + createdb -T template_utf8 -O foi alaveteli_production + createdb -T template_utf8 -O foi alaveteli_test + createdb -T template_utf8 -O foi alaveteli_development + +### Clone Alaveteli + +No deseamos Rails comerciales porque causan problemas localmente. + + git clone https://github.com/mysociety/alaveteli.git + cd alaveteli + git submodule init + + sed -i~ 's/\\[submodule "vendor\/rails"\\]//' .git/config + + sed -i~ 's/url = git:\/\/github.com\/rails\/rails.git//' .git/config + git submodule update + +**Nota:** Debido a errores de Markdown, el primer comando `sed` anterior no se estará mostrando correctamente si aparece entre comillas. + +### Configure Alaveteli + +Copie los archivos de ejemplo de configuración y configure `database.yml`. + + cp -f config/general.yml-example config/general.yml + cp -f config/memcached.yml-example config/memcached.yml + cp -f config/database.yml-example config/database.yml + sed -i~ 's/<username>/foi/' config/database.yml + sed -i~ 's/<password>/foi/' config/database.yml + sed -i~ 's/ port: 5432//' config/database.yml + sed -i~ 's/ # PostgreSQL 8.1 pretty please//' config/database.yml + +### Bundler + +Instale los paquetes gem y finalice la configuración de Alaveteli. + + rvm 1.8.7 + bundle + bundle exec rake db:create:all + bundle exec rake db:migrate + bundle exec rake db:test:prepare + +## Solución de problemas + +### Versión de Ruby + +Asegúrese de estar utilizando la última versión de Ruby. Por ejemplo, algunas versiones de Ruby 1.8.7 fallarán en la segmentación, por ejemplo: + +``` +/Users/james/.rvm/gems/ruby-1.8.7-p357/gems/json-1.5.4/ext/json/ext/json/ext/parser.bundle: [BUG] Segmentation fault +ruby 1.8.7 (2011-12-28 patchlevel 357) [i686-darwin11.3.0] +``` + +La ejecución de `rvm install 1.8.7` debería instalar el último nivel de parche de Ruby 1.8.7. Recuerde cambiar a la última versión de Ruby antes de continuar. + +### Tareas rake + +Recuerde ejecutar las tareas rake con `bundle exec`. Para ello, por ejemplo, ejecute `bundle exec rake`. diff --git a/es/docs/installing/manual_install.md b/es/docs/installing/manual_install.md new file mode 100644 index 000000000..fdf559cbf --- /dev/null +++ b/es/docs/installing/manual_install.md @@ -0,0 +1,894 @@ +--- +layout: es/page +title: Instalación manual +--- + + +# Instalación manual + +<p class="lead"> + Las siguientes instrucciones describen el proceso paso a paso para la + instalación de Alaveteli. <em>No es obligatorio hacerlo de este modo</em>, + normalmente resulta más sencillo utilizar el + <a href="{{ page.baseurl }}/docs/installing/script/">script de instalación</a> + o el + <a href="{{ page.baseurl }}/docs/installing/ami/">AMI EC2 de Amazon</a>. +</p> + +Existen [otras maneras de instalar Alaveteli]({{ page.baseurl }}/docs/installing/). + +<div class="attention-box"> + <ul> + <li>Los comandos incluidos en este manual requieren permisos de usuario root.</li> + <li>Los comandos deben ejecutarse en el terminal o mediante SSH.</li> + </ul> +</div> + +## Configuración el sistema operativo + +### Sistema operativo objetivo + +Estas instrucciones corresponden a una versión de 64 bits de Debian 6 (Wheezy), Debian 7 (Squeeze) +o Ubuntu 12.04 LTS (Precise). Debian es la plataforma de implementación con mejor soporte. También +tenemos instrucciones para la [instalación en MacOS]({{ page.baseurl }}/docs/installing/macos/). + +### Defina la localización + +**Debian Wheezy o Squeeze** + +Siga el [manual de Debian](https://wiki.debian.org/Locale#Standard) para configurar la localización del sistema operativo. + +Genere las localizaciones que desea tener disponibles. Cuando la pantalla interactiva solicite que escoja una localización predeterminada, elija «None», pues la sesión SSH proporcionará la localización requerida. + + dpkg-reconfigure locales + +Inicie una nueva sesión SSH para utilizar su localización de SSH. + +**Ubuntu Precise** + +Desactive la localización predeterminada, ya que la sesión SSH debería proporcionar la localización requerida. + + update-locale LC_ALL= + +Inicie una nueva sesión SSH para utilizar su localización de SSH. + +### Actualice el sistema operativo + +Actualice el sistema operativo con los últimos paquetes: + + apt-get update -y + apt-get upgrade -y + +`sudo` no está instalado de forma predeterminada en Debian. Instálelo junto con `git` (la herramienta de control de versiones que utilizaremos para obtener una copia del código de Alaveteli). + + apt-get install -y sudo git-core + +### Prepare la instalación de dependencias del sistema utilizando paquetes del sistema operativo + +Estos son paquetes de los que el software depende: software de terceros utilizado para +analizar documentos, hospedar el sitio, etc. En el siguiente paso también hay paquetes que contienen +encabezados necesarios para compilar parte de las dependencias gem. + +#### Utilice otros repositorios para obtener paquetes más recientes + +Añada los siguientes repositorios a `/etc/apt/sources.list`: + +**Debian Squeeze** + + cat > /etc/apt/sources.list.d/debian-extra.list <<EOF + # Mirror de Debian que incluye contrib y non-free: + deb http://the.earth.li/debian/ squeeze main contrib non-free + deb-src http://the.earth.li/debian/ squeeze main contrib non-free + + # Actualizaciones de seguridad: + deb http://security.debian.org/ squeeze/updates main non-free + deb-src http://security.debian.org/ squeeze/updates main non-free + + # Backports de Debian + deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free + deb-src http://backports.debian.org/debian-backports squeeze-backports main contrib non-free + + # Wheezy + deb http://ftp.uk.debian.org/debian wheezy main contrib non-free + EOF + +El repositorio squeeze-backports proporciona una versión más reciente de RubyGems y el repositorio de Wheezy proporciona bundler. Debería configurar la opción package-pinning para reducir la prioridad del repositorio de Wheezy con el objetivo de evitar que se le soliciten otros paquetes. + + cat >> /etc/apt/preferences <<EOF + + Package: bundler + Pin: release n=wheezy + Pin-Priority: 990 + + Package: * + Pin: release n=wheezy + Pin-Priority: 50 + EOF + +**Debian Wheezy** + + cat > /etc/apt/sources.list.d/debian-extra.list <<EOF + # Mirror de Debian que incluye contrib y non-free: + deb http://the.earth.li/debian/ wheezy main contrib non-free + deb-src http://the.earth.li/debian/ wheezy main contrib non-free + + # Actualizaciones de seguridad: + deb http://security.debian.org/ wheezy/updates main non-free + deb-src http://security.debian.org/ wheezy/updates main non-free + EOF + +**Ubuntu Precise** + + cat > /etc/apt/sources.list.d/ubuntu-extra.list <<EOF + deb http://de.archive.ubuntu.com/ubuntu/ precise multiverse + deb-src http://de.archive.ubuntu.com/ubuntu/ precise multiverse + deb http://de.archive.ubuntu.com/ubuntu/ precise-updates multiverse + deb-src http://de.archive.ubuntu.com/ubuntu/ precise-updates multiverse + deb http://de.archive.ubuntu.com/ubuntu/ trusty universe + deb-src http://de.archive.ubuntu.com/ubuntu/ trusty universe + EOF + +Aquí se utiliza el repositorio trusty para obtener una versión más reciente de bundler. Debería configurar la opción package-pinning para reducir la prioridad del repositorio de Wheezy con el objetivo de evitar que se le soliciten otros paquetes. + + cat >> /etc/apt/preferences <<EOF + + Package: ruby-bundler + Pin: release n=trusty + Pin-Priority: 990 + + Package: * + Pin: release n=trusty + Pin-Priority: 50 + EOF + + +#### Paquetes personalizados por mySociety + +Si utiliza Debian o Ubuntu, debería añadir el archivo de Debian de mySociety a sus fuentes +apt. Los paquetes de mySociety actualmente solo se construyen para Debian de 64 bits. + +**Debian Squeeze, Wheezy o Ubuntu Precise** + + cat > /etc/apt/sources.list.d/mysociety-debian.list <<EOF + deb http://debian.mysociety.org squeeze main + EOF + +El repositorio anterior le permite instalar `wkhtmltopdf-static` y `pdftk` (para Squeeze) utilizando `apt`. + +Añada la clave GPG del +[repositorio de paquetes de Debian de mySociety](http://debian.mysociety.org/): + + wget -O - https://debian.mysociety.org/debian.mysociety.org.gpg.key | apt-key add - + +**Solamente para Ubuntu Precise** + + cat > /etc/apt/sources.list.d/mysociety-launchpad.list <<EOF + deb http://ppa.launchpad.net/mysociety/alaveteli/ubuntu precise main + deb-src http://ppa.launchpad.net/mysociety/alaveteli/ubuntu precise main + EOF + +El repositorio anterior le permite instalar una versión reciente de `pdftk` utilizando `apt`. + +Añada la clave GPG del +[repositorio de paquetes de Ubuntu para Alaveteli de mySociety](https://launchpad.net/~mysociety/+archive/ubuntu/alaveteli). + + apt-get install -y python-software-properties + add-apt-repository -y ppa:mysociety/alaveteli + +**Debian Wheezy o Ubuntu Precise** + +También debería configurar la opción package-pinning para reducir la prioridad del +repositorio de Debian de mySociety. Solo nos interesa obtener wkhtmltopdf-static +de mySociety. + + cat >> /etc/apt/preferences <<EOF + + Package: * + Pin: origin debian.mysociety.org + Pin-Priority: 50 + EOF + +**Debian Squeeze** + +No se requiere la adición de ningún paquete especial. + +#### Otras plataformas +Si utiliza otra plataforma basada en Linux, puede instalar, opcionalmente, +estas dependencias de forma manual, como se describe a continuación: + +1. Si desea que los usuarios puedan obtener archivos PDF agradables como parte del +archivo comprimido descargable del historial de su solicitud, instale +[wkhtmltopdf](http://code.google.com/p/wkhtmltopdf/downloads/list). +Recomendamos descargar la última versión compilada estáticamente del sitio web +del proyecto, ya que permite su ejecución sin cabeceras (es decir, sin utilizar +una interfaz gráfica) en Linux. Si instala `wkhtmltopdf`, necesitará editar una opción +en el archivo de configuración para añadir el puntero correspondiente (encontrará más información a continuación). +Si no instala esta herramienta, todo funcionará correctamente, pero los usuarios +obtendrán versiones poco atractivas en texto sin formato de sus solicitudes al descargarlas. + +2. La versión 1.44 de `pdftk` contiene un error que causa un bucle infinito en ciertas +condiciones radicales. Este problema se soluciona en el paquete estándar 1.44.7, disponible en Wheezy (Debian) y Raring (Ubuntu). + +Si no puede obtener una versión oficial con esta reparación para su sistema operativo, puede +tener la esperanza de que no se produzca el problema (bloquea un proceso de Rails de forma infinita +y es necesario matarlo), aplicar un parche por su cuenta o utilizar los paquetes de +[Debian](http://debian.mysociety.org/dists/squeeze/main/binary-amd64/) +o +[Ubuntu](https://launchpad.net/~mysociety/+archive/ubuntu/alaveteli/+packages) +compilados por mySociety. + +#### Actualice las fuentes + +Actualice las fuentes tras añadir los repositorios adicionales. + + apt-get -y update + +### Cree un usuario de Alaveteli + +Cree un nuevo usuario de Linux para ejecutar la aplicación de Alaveteli: + + adduser --quiet --disabled-password --gecos "Alaveteli" alaveteli + +## Obtenga Alaveteli + +Cree el directorio de destino y clone el código fuente de Alaveteli en este directorio: + + mkdir -p /var/www/alaveteli + chown alaveteli:alaveteli /var/www + chown alaveteli:alaveteli /var/www/alaveteli + cd /home/alaveteli + sudo -u alaveteli git clone --recursive \ + --branch master \ + https://github.com/mysociety/alaveteli.git /var/www/alaveteli + +Estos comandos clonan la rama maestra, que siempre contiene la última versión estable. Si desea probar el código más reciente (con posibles errores), puede cambiar a la rama `rails-3-develop`. + + pushd /var/www/alaveteli + sudo -u alaveteli git checkout rails-3-develop + sudo -u alaveteli git submodule update + popd + +La opción `--recursive` instala las librerías comunes de mySociety requeridas para el funcionamiento de Alaveteli. + +## Instale las dependencias + +Instale los paquetes correspondientes para su sistema: + + # Debian Wheezy + apt-get -y install $(cat /var/www/alaveteli/config/packages.debian-wheezy) + + # Debian Squeeze + apt-get -y install $(cat /var/www/alaveteli/config/packages.debian-squeeze) + + # Ubuntu Precise + apt-get -y install $(cat /var/www/alaveteli/config/packages.ubuntu-precise) + +Algunos de los archivos también tienen un número de versión listado en config/packages, compruebe +que tiene instaladas las versiones correctas. Algunas también ofrecen una selección de paquetes +listados con «`|`». + +<div class="attention-box"> + +<strong>Nota:</strong> Para instalar las dependencias de Ruby de Alaveteli, necesita instalar bundler. En +Debian y Ubuntu se proporciona como paquete (instalado como parte del proceso de +instalación de paquetes anterior). Para otros sistemas operativos, puede instalarlo también como gem: + + <pre><code> gem install bundler --no-rdoc --no-ri</code></pre> + +</div> + + +## Configure la base de datos + +Se ha trabajado para intentar conseguir que el código funcione con otras bases de datos +(por ejemplo, SQLite), pero la base de datos soportada actualmente es PostgreSQL +(«postgres»). + +Cree un usuario `foi` desde la línea de comando, de este modo: + + sudo -u postgres createuser -s -P foi + +_Nota:_ Dejar la contraseña en blanco puede causar gran confusión si no está familiarizado con +PostgreSQL. + +Cree una plantilla para nuestras bases de datos de Alaveteli: + + sudo -u postgres createdb -T template0 -E UTF-8 template_utf8 + echo "update pg_database set datistemplate=true where datname='template_utf8';" > /tmp/update-template.sql + sudo -u postgres psql -f /tmp/update-template.sql + rm /tmp/update-template.sql + +A continuación, cree las bases de datos: + + sudo -u postgres createdb -T template_utf8 -O foi alaveteli_production + sudo -u postgres createdb -T template_utf8 -O foi alaveteli_test + sudo -u postgres createdb -T template_utf8 -O foi alaveteli_development + +## Configure el correo electrónico + +Necesitará definir un servidor de correo (MTA) para enviar y recibir +correo electrónico. + +La configuración completa de un MTA va más allá del alcance de este documento. Consulte el manual de [configuración de los servidores Exim4 y Postfix]({{ page.baseurl }}/docs/installing/email/). + +En el modo de desarrollo el correo es gestionado por [`mailcatcher`](http://mailcatcher.me/) por defecto para +que pueda visualizar los correos en un navegador. Inicie mailcatcher ejecutando `bundle exec mailcatcher` en el directorio de aplicaciones. + +## Configure Alaveteli + +Alaveteli tiene tres archivos principales de configuración: + + - `config/database.yml`: configuración de la comunicación entre Alaveteli y la base de datos. + - `config/general.yml`: ajustes generales de la aplicación de Alaveteli. + - `config/newrelic.yml`: configuración del servicio de monitorización de [NewRelic](http://newrelic.com). + +Copie los archivos de configuración y actualice sus permisos: + + cp /var/www/alaveteli/config/database.yml-example /var/www/alaveteli/config/database.yml + cp /var/www/alaveteli/config/general.yml-example /var/www/alaveteli/config/general.yml + cp /var/www/alaveteli/config/newrelic.yml-example /var/www/alaveteli/config/newrelic.yml + chown alaveteli:alaveteli /var/www/alaveteli/config/{database,general,newrelic}.yml + chmod 640 /var/www/alaveteli/config/{database,general,newrelic}.yml + +### database.yml + +Ahora necesitará definir el archivo de configuración de la base de datos para que la aplicación +pueda conectar con la base de datos de Postgres. + +Edite cada sección para apuntar a la base de datos local de PostgreSQL correspondiente. + +Sección `development` de ejemplo de `config/database.yml`: + + development: + adapter: postgresql + template: template_utf8 + database: alaveteli_development + username: foi + password: secure-password-here + host: localhost + port: 5432 + +Asegúrese de que el usuario especificado en `database.yml` existe y tiene permisos completos +en las bases de datos. + +Como el usuario requiere la capacidad de desactivar restricciones durante la ejecución de las pruebas, necesita permisos de superusuario. Si no desea que el usuario de su base de datos tenga permisos de superusuario, puede añadir esta línea a la sección `test` de `database.yml` (como puede ver en `config/database.yml-example`): + + constraint_disabling: false + +### general.yml + +Tenemos un [manual completo de configuración de Alaveteli]({{ page.baseurl }}/docs/customising/config/), que abarca todas las opciones incluidas en `config/general.yml`. + +_Nota:_ Si está configurando Alaveteli para su funcionamiento en producción, asigne a la variable [`STAGING_SITE`]({{ page.baseurl }}/docs/customising/config/#staging_site) el valor `0` en `/var/www/alaveteli/config/general.yml`. + + STAGING_SITE: 0 + +Los ajustes predeterminados para los ejemplos de páginas frontales están diseñados para trabajar con +los datos de muestra incluidos en Alaveteli; una vez disponga de datos reales, deberá editar estos ajustes. + +El tema por defecto es el [tema «Alaveteli»](https://github.com/mysociety/alavetelitheme). Al ejecutar `rails-post-deploy` (consulte la información siguiente), este tema se instala automáticamente. + +### newrelic.yml + +Este archivo contiene información de configuración para el sistema de gestión +de mantenimiento de New Relic. La gestión es desactivada por defecto mediante la opción +`agent_enabled: false`. Consulte las instrucciones de [análisis de rendimiento remoto](https://github.com/newrelic/rpm) de New Relic para activarlo +para análisis locales y remotos. + +## Implementación + +Debería ejecutar el script `rails-post-deploy` después de cada actualización de software: + + sudo -u alaveteli RAILS_ENV=production \ + /var/www/alaveteli/script/rails-post-deploy + +Este comando instala las dependencias de Ruby, instala/actualiza temas, efectúa migraciones +de bases de datos, actualiza directorios compartidos y lleva a cabo otras tareas necesarias +después de una actualización de software, como la precompilación de atributos estáticos +para una instalación en producción. + +La primera ejecución de este script puede requerir *mucho* tiempo, ya que debe +compilar las dependencias nativas de `xapian-full`. + +Cree el índice para el motor de búsqueda (Xapian): + + sudo -u alaveteli RAILS_ENV=production \ + /var/www/alaveteli/script/rebuild-xapian-index + +Si esta acción falla, el sitio debería funcionar en gran parte, pero se trata de un componente principal, +así que debería hacer lo posible para que funcione. + +<div class="attention-box"> + Hemos definido <code>RAILS_ENV=production</code>. Utilice + <code>RAILS_ENV=development</code> si está instalando Alaveteli para + efectuar cambios en el código. +</div> + +## Configure el servidor de aplicaciones + +Alaveteli puede funcionar con numerosos servidores de aplicaciones. mySociety recomienda +el uso de [Phusion Passenger](https://www.phusionpassenger.com) (alias +mod_rails) o [thin](http://code.macournoyer.com/thin). + +### Con Phusion Passenger + +Passenger es el servidor de aplicaciones recomendado, ya que se ha probado a conciencia +en entornos de producción. Está implementado como un módulo de Apache, así que no puede +ejecutarse de forma independiente. + + apt-get install -y libapache2-mod-passenger + +Consulte más adelante en el manual cómo configurar el servidor web de Apache con Passenger. + +### Con Thin + +Thin es un servidor de aplicaciones más ligero que puede ejecutarse con independencia del +servidor web. Thin se instalará en el paquete de la aplicación y se utilizará para gestionar +Alaveteli por defecto. + +Ejecute lo siguiente para poner el servidor en marcha: + + cd /var/www/alaveteli + bundle exec thin \ + --environment=production \ + --user=alaveteli \ + --group=alaveteli \ + start + +El servidor escucha todas las interfaces de forma predeterminada. Puede restringirlo a la interfaz de +localhost añadiendo `--address=127.0.0.1`. + +El servidor debería haber indicado la dirección URL de acceso desde el navegador, +para que pueda observar el sitio en acción. + +Puede demonizar el proceso iniciándolo con la opción `--daemonize`. + +Más adelante en este manual crearemos un demonio SysVinit para gestionar la aplicación, así que puede detener todos los procesos thin que haya empezado a crear. + +## Demonios y procesos cron + +Los scripts crontab e init utilizan el formato de archivo `.ugly`, que es un extraño formato +de plantillas utilizado por mySociety. + +El formato `ugly` utiliza una sustitución simple de variables. Una variable tiene este +`!!(*= $aspecto *)!!`. + +### Genere el archivo crontab + +`config/crontab-example` contiene los procesos cron que se ejecutan en +Alaveteli. Escriba de nuevo el archivo de ejemplo para sustituir las variables +y después guárdelo en la carpeta `/etc/cron.d/` del servidor. + +**Variables de la plantilla:** + +* `vhost_dir`: ruta completa del directorio destino de Alaveteli. + Por ejemplo, si la salida se halla en `/var/www/alaveteli`, indique `/var/www`. +* `vcspath`: nombre del directorio que contiene el código de Alaveteli. + Por ejemplo, `alaveteli`. +* `user`: usuario con el que se ejecuta el software. +* `site`: cadena de texto que identifica su implementación de Alaveteli. +* `mailto`: dirección de correo electrónico o cuenta local a la que se enviará la salida cron. La configuración de una dirección de correo depende de que su MTA haya sido configurado para el envío remoto. + +Existe una tarea rake que le ayudará a escribir de nuevo este archivo para que le resulte útil. +Este ejemplo envía la salida cron al usuario local `alaveteli`. Modifique las variables para adaptarlas a su instalación. + + pushd /var/www/alaveteli + bundle exec rake config_files:convert_crontab \ + DEPLOY_USER=alaveteli \ + VHOST_DIR=/var/www \ + VCSPATH=alaveteli \ + SITE=alaveteli \ + MAILTO=alaveteli \ + CRONTAB=/var/www/alaveteli/config/crontab-example > /etc/cron.d/alaveteli + popd + + chown root:alaveteli /etc/cron.d/alaveteli + chmod 754 /etc/cron.d/alaveteli + +### Genere el demonio de la aplicación + +Genere un demonio basado en el servidor de aplicaciones instalado. Este demonio permitirá utilizar +el comando `service` nativo para detener, iniciar y reiniciar la aplicación. + +#### Passenger + +**Variables de la plantilla:** + +* `vhost_dir`: ruta completa del directorio destino de Alaveteli. + Por ejemplo, si la salida se halla en `/var/www/alaveteli`, indique `/var/www`. +* `vcspath`: nombre del directorio que contiene el código de Alaveteli. + Por ejemplo, `alaveteli`. +* `site`: cadena de texto que identifica su implementación de Alaveteli. +* `user`: usuario con el que se ejecuta el software. + +Existe una tarea rake que le ayudará a escribir de nuevo este archivo para que le resulte útil. +Este ejemplo envía la salida cron al usuario local `alaveteli`. Modifique las variables para adaptarlas a su instalación. + + pushd /var/www/alaveteli + bundle exec rake config_files:convert_init_script \ + DEPLOY_USER=alaveteli \ + VHOST_DIR=/var/www \ + VCSPATH=alaveteli \ + SITE=alaveteli \ + SCRIPT_FILE=/var/www/alaveteli/config/sysvinit-passenger.ugly > /etc/init.d/alaveteli + popd + + chown root:alaveteli /etc/init.d/alaveteli + chmod 754 /etc/init.d/alaveteli + +Inicie la aplicación: + + service alaveteli start + +#### Thin + +**Variables de la plantilla:** + +* `vhost_dir`: ruta completa del directorio destino de Alaveteli. + Por ejemplo, si la salida se halla en `/var/www/alaveteli`, indique `/var/www`. +* `vcspath`: nombre del directorio que contiene el código de Alaveteli. + Por ejemplo, `alaveteli`. +* `site`: cadena de texto que identifica su implementación de Alaveteli. +* `user`: usuario con el que se ejecuta el software. + +Existe una tarea rake que le ayudará a escribir de nuevo este archivo para que le resulte útil. +Este ejemplo envía la salida cron al usuario local `alaveteli`. Modifique las variables para adaptarlas a su instalación. + + pushd /var/www/alaveteli + bundle exec rake config_files:convert_init_script \ + DEPLOY_USER=alaveteli \ + VHOST_DIR=/var/www \ + VCSPATH=alaveteli \ + SITE=alaveteli \ + SCRIPT_FILE=/var/www/alaveteli/config/sysvinit-thin.ugly > /etc/init.d/alaveteli + popd + + chown root:alaveteli /etc/init.d/alaveteli + chmod 754 /etc/init.d/alaveteli + +Inicie la aplicación: + + service alaveteli start + +### Genere el demonio de alerta + +Uno de los procesos cron hace referencia a un script en `/etc/init.d/alaveteli-alert-tracks`. Se trata +de un script init, que puede generarse a partir de la plantilla +`config/alert-tracks-debian.ugly`. Este script envía correos a usuarios suscritos a actualizaciones del sitio, denominados [`tracks`]({{ page.baseurl }}/docs/installing/email/#correo-de-tracks), cuando existe algo nuevo que concuerda con sus intererses. + +**Variables de la plantilla:** + +* `daemon_name`: nombre del demonio, establecido por la tarea rake. +* `vhost_dir`: ruta completa del directorio destino de Alaveteli. + Por ejemplo, si la salida se halla en `/var/www/alaveteli`, indique `/var/www`. +* `vcspath`: nombre del directorio que contiene el código de Alaveteli. + Por ejemplo, `alaveteli`. +* `site`: cadena de texto que identifica su implementación de Alaveteli. +* `user`: usuario con el que se ejecuta el software. + +Existe una tarea rake que le ayudará a escribir de nuevo este archivo para que le resulte útil. +Este ejemplo envía la salida cron al usuario local `alaveteli`. Modifique las variables para adaptarlas a su instalación. + + pushd /var/www/alaveteli + bundle exec rake RAILS_ENV=production config_files:convert_init_script \ + DEPLOY_USER=alaveteli \ + VHOST_DIR=/var/www \ + VCSPATH=alaveteli \ + SITE=alaveteli \ + SCRIPT_FILE=/var/www/alaveteli/config/alert-tracks-debian.ugly > /etc/init.d/alaveteli-alert-tracks + popd + + chown root:alaveteli /etc/init.d/alaveteli-alert-tracks + chmod 754 /etc/init.d/alaveteli-alert-tracks + +Inicie el demonio de tracks de alerta: + + service alaveteli-alert-tracks start + +### Genere el demonio de purga de Varnish + +`config/purge-varnish-debian.ugly` es un script init similar, que es opcional +e innecesario si elige no ejecutar su sitio con Varnish (más información a continuación). Notifica a Varnish sobre páginas en caché que necesitan ser purgadas de la caché de Varnish. No funcionará si Varnish no está instalado. + +**Variables de la plantilla:** + +* `daemon_name`: nombre del demonio, establecido por la tarea rake. +* `vhost_dir`: ruta completa del directorio destino de Alaveteli. + Por ejemplo, si la salida se halla en `/var/www/alaveteli`, indique `/var/www`. +* `vcspath`: nombre del directorio que contiene el código de Alaveteli. + Por ejemplo, `alaveteli`. +* `site`: cadena de texto que identifica su implementación de Alaveteli. +* `user`: usuario con el que se ejecuta el software. + +Existe una tarea rake que le ayudará a escribir de nuevo este archivo para que le resulte útil. +Este ejemplo envía la salida cron al usuario local `alaveteli`. Modifique las variables para adaptarlas a su instalación. + + pushd /var/www/alaveteli + bundle exec rake RAILS_ENV=production config_files:convert_init_script \ + DEPLOY_USER=alaveteli \ + VHOST_DIR=/var/www \ + VCSPATH=alaveteli \ + SITE=alaveteli \ + SCRIPT_FILE=/var/www/alaveteli/config/purge-varnish-debian.ugly > /etc/init.d/alaveteli-purge-varnish + popd + + chown root:alaveteli /etc/init.d/alaveteli-purge-varnish + chmod 754 /etc/init.d/alaveteli-purge-varnish + +Inicie el demonio de tracks de alerta: + + service alaveteli-purge-varnish start + + +## Configure el servidor web + +En casi todos los escenarios recomendamos ejecutar la aplicación en Rails de Alaveteli +detrás de un servidor web. Así, el servidor web puede ofrecer contenido estático sin recorrer +la pila de Rails, proporcionando un mejor rendimiento. + +Recomendamos dos combinaciones principales de aplicación y servidor web: + +- Apache y Passenger +- Nginx y Thin + +Hay formas de ejecutar Passenger con Nginx y, por supuesto, Thin con Apache, pero +no se tienen en cuenta en este manual. Si desea hacer algo que no está documentado aquí, +contacte con [alaveteli-dev](https://groups.google.com/forum/#!forum/alaveteli-dev) y +estaremos encantados de ayudarle en la puesta en marcha. + +Si ha seguido este manual, ya debería tener instalado un servidor de aplicaciones, así que +ahora deberá eleigr el servidor web adecuado para configurarlo. + +### Apache (con Passenger) + +Instale Apache con el contenedor Suexec: + + apt-get install -y apache2 + apt-get install -y apache2-suexec + +Active los módulos requeridos: + + a2enmod actions + a2enmod expires + a2enmod headers + a2enmod passenger + a2enmod proxy + a2enmod proxy_http + a2enmod rewrite + a2enmod suexec + +Cree un directorio para la configuración opcional de Alaveteli: + + mkdir -p /etc/apache2/vhost.d/alaveteli + +Copie el ejemplo de archivo de configuración de VirtualHost. Necesitará modificar todas +las ocurrencias de `www.example.com` por su URL. + + cp /var/www/alaveteli/config/httpd.conf-example \ + /etc/apache2/sites-available/alaveteli + +Desactive el sitio predeterminado y active el VirtualHost `alaveteli`: + + a2dissite default + a2ensite alaveteli + +Compruebe la configuración y solucione posibles problemas: + + apachectl configtest + +Reinicie Apache para cargar una nueva configuración de Alaveteli: + + service apache2 graceful + +Se recomienda encarecidamente que su sitio funcione con SSL. (Asigne a `FORCE_SSL` el +valor «true» en `config/general.yml`). Para ello necesitará un certificado SSL para su dominio. + +Active el módulo SSL de Apache: + + a2enmod ssl + +Copie la configuración SSL, cambiando de nuevo `www.example.com` por su dominio, +y active el VirtualHost: + + cp /var/www/alaveteli/config/httpd-ssl.conf.example \ + /etc/apache2/sites-available/alaveteli_https + a2ensite alaveteli_https + +Fuerce las solicitudes HTTPS desde el VirtualHost HTTP: + + cp /var/www/alaveteli/config/httpd-force-ssl.conf.example \ + /etc/apache2/vhost.d/alaveteli/force-ssl.conf + +Si está probando Alaveteli o configurando un sitio interno de pruebas, genere +certificados SSL autofirmados. **No utilice certificados autofirmados para un +servidor de producción**. Sustituya `www.example.com` por su nombre de dominio. + + openssl genrsa -out /etc/ssl/private/www.example.com.key 2048 + chmod 640 /etc/ssl/private/www.example.com.key + + openssl req -new -x509 \ + -key /etc/ssl/private/www.example.com.key \ + -out /etc/ssl/certs/www.example.com.cert \ + -days 3650 \ + -subj /CN=www.example.com + chmod 640 /etc/ssl/certs/www.example.com.cert + +Compruebe la configuración y solucione posibles problemas: + + apachectl configtest + +Reinicie Apache para cargar una nueva configuración de Alaveteli. También se reiniciará +Passenger (el servidor de la aplicación). + + service apache2 graceful + +### Nginx (con Thin) + +Instale Nginx: + + apt-get install -y nginx + +#### Funcionamiento con SSL + +Se recomienda encarecidamente que el sitio funcione con SSL. (Asigne a `FORCE_SSL` el valor +«true» en `config/general.yml`). Para ello necesitará un certificado SSL para su dominio. + +Copie la configuración SSL, cambiando de nuevo `www.example.com` por su dominio, +active el servidor `alaveteli_https` y desactive el sitio predeterminado. + + cp /var/www/alaveteli/config/nginx-ssl.conf.example \ + /etc/nginx/sites-available/alaveteli_https + rm /etc/nginx/sites-enabled/default + ln -s /etc/nginx/sites-available/alaveteli_https \ + /etc/nginx/sites-enabled/alaveteli_https + +<div class="attention-box"> + <strong>Nota:</strong> Por motivos de historial, <code>nginx-ssl.conf.example</code> establece la ruta de Alaveteli como <code>/var/www/alaveteli/alaveteli</code>; necesitará modificarla manualmente a <code>/var/www/alaveteli</code> o a la raíz de su instalación de Alaveteli. +</div> + +Si está probando Alaveteli o configurando un sitio interno de pruebas, genere +certificados SSL autofirmados. **No utilice certificados autofirmados para un +servidor de producción**. Sustituya `www.example.com` por su nombre de dominio. + + openssl genrsa -out /etc/ssl/private/www.example.com.key 2048 + chmod 640 /etc/ssl/private/www.example.com.key + + openssl req -new -x509 \ + -key /etc/ssl/private/www.example.com.key \ + -out /etc/ssl/certs/www.example.com.cert \ + -days 3650 \ + -subj /CN=www.example.com + chmod 640 /etc/ssl/certs/www.example.com.cert + +Compruebe la configuración y solucione posibles problemas: + + service nginx configtest + +Cargue la nueva configuración de Nginx y reinicie la aplicación: + + service nginx reload + service alaveteli restart + +#### Funcionamiento sin SSL + +Asigne a `FORCE_SSL` el valor +«false» en `config/general.yml`. Copie el ejemplo de configuración de Nginx: + + cp /var/www/alaveteli/config/nginx.conf.example \ + /etc/nginx/sites-available/alaveteli + +<div class="attention-box"> + <strong>Nota:</strong> Por motivos de historial, <code>nginx.conf.example</code> establece la ruta de Alaveteli como <code>/var/www/alaveteli/alaveteli</code>; necesitará modificarla manualmente a <code>/var/www/alaveteli</code> o a la raíz de su instalación de Alaveteli. +</div> + +Desactive el sitio por defecto y active el servidor `alaveteli`: + + rm /etc/nginx/sites-enabled/default + ln -s /etc/nginx/sites-available/alaveteli \ + /etc/nginx/sites-enabled/alaveteli + +Compruebe la configuración y solucione posibles problemas: + + service nginx configtest + +Inicie la aplicación de Rails con Thin (si aún no lo ha hecho). + + service alaveteli start + +Cargue de nuevo la configuración de Nginx: + + service nginx reload + + +--- + +## Añada Varnish como acelerador HTTP + +En todas las cargas, excepto las ligeras, se recomienda encarecidamente que el servidor funcione con +un acelerador HTTP, como Varnish. Se suministra un VCL de muestra de Varnish en +`conf/varnish-alaveteli.vcl`. + +Si utiliza SSL necesitará configurar un terminador de SSL delante de +Varnish. Si ya utiliza Apache como servidor web, puede utilizarlo +también como terminador SSL. + +Tenemos algunas [notas sobre buenas prácticas para el servidor +de producción]({{ page.baseurl }}/docs/running/server/). + +## ¿Qué hacer ahora? + +Consulte los [siguientes pasos]({{ page.baseurl }}/docs/installing/next_steps/). + +## Solución de problemas + +* **Efectúe las pruebas** + + Asegúrese de que todo está bien. Como usuario de Alaveteli, ejecute: + + bundle exec rake spec + + Si se produce algún error, algo ha fallado en los pasos anteriores + (consulte la próxima sección sobre problemas y soluciones comunes). Es posible que + pueda avanzar a los [siguientes pasos]({{ page.baseurl }}/docs/installing/next_steps/), según la gravedad del problema, + pero lo ideal sería que intentara averiguar la causa del error. + + +<div class="attention-box"> + <strong>Nota:</strong> Si ha configurado su instalación de Alaveteli para producción, necesitará eliminar temporalmente el archivo <code>config/rails_env.rb</code>, utilizado para forzar el entorno de rails en producción, y editar su archivo <code>.bundle/config</code> para eliminar la línea <code>BUNDLE_WITHOUT</code>, que excluye las dependencias de desarrollo. Una vez hecho esto, como usuario de Alaveteli, ejecute la instalación <code>bundle install</code>. También necesitará convertir Alaveteli en propietario de <code>/var/www/alaveteli/log/development.log</code> y llevar a cabo las migraciones de bases de datos. + + <pre><code>chown alaveteli:alaveteli /var/www/alaveteli/log/development.log +sudo -u alaveteli bundle exec rake db:migrate</code></pre> + +Debería haber podido ejecutar las pruebas. No olvide restaurar <code>config/rails_env.rb</code> cuando haya terminado. Probablemente verá algunos errores de procesos cron, ya que se estarán ejecutando en el modo de desarrollo. + +</div> + + +* **No aparecen los correos entrantes en mi instalación de Alaveteli** + + Consulte el [manual general de solución de problemas de correo]({{ page.baseurl }}/docs/installing/email#solucin-de-problemas-generales-de-correo). + +* **Varias pruebas muestran el error «*Your PostgreSQL connection does not support + unescape_bytea. Try upgrading to pg 0.9.0 or later*»** + + Tiene una versión antigua de `pg`, el controlador de Postgres de Ruby. En + Ubuntu, por ejemplo, es proporcionado por el paquete `libdbd-pg-ruby`. + + Pruebe actualizando la instalación `pg` de su sistema o instalando el paquete gem pg + con `gem install pg` + +* **Algunas de las pruebas relacionadas con el correo están fallando con mensajes tales como + «*when using TMail should load an email with funny MIME settings' + FAILED*»** + + Parece que las pruebas se están efectuando en el entorno `production` + en lugar de en el entorno `test` por algún motivo. + +* **Los caracteres que no pertenecen al código ASCII se muestran como asteriscos en mis mensajes entrantes** + + Utilizamos `elinks` para convertir los correos HTML en texto sin formato. + Normalmente la codificación debería funcionar, pero en algunas circunstancias parece que + `elinks` ignora los parámetros recibidos desde Alaveteli. + + Para forzar que `elinks` siempre trate las entradas como UTF8, añada lo siguiente + a `/etc/elinks/elinks.conf`: + + set document.codepage.assume = "utf-8" + set document.codepage.force_assumed = 1 + + También debería comprobar que su localización está configurada correctamente. Consulte + [esta publicación de seguimiento](https://github.com/mysociety/alaveteli/issues/128#issuecomment-1814845) + para obtener más información. + +* **Recibo `rake: command not found` al ejecutar el script posterior a la instalación** + + El script utiliza `rake`. + + Es posible que las librerías binarias instaladas por bundler no se ubiquen en la + ruta `PATH` del sistema; por tanto, para poder ejecutar `rake` (necesario para los + despliegues), deberá utilizar un comando similar a este: + + ln -s /usr/lib/ruby/gems/1.8/bin/rake /usr/local/bin/ + + + diff --git a/es/docs/installing/next_steps.md b/es/docs/installing/next_steps.md new file mode 100644 index 000000000..d20c06675 --- /dev/null +++ b/es/docs/installing/next_steps.md @@ -0,0 +1,122 @@ +--- +layout: es/page +title: Siguientes pasos +--- +# Siguientes pasos + +<p class="lead"> + Bien, ha instalado una copia de Alaveteli y puede visualizar el sitio en un navegador. ¿Qué debe hacer ahora? +</p> + +## Cree una cuenta de administrador superusuario + +Alaveteli incluye un +<a href="{{ page.baseurl }}/docs/glossary/#emergency" class="glossary__link">usuario de emergencia</a> +que tiene acceso a la interfaz de administración. Así, cuando acabe de crear un sitio, deberá +registrarse para crear su propia cuenta y después iniciar sesión en la interfaz de administración +con el usuario de emergencia para ascender su nueva cuenta a administrador con permisos de *superusuario*. + +Una vez hecho esto, desactive el usuario de emergencia, pues no necesitará utilizarlo más: lo habrá +reemplazado con su nueva cuenta de administrador. + +Alaveteli incluye datos de muestra con un usuario administrador llamado «Joe +Admin». Si los datos de muestra se han cargado en la base de datos (depende del tipo +de instalación elegido), deberá revocar también los permisos de administrador de Joe, pues +utilizará su propia cuenta de administrador en su lugar. + +### Paso a paso: + +En primer lugar, en el navegador: + +* Acceda a `/profile/sign_in` y cree un usuario siguiendo el proceso de registro. +* Consulte su correo y confirme su cuenta. +* Acceda a `/admin?emergency=1`, inicie sesión con el código de usuario y la contraseña + que ha especificado en [`ADMIN_USERNAME`]({{ page.baseurl }}/docs/customising/config/#admin_username) + y [`ADMIN_PASSWORD`]({{ page.baseurl }}/docs/customising/config/#admin_password). + Puede consultar estos ajustes en `config/general.yml`. +* Ahora se encontrará en la página de adminsitración de Alaveteli. +* Haga clic en **Users** (en el menú de navegación superior de la página) y eliga + su nombre en el listado de usuarios. En *esa* página, haga clic en **Edit**. +* Modifique su *Admin level* a «super» y haga clic en **Save**. +* A partir de ahora, al iniciar sesión en su sitio basado en Alavateli, tendrá acceso + a la interfaz de administración (en `/admin`). Es más, verá enlaces a páginas administrativas + externas al sitio principal (que no son visibles para usuarios comunes). + +Si su instalación ha cargado los datos de muestra, habrá un usuario de prueba en su base +de datos llamado «Joe Admin» también con permisos de administrador. Deberá eliminar estos +permisos para que no exista riesgo de que se utilice para acceder a la administración de su +sitio. Puede hacer esto mientras tiene la sesión iniciada como usuario de emergencia o más tarde, +iniciando su propia sesión: + +* Acceda a `/admin/users` o haga clic en **Users** en el menú de navegación de la + página de administración. +* Busque «Joe Admin» en el listado de usuarios y haga clic en el nombre para ver los + detalles del usuario. En *esa* página, haga clic en **Edit**. +* Modifique su *Admin level* de «super» a «none» y haga clic en **Save**. +* Joe Admin ya no tendrá permisos de administrador. + +Ahora que su cuenta corresponde a un superusuario administrador, no necesita permitir el +acceso del usuario de emergencia a la interfaz de administración. En la línea de comando, edite +`/var/www/alaveteli/alaveteli/config/general.yml`: + +* Es importante que modifique la contraseña del usuario de emergencia (e, idealmente, + también el código de usuario) que se incluye en Alavateli, pues es públicos y + consecuentemente no seguro. En `general.yml`, cambie + [`ADMIN_PASSWORD`]({{ page.baseurl }}/docs/customising/config/#admin_password) + (y tal vez [`ADMIN_USERNAME`]({{ page.baseurl }}/docs/customising/config/#admin_username) + también) por un valor nuevo exclusivo. +* También puede desactivar totalmente el usuario de emergencia. En condiciones + normales no lo necesitará, pues a partir de ahora utilizará el usuario administrador que + acaba de crear. + Asigne a [`DISABLE_EMERGENCY_USER`]({{ page.baseurl }}/docs/customising/config/#disable_emergency_user) + el valor `true`. +* Para aplicar estos cambios, reinicie el servicio como usuario con permisos root: + `sudo service alaveteli restart` + +Puede utilizar el mismo proceso (con su sesión de administrador iniciada) para añadir o eliminar +permisos de superusuario administrador de cualquier usuario que añada en su sitio. +Si elimina accidentalmente los permisos de administrador de todas las cuentas (¡pero intente que +esto no ocurrra!), puede activar el usuario de emergencia editando el archivo `general.yml` +y reiniciando Alaveteli. + +## Cargue los datos de muestra + +Si desea tener algunos datos de muestra con los que probar, puede intentar cargar los elementos comunes que utiliza +la suite de pruebas en su base de datos de desarrollo. Como usuario `alaveteli`, ejecute: + + script/load-sample-data + +Si los datos de muestra ya se han cargado en la base de datos, este comando no hará nada, sino que +<abbr title='PG::Error: ERROR: permission denied: "RI_ConstraintTrigger_XXXXXX" is a system trigger'>generará un error</abbr>. + +Si ha añadido los datos de muestra, actualice después el índice de búsqueda de Xapian: + + script/update-xapian-index + +Recuerde que los datos de muestra incluyen un usuario con permisos de administrador en su sitio. +Debería revocar estos permisos para que no pueda utilizarse en el acceso a su sitio: siga +los pasos descritos en la sección anterior. + +## Pruebe el proceso de solicitud + +* Cree una nueva autoridad pública en la interfaz de administración, dele un nombre tal como + «Autoridad de prueba». Defina el correo de solicitud con una dirección que le pertenezca. + +* Desde la interfaz principal del sitio, efectúe una solicitud a la nueva autoridad. + +* Debería recibir el correo de la solicitud, intente responder a él. Su correo de respuesta + debería aparecer en Alaveteli. ¿No funciona? Consulte nuestros + [consejos para la solución de problemas]({{ page.baseurl }}/docs/installing/manual_install/#solucin-de-problemas). + Si no es suficiente, [póngase en contacto]({{ page.baseurl }}/community/) mediante + la [lista de correo de desarrollo](https://groups.google.com/forum/#!forum/alaveteli-dev) o por [IRC](http://www.irc.mysociety.org/) + para obtener ayuda. + +## Importe las autoridades públicas + +Alaveteli puede importar un listado de autoridades públicas y sus direcciones de correo de contacto desde un archivo CSV. + +Encontrará el cargador en la pestaña «Authorities» de la sección de administración o accediendo directamente a `/admin/body/import_csv`. + +## Empiece a pensar en la personalización de Alaveteli + +Consulte [nuestro manual]({{ page.baseurl }}/docs/customising/). diff --git a/es/docs/installing/script.md b/es/docs/installing/script.md new file mode 100644 index 000000000..c07c7de89 --- /dev/null +++ b/es/docs/installing/script.md @@ -0,0 +1,76 @@ +--- +layout: es/page +title: Script de instalación +--- + +# Script de instalación + +<p class="lead"> + Si prefiere utilizar su propio servidor, hemos elaborado un script de instalación, que efectúa la mayor parte del trabajo en su lugar. +</p> + +Existen [otras formas de instalar Alaveteli]({{ page.baseurl }}/docs/installing/). + +## Instalación con el script de instalación + +Si dispone de una instalación limpia de Debian Squeeze de 64 bits o Ubuntu Precise, puede +utilizar un script de instalación de nuestro repositorio commonlib para configurar una implementación +funcional de Alaveteli. Esta opción no es válida para producción (funciona, por ejemplo, en modo +de desarrollo), pero deberá llevar a cabo una instalación funcional del sitio, que pueda +enviar y recibir correo. + +**Advertencia: utilice este script solamente en un servidor recién instalado, pues efectuará +cambios significativos en la configuración de su servidor, incluidas modificaciones en la configuración +de Nginx, la creación de una cuenta de usuario, la generación de una base de datos y la instalación +de nuevos paquetes.** + +Para descargar el script, ejecute el siguiente comando: + + curl -O https://raw.githubusercontent.com/mysociety/commonlib/master/bin/install-site.sh + +Si ejecuta este script con `sh install-site.sh`, verá su mensaje de uso: + + Usage: ./install-site.sh [--default] <SITE-NAME> <UNIX-USER> [HOST] + HOST is only optional if you are running this on an EC2 instance. + --default means to install as the default site for this server, + rather than a virtualhost for HOST. + +En este caso `<SITE-NAME>` debería ser `alaveteli`. `<UNIX-USER>` es el nombre del +usuario de Unix que será propietario del código y lo podrá en funcionamiento +(este usuario será creado por el script). + +El parámetro `HOST` es un nombre de host para el servidor que podrá ser utilizado +externamente. El script creará un host virtual para este nombre, a menos que +haya especificado la opción `--default`. Este parámetro es opcional si se halla en +una implementación de EC2, en cuyo caso se utilizará el nombre de host de dicha implementación. + +Por ejemplo, si desea utilizar un nuevo usuario llamado `alaveteli` y el nombre de host +`alaveteli.127.0.0.1.xip.io`, creando un host virtual solamente para este nombre de host, +puede descargar y ejecutar el script con: + + sudo sh install-site.sh alaveteli alaveteli alaveteli.127.0.0.1.xip.io + +([xip.io](http://xip.io/) es un dominio útil para desarrollo) + +O, si desea configurarlo como el sitio por defecto en una implementación de EC2, puede +descargar el script, convertirlo en ejecutable y después invocarlo con: + + sudo ./install-site.sh --default alaveteli alaveteli + +Si tiene problemas o consultas, pregunte en el [grupo de Google de + Alaveteli](https://groups.google.com/forum/#!forum/alaveteli-dev) o [informe de un + problema](https://github.com/mysociety/alaveteli/issues?state=open). + +## Qué hace el script de instalación + +Una vez ha finalizado el script, debería disponer de una copia funcional del sitio web, +accesible a través del nombre de host suministrado al script. Por tanto, para este ejemplo, podrá acceder al sitio desde un navegador en `http://alaveteli.10.10.10.30.xip.io`. El sitio funciona utilizando el servidor de aplicaciones Thin y el servidor web Nginx. Por defecto Alaveteli se instalará en `/var/www/[HOST]` dentro del servidor. + +El servidor también estará configurado para aceptar respuestas a correos de solicitud de información (simpre que el registro MX del dominio apunte al servidor). La gestión del correo entrante se configura utilizando Postfix como MTA. + +##¿Qué hacer a continuación? + +Consulte los [siguientes pasos]({{ page.baseurl }}/docs/installing/next_steps/). + + + diff --git a/es/docs/installing/vagrant.md b/es/docs/installing/vagrant.md new file mode 100644 index 000000000..451265c3b --- /dev/null +++ b/es/docs/installing/vagrant.md @@ -0,0 +1,70 @@ +--- +layout: es/page +title: Vagrant +--- +# Alaveteli con Vagrant + +<p class="lead"> +Vagrant proporciona un método sencillo para configurar entornos de desarrollo virutales; para +obtener más información, consulte <a href="http://www.vagrantup.com">el sitio web de Vagrant</a>. +Incluimos un archivo Vagrantfile de ejemplo en el repositorio, que ejecuta el +<a href="{{ page.baseurl }}/docs/installing/script/">script de instalación</a> automáticamente. +</p> + +Esta es solo una de las [diversas maneras de instalar Alaveteli]({{ page.baseurl }}/docs/installing/). + +Los pasos incluidos utilizarán Vagrant para crear un entorno de desarrollo +donde podrá poner en funcionamiento la suite de pruebas y el servidor de desarrollo, así +como modificar la base del código. + +El proceso básico consiste en crear una máquina virtual de base y después proporcionarle +los paquetes de software y la configuración que necesita. Los +scripts suministrados crearán una máquina virtual de Vagrant basada en la edición de servidor de +Ubuntu 12.04 LTS que contiene todo lo necesario para trabajar con Alaveteli. + +1. Obtenga una copia de Alaveteli desde GitHub y cree la implementación de Vagrant. + Esta acción abastecerá al sistema y puede necesitar cierto tiempo, normalmente un mínimo + de 20 minutos. + + # en su máquina + $ git clone git@github.com:mysociety/alaveteli.git + $ cd alaveteli + $ git submodule update --init + $ vagrant --no-color up + +2. Ahora debería poder utilizar SSH en el sistema operativo invitado de Vagrant y arrancar + la suite de pruebas: + + $ vagrant ssh + + # Ahora se halla en un terminal de la máquina virtual + $ cd /home/vagrant/alaveteli + $ bundle exec rake spec + + +3. Ejecute el servidor de Rails y visite la aplicación en el navegador de su host, en + http://10.10.10.30:3000 + + # en el terminal de la máquina virtual + bundle exec rails server + +## ¿Qué hacer a continuación? + +Consulte los [siguientes pasos]({{ page.baseurl }}/docs/installing/next_steps/). + +## Personalice la implementación de Vagrant + +El archivo Vagrantfile permite la personalización de algunos aspectos de la máquina virtual. Consulte las opciones de personalización en el archivo [`Vagrantfile`](https://github.com/mysociety/alaveteli/blob/master/Vagrantfile#L30) ubicado en el nivel superior del repositorio de Alaveteli. + +Las opciones pueden configurarse bien indicando como prefijo el comando de Vagrant o bien +exportándolo al entorno. + + # Prefijo con el comando + $ ALAVETELI_VAGRANT_MEMORY=2048 vagrant up + + # Exportación al entorno + $ export ALAVETELI_VAGRANT_MEMORY=2048 + $ vagrant up + +Ambos casos producen el mismo resultado, pero la exportación mantendrá la variable durante la duración completa de su sesión. + |