Esta página se está traducido el 2014-12-08.
Es posible que la versión inglés se actualizaba desde luego.
Instalación manual
Las siguientes instrucciones describen el proceso paso a paso para la instalación de Alaveteli. No es obligatorio hacerlo de este modo, normalmente resulta más sencillo utilizar el script de instalación o el AMI EC2 de Amazon.
Existen otras maneras de instalar Alaveteli.
- Los comandos incluidos en este manual requieren permisos de usuario root.
- Los comandos deben ejecutarse en el terminal o mediante SSH.
Configuración el sistema operativo
Sistema operativo objetivo
Estas instrucciones corresponden a una versión de 64 bits de Debian Debian 7 (Wheezy) 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.
Defina la localización
Debian Wheezy
Siga el manual de Debian 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 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 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
utilizando apt
.
Añada la clave GPG del repositorio de paquetes de Debian de mySociety:
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.
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
Otras plataformas
Si utiliza otra plataforma basada en Linux, puede instalar, opcionalmente, estas dependencias de forma manual, como se describe a continuación:
-
Si desea que los usuarios puedan obtener archivos PDF agradables como parte del archivo comprimido descargable del historial de su solicitud, instale wkhtmltopdf. 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. -
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 o Ubuntu 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 develop
.
pushd /var/www/alaveteli
sudo -u alaveteli git checkout 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)
# 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 «|
».
gem install bundler --no-rdoc --no-ri
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.
En el modo de desarrollo el correo es gestionado por mailcatcher
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.
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
chown alaveteli:alaveteli /var/www/alaveteli/config/{database,general}.yml
chmod 640 /var/www/alaveteli/config/{database,general}.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, 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
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». Al ejecutar rails-post-deploy
(consulte la información siguiente), este tema se instala automáticamente.
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.
RAILS_ENV=production
. Utilice
RAILS_ENV=development
si está instalando Alaveteli para
efectuar cambios en el código.
Configure el servidor de aplicaciones
Alaveteli puede funcionar con numerosos servidores de aplicaciones. mySociety recomienda el uso de Phusion Passenger (alias mod_rails) o 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.example > /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.example > /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.example
. Este script envía correos a usuarios suscritos a actualizaciones del sitio, denominados 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.example > /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
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 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
nginx-ssl.conf.example
establece la ruta de Alaveteli como /var/www/alaveteli/alaveteli
; necesitará modificarla manualmente a /var/www/alaveteli
o a la raíz de su instalación de Alaveteli.
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
nginx.conf.example
establece la ruta de Alaveteli como /var/www/alaveteli/alaveteli
; necesitará modificarla manualmente a /var/www/alaveteli
o a la raíz de su instalación de Alaveteli.
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.
¿Qué hacer ahora?
Consulte los siguientes pasos.
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, según la gravedad del problema, pero lo ideal sería que intentara averiguar la causa del error.
config/rails_env.rb
, utilizado para forzar el entorno de rails en producción, y editar su archivo .bundle/config
para eliminar la línea BUNDLE_WITHOUT
, que excluye las dependencias de desarrollo. Una vez hecho esto, como usuario de Alaveteli, ejecute la instalación bundle install
. También necesitará convertir Alaveteli en propietario de /var/www/alaveteli/log/development.log
y llevar a cabo las migraciones de bases de datos.
chown alaveteli:alaveteli /var/www/alaveteli/log/development.log
sudo -u alaveteli bundle exec rake db:migrate
Debería haber podido ejecutar las pruebas. No olvide restaurar config/rails_env.rb
cuando haya terminado. Probablemente verá algunos errores de procesos cron, ya que se estarán ejecutando en el modo de desarrollo.
-
No aparecen los correos entrantes en mi instalación de Alaveteli
Consulte el manual general de solución de problemas 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 paquetelibdbd-pg-ruby
.Pruebe actualizando la instalación
pg
de su sistema o instalando el paquete gem pg congem 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 entornotest
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 queelinks
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 para obtener más información.
-
Recibo
rake: command not found
al ejecutar el script posterior a la instalaciónEl 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 ejecutarrake
(necesario para los despliegues), deberá utilizar un comando similar a este:ln -s /usr/lib/ruby/gems/1.8/bin/rake /usr/local/bin/