Tabla de Contenidos
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:
Para cada path que queremos cambiar (admin o user) poner el nombre original en una variable de entorno y el nuevo nombre que queremos que use en otra, y reemplazarlo. Por ejemplo, para cambiar "admin" por "ADMIN", de modo tal que la página de administración del sitio ensim quede en http://www.example.com/ADMIN, crear las variables de entorno y después 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}- Para que lo anterior sea efectivo hay que re-cargar la configuración del apache:
/etc/init.d/httpd reload
No sé qué pasa cuando se modifica una instalación de ensim... es posible que esto se pierda...