Pericles (el servidor Ensim de Pert) requiere a veces algunas tareas como administrador del equipo, esto es, el root real del equipo (no el administrador de un sitio virtual).

Trato de ir poniéndolas acá como referencia, ya que es posible que las necesitemos para distintas cosas.

Variables de entorno para identificar sitios virtuales

Esto es un yeite para facilitar la identificación en variables de entorno de los datos (directorio, uid, gid) correspondientes a un sitio virtual.

El objetivo aquí es poner en variables de entorno datos relativos a un sitio virtual para usarlos en el resto de las tareas:

DOMINIO=<poner acá el nombre del dominio correspondiente al site>

SITE=`grep "^${DOMINIO} *=" /etc/virtualhosting/mappings/domainmap \
    | sed -e 's/ //g' | cut -d= -f2`
PWDATA=`grep :/home/virtual/${SITE}/fst: /etc/passwd`
USERID=`echo ${PWDATA} | cut -d: -f 3`
GROUPID=`echo ${PWDATA} | cut -d: -f 4`
VSROOT="/home/virtual/${SITE}/fst/"

Comandos faltantes en /usr/bin

Hay algunos comandos que no aparecen en el /usr/bin de los sitios virtuales aunque el Ensim los tiene en el template. Los comandos que normalmente se pueden utilizar son los que están en /home/virtual/FILESYSTEMTEMPLATE/siteinfo/usr/bin.

Para agregarlos al sitio virtual (sin ocupar espacio físico), seleccionar los comandos que se deseen de los que hay en /home/virtual/FILESYSTEMTEMPLATE/siteinfo/usr/bin pero no en el /usr/bin del sitio virtual, crear las variables de entorno y después hacer lo siguiente:

COMANDOS=<lista de los comandos que se quieren copiar al sitio virtual, separados por espacios>

(por ejemplo: COMANDOS="wget patch rsync") y luego

for FILE in ${COMANDOS}
do
  ln /home/virtual/FILESYSTEMTEMPLATE/siteinfo/usr/bin/${FILE} ${VSROOT}/usr/bin
done

Permisos dentro de un chroot

Ownership de /usr/local

Lamentablemente, los permisos en los /usr/local de los servidores virtuales en el Ensim no permiten que el administrador del sitio pueda instalarse su propio software (el software que el Ensim instala para todos los sitios virtuales, lo pone en /usr).

Para resolver esto, lo que hacemos es cambiar el ownership del /usr/local y sus subdirectorios. Ya que estamos, como algunos paquetes ponen el man en /usr/local/share/man (que ya está creado en el sitio virtual) y otros en /usr/local/man, creamos un link simbólico para que ambos apunten al mismo lugar.

Crear las variables de entorno y hacer:

cd ${VSROOT}/usr/local
ln -s share/man .
find . -exec chown ${USERID}.${GROUPID} {} \;

Ownership de /var/www

Para algunos paquetes que se ejecutan vía web y reescriben los paths (e.g. algunas configuraciones de MoinMoin), también es necesario que el /var/www sea propiedad del administrador del sitio (si no, el suexec de apache da un error y no se ejecuta la aplicación).

En este caso, crear las variables de entorno y hacer:

chown ${USERID}.${GROUPID} ${VSROOT}/var/www

Cambiar los URL de administración del sitio

En general, en ensim, para todos los dominios virtuales, el URL http://www.example.com/admin hace un redirect a la página de administración del sitio de ensim y http://www.example.com/user hace un redirect a la página de administración del usuario de ensim... El problema es si el path /admin es necesario dentro del sitio... por ejemplo, el Drupal lo tiene como path de administración hardwired.

Para cambiar esto, hay que hacer lo siguiente:

ORIPATH='admin'
NEWPATH='ADMIN'
sed -e "s#/${ORIPATH}/#/${NEWPATH}/#" </etc/httpd/conf/virtual/${SITE} >/tmp/${SITE}
mv /tmp/${SITE} /etc/httpd/conf/virtual/${SITE}

/etc/init.d/httpd reload

No sé qué pasa cuando se modifica una instalación de ensim... es posible que esto se pierda...

TareasEnPericlesComoAdministrador (última edición 2008-01-29 14:14:42 efectuada por localhost)