Instalando Aegir


http://groups.drupal.org/aegir-hosting-system

¿Que es Aegir?

versión sencilla
Ægir es un conjunto de módulos para Drupal que le permiten administrar varios sitios en Drupal de forma simúltanea y centralizada.
Logra esto al brindarle mediante una interface sencilla basada en Drupal el control de la totalidad de su red de sitios. Cada sitio es un nodo de Drupal, por lo que crear un nuevo sitio se reduce a crear un nuevo nodo de tipo Sitio. Para actualizar sitios o hacerles un respaldo, solo deberá invocar las opciones disponibles, mediante mecanismos similares a los que utiliza cuando trabaja con nodos.

versión técnica
Aegir es un sistema de administración de instancias distribuidas que permite a usuarios autorizados manejar múltiples instalaciones de Drupal en uno o mas servidores, a través de una interface central basada en Drupal también. Esta diseñada para ofrecer solución a muchos de los problemas que los administradores enfrentan comunmente al lidiar con soluciones de hospedaje masiva. Proporciona las bases para el desarrollo personalizado y la administración de sitios en Drupal y servicios relacionados.

¿Que es Aegir?

En la mitología nórdica, Ægir era el dios de los océanos. Por lo que si Drupal es una gota de agua, Ægir es la deidad de largas masas de agua.

¿Qué necesito para correr Aegir?

  • Un sistema capaz de ejecutar Drupal.
  • Un sistema operativo basado en Unix. La mayor parte de la funcionalidad que ofrece este sistema tiene lugar en el back-end, a través de programación en la linea de comando. Algunas de las funcionalidades de las que hace uso este sistema (como los enlaces simbólicos) no se encuentran disponibles para los usuarios en Windows. No existen planes actualmente de proporcionar soporte para Windows.
  • Su propio servidor. El nivel de acceso requerido para poder configurar este sistema esta muy por encima de las posibilidades que ofrecen los actuales planes de hospedaje compartido.

Cuales son los componentes de Aegir

Existen tres componentes principales de este sistema

  • Provision. Proporciona el sistema de back end utilizado para las tareas a nivel del sistema operativo tales como la creación de archivos de configuración, el manejo de bases de datos y los archivos de respaldo.
  • Hosting. Proporciona el front end para la creación y el mantenimiento de los sitios en Drupal. Cada uno de sus sitios será mapeado a los tipos de nodo proporcionados por este módulo. También se encarga de la cola de tareas enviadas al backend y la configuración del sistema de hospedaje.
  • Hostmaster. Brinda el enlace entre la funcionalidad del front end del hosting y el back end del provisioning logrando un paquete único. Se encarga de la inicialización y auto-detección de los parámetros iniciales de configuración y lo dirige hacia el amigable asistente de instalación. Para comenzar a utilizar el sistema Aegir, usted deberá instalar un nuevo sitio utilizando el perfil hostmaster, el cual utilizara entonces para administrar los sitios que hospede.

Instalando aegir
http://www.developmentseed.org/blog/2009/may/20/aegir-scratch-installing...
comandos y screencast

Instalación de los paquetes requeridos

(
# mantenimiento básico del servidor
sudo apt-get update;
sudo apt-get upgrade;

# Específico para este servidor
sudo apt-get install openssh-server;
# se puede utilizar postfix, el requerimiento real es tener un MTA
sudo apt-get install sendmail;

# Componentes requeridos
sudo apt-get install wget cvs;
sudo apt-get install mysql-server mysql-client;
sudo apt-get install apache2;
sudo apt-get install php5 php5-cli php5-mysql;

# Esto solo es necesario si vamos a utilizar un dominio local en nuestro server
sudo apt-get install bind9;
)

Configurando el servicio de DNS (bind)
Esto nos permitira establecer un entorno de prueba. Se va a utilizar el dominio *.local para los sitios que se van a crear mediante el Aegir.

sudo vim /etc/bind/named.conf.local &&
sudo vim /etc/bind/db.local &&
sudo /etc/init.d/bind9 restart

sudo vim /etc/resolv.conf &&
sudo vim /etc/dhcp3/dhclient.conf &&
sudo dhclient

Probamos que el servidor de DNS este resolviendo bien con  un hostname cualquiera ...

ping random.local

Estos archivos son modificados:

nota: descomentarear la linea en /etc/bind/named.conf

include "/etc/bind/named.conf.local";

si estuviera comentareada con "//".

named.conf.local

zone "local" {
type master;
file "/etc/bind/db.localdomain";
};

db.localdomain

local. 7200 IN SOA local. root.local. (
   2009062501 ; Serial
   15 ; Refresh every 15 minutes
   86400 ; Retry
   2419200 ; Expire
   604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN MX 10 localhost.
@ IN A 127.0.0.1
IN A 127.0.0.1
*.local. IN A 127.0.0.1

dhclient.conf

supersede domain-name "local";
prepend domain-name-servers 127.0.0.1;

resolv.conf

domain local
nameserver 127.0.0.1
nameserver 200.42.0.111
nameserver 200.42.97.111
nameserver 200.42.97.110
nameserver 200.42.0.110
nameserver 172.20.2.201

Crear el usuario aegir

sudo mkdir /var/aegir
sudo adduser aegir --home /var/aegir &&
su - aegir

Ejemplo:

osvaldo@vostro:~$ sudo adduser aegir --home /var/aegir
Adding user `aegir' ...
Adding new group `aegir' (1002) ...
Adding new user `aegir' (1002) with group `aegir' ...
Creating home directory `/var/aegir' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for aegir
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [y/N] y

Ahora iniciamos sesión como el usuario aegir:

osvaldo@vostro:~$ su - aegir
Password:
aegir@vostro:~$

Descargar el aegir
NOTA: Los siguiente comandos fueron válidos en el momento en que se redacto este documento. Dichos comandos pueden haber variado. Consulte el archivo INSTALL.txt de la ultima versión liberada de Aegir.

(
export CVSROOT=:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib
cvs login

# Descargar Drush
cvs -z6 co -d drush -rDRUPAL-6--2-0-RC1 contributions/modules/drush

# Descargar el modulo provision
mkdir ~/.drush
cvs -z6 co -d .drush/provision -rDRUPAL-6--0-2-RC1 contributions/modules/provision

# Descargar el hostmaster install profile
cvs -z6 co -d hostmaster -rDRUPAL-5--0-2-RC1 contributions/profiles/hostmaster
mkdir hostmaster/modules
mkdir hostmaster/themes

# Descargar hosting front end
cvs -z6 co -d hostmaster/modules/hosting -rDRUPAL-5--0-2-RC1 contributions/modules/hosting

# Descargar componente opcionales, el tema eldir y el admin_menu
cvs -z6 co -d hostmaster/themes/eldir -rDRUPAL-5--0-2-RC1 contributions/themes/eldir
~/drush/drush.php dl admin_menu-5.x-2.8 --destination=hostmaster/modules
)

Se veria algo asi:

Logging in to :pserver:anonymous@cvs.drupal.org:2401/cvs/drupal-contrib
cvs login: CVS password file /var/aegir/.cvspass does not exist - creating a new file
cvs checkout: Updating drush
U drush/README.txt
U drush/drush
U drush/drush.bat
U drush/drush.php
U drush/example.drush.inc
U drush/example.drushrc.php
cvs checkout: Updating drush/commands
cvs checkout: Updating drush/commands/core
...
...
...
U hostmaster/themes/eldir/images/page.png
U hostmaster/themes/eldir/images/sprite.png
Project admin_menu (5.x-2.8) downloaded to hostmaster/modules/. [success]
aegir@vostro:~$

Configurar Apache - Crear un virtual host

(
mkdir -p ~/config/vhost.d
cp hostmaster/apache2.conf.txt ~/config/vhost.d/aegir.local
vim ~/config/vhost.d/aegir.local
)

cambiar la linea 25

ServerName aegir.example.com

por esta:

ServerName aegir.local

Descargar Drupal
Para este paso aprovechamos las ventajas que nos ofrece el comando drush. Descargamos Drupal para el directorio que habiamos especificado como raiz en el archivo del virtual host

(
drush/drush.php dl drupal-5.18
mv drupal-5.18 drupal-5.x
mv hostmaster drupal-5.x/profiles/
)

Se veria asi:

aegir@vostro:~$ (
/> drush/drush.php dl drupal-5.18
/> mv drupal-5.18 drupal-5.x
/> mv hostmaster drupal-5.x/profiles/
/> )
Project drupal (5.18) downloaded to /var/aegir/. [success]

Nota: En el momento en que se redacta este documento, el frontend aún requeria Drupal 5. Esta situación estaba justo por cambiar (noticia cortesía de anarcat) y una versión para Drupal 6 estaba justo por liberarse.

Configurando Apache 
Habilitando los módulos requeridos y la directiva Include

Los pasos anteriores se realizaron como el usuario aegir. Salga de dicha sesión como usuario aegir y ejecute los comandos requeridos.

En Ubuntu/Debian, el archivo de configuración del Apache es /etc/apache2/apache2.conf. Este archivo no se debe modificar pues las actualizaciones del Apache lo modifican de ser necesario. Para garantizar que sus modificaciones no se pierdan en el caso de una actualización, deberá utilizar el archivo httpd.conf.
Para otros sistemas operativos el archivo a modificar pudiera variar.

logout
(
sudo a2enmod php5
sudo a2enmod rewrite
sudo vim /etc/apache2/httpd.conf
sudo /etc/init.d/apache2 restart
)

Archivos modificados :

httpd.conf
Include /var/aegir/config/vhost.d/*

Configurando MySQL - Creando la base de datos para el hostmaster y su cuenta de usuario

(
mysqladmin -uroot -psecreto create hostmaster
echo "GRANT ALL ON hostmaster.* TO 'hostmaster'@'localhost' IDENTIFIED BY 'secreto'" |
mysql -uroot -psecreto hostmaster
)

Configurando PHP - Definiendo el limite de memoria
(este paso es opcional, pero nunca esta de más ;)

(
sudo vim /etc/php5/cli/php.ini
sudo vim /etc/php5/apache2/php.ini
sudo /etc/init.d/apache2 restart
)

Se incrementó el límite de 32M a 64M.

;memory_limit = 32M ; Maximum amount of memory a script may consume (32MB)
memory_limit = 64M ; Maximum amount of memory a script may consume (16MB)

Cambiar los permisos del archivo settings.php
(para la instalacion del hostmaster)

sudo chmod 777 /var/aegir/drupal-5.x/sites/default/settings.php

Iniciar la instalación del aegir
Deberá acceder a la url del sitio para comenzar la instalación del frontend, que como tal, consiste en instalar un drupal 5 eligiendo el Hostmaster profile.

http://aegir.local

Una vez terminada la instalación del sitio, recuerde eliminar los permisos de escritura del archivo de configuración

sudo chmod 644 /var/aegir/drupal-5.x/sites/default/settings.php

Asistente de instalación

El instalador de aegir ofrece un asistente que lo guiará paso a paso. Cada uno con documentación disponible sobre los comandos a ejecutar en cada página. Algunos de estos pasos incluyen:

Adicionar el usuario aegir al grupo www-data

sudo adduser aegir www-data

Quedaría asi:

root@vostro:/etc/apache2# sudo adduser aegir www-data
Adding user `aegir' to group `www-data' ...
Adding user aegir to group www-data
Done.

Configurando sudo
Otorgarle al usuario aegir permisos para reiniciar el apache.

sudo visudo

Adicionar al final la siguiente linea :

aegir ALL=NOPASSWD: /usr/sbin/apache2ctl

Configurar MySQL 
Adicionar una cuenta con permisos de superusuario.

Conectese al mysql como usuario administrador (root):

mysql -uroot -psecreto mysql;

Nota: En este ejemplo la contraseña del usuario root es la palabra "secreto". Utilice la apropiada en su caso.

Ejecute entonces el comando:

GRANT ALL PRIVILEGES ON *.* TO 'aegir'@'%' IDENTIFIED BY 'secreto' WITH GRANT OPTION;

Hosting setup

su - aegir
cd /var/aegir/drupal-5.x
/var/aegir/drush/drush.php hosting setup

Resultado:

root@vostro:/etc/apache2# su - aegir
aegir@vostro:~$ cd /var/aegir/drupal-5.x
aegir@vostro:~/drupal-5.x$ /var/aegir/drush/drush.php hosting setup
php '/var/aegir/.drush/provision' hosting dispatch --root='/var/aegir/drupal-5.x'Dispatch command was run successfully [success]

Puede ejecutar el comando hosting dispatch manualmente

~/drush/drush.php --root=/var/aegir/drupal-5.x hosting dispatch

Se recomienda adicionarla como una tarea en el crontab

crontab -e
*/1 * * * * (php /var/aegir/drush/drush.php --root=/var/aegir/drupal-5.x hosting dispatch)

Descargar una nueva plataforma

~/drush/drush.php dl drupal-6.12

Resultado:

aegir@vostro:~$ ~/drush/drush.php dl drupal-6.12
Project drupal (6.12) downloaded to /var/aegir/. [success]
aegir@vostro:~$