5. Estrategias para entornos pequeños y de solo lectura

En la Sección 3, “El subsistema rc y los sistemas de archivos de solo lectura”, se indicó que el sistema de archivos /var construido por /etc/rc.d/var y la presencia de un sistema de archivos raíz montado en modo solo lectura causa problemas con muchos paquetes de software utilizados en FreeBSD. En este artículo, se proporcionarán sugerencias para ejecutar con éxito cron, syslog, la instalación de ports y el servidor web Apache.

5.1. Cron

Tras el arranque, /var será llenado con /etc/rc.d/var usando la lista disponible en /etc/mtree/BSD.var.dist, por lo que cron, cron/tabs, at y algunos otros directorios estándar son creados.

Sin embargo, esto no resuelve el problema de mantener las cron tabs entre los reinicios. Cuando el sistema se reinicie, el sistema de archivos /var cargado en memoria desaparecerá y todas las cron tabs que tenga también desaparecerán. Por lo tanto, una solución sería crear las cron tabs para los usuarios que las necesiten; monte su sistema de archivos raíz / como lectura-escritura y copie las cron tabs a un lugar seguro, como /etc/tabs, a continuación, añada una entrada al final de /etc/rc.initdiskless que copie estas crontabs a /var/cron/tabs después de que el directorio se cree durante el inicio del sistema. Es posible que también deba añadir una entrada que cambie los modos y permisos en los directorios creados y en los archivos copiados con /etc/rc.initdiskless.

5.2. Syslog

syslog.conf especifica las ubicaciones de ciertos ficheros de log que hay en /var/log. Estos archivos no son creados por /etc/rc.d/var durante la inicialización del sistema. Por lo tanto, en algún lugar de /etc/rc.d/var, justo después de la sección que crea los directorios en /var, tendrá que añadir algo como esto:

# touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages
# chmod 0644 /var/log/*

5.3. Instalación de ports

Antes de analizar los cambios necesarios para utilizar con éxito el árbol de ports, es necesario recordar que su sistema de archivos en el medio flash es de solo lectura. Dado que es de solo lectura, necesitará montarlo temporalmente en modo lectura-escritura utilizando la sintaxis que se muestra en la Sección 3, “El subsistema rc y los sistemas de archivos de solo lectura”. Siempre debe volver a montar estos sistemas de archivos en modo solo lectura cuando haya terminado cualquier mantenimiento - las escrituras innecesarias en el medio flash podrían acortar considerablemente su vida útil.

Para que sea posible entrar en el directorio de ports y ejecutar con éxito el comando make install, debemos crear un directorio para los paquetes en un sistema de archivos que no se encuentre en la memoria para que mantenga nuestros paquetes durante los reinicios. Como es necesario montar sus sistemas de archivos en modo lectura-escritura para la instalación de un paquete, es apropiado suponer que también se puede usar un área en el medio flash para escribir la información del paquete.

Primero, cree el directorio para la base de datos de los paquetes. Normalmente se encuentra en /var/db/pkg, pero no podemos colocarlo allí ya que desaparecerá cada vez que se inicie el sistema.

# mkdir /etc/pkg

Ahora, agregue una línea al archivo /etc/rc.d/var que enlace /etc/pkg a /var/db/pkg. Un ejemplo:

# ln -s /etc/pkg /var/db/pkg

Ahora, cada vez que monte su sistema de archivos en modo lectura-escritura e instale un paquete, el comando make install funcionará, y la información del paquete se escribirá correctamente en /etc/pkg (porque el sistema de archivos, en ese momento, estará montado en modo lectura-escritura) que siempre estará disponible para el sistema operativo como /var/db/pkg.

5.4. Servidor Web Apache

Nota:

Los pasos de esta sección solo son necesarios si Apache está configurado para escribir su pid o registro log fuera de /var. Por defecto, Apache guarda su archivo pid en /var/run/httpd.pid y sus registros de log en /var/log.

Se supone que Apache guarda sus archivos de logs en un directorio apache_log_dir fuera de /var. Cuando este directorio reside en un sistema de archivos de solo lectura, Apache no puede guardar ningún archivo de log y puede tener problemas para funcionar. Si es así, debe agregar un nuevo directorio al listado de directorios en /etc/rc.d/var a crear en /var y vincular apache_log_dir a /var/log/apache. También es necesario establecer permisos y propietarios a este nuevo directorio.

En primer lugar, agregue el directorio log/apache a la lista de directorios que se crearán en /etc/rc.d/var.

En segundo lugar, agregue estos comandos a /etc/rc.d/var después de la sección de creación del directorio:

# chmod 0774 /var/log/apache
# chown nobody:nobody /var/log/apache

Por último, elimine el directorio apache_log_dir y reemplácelo por un enlace:

# rm -rf apache_log_dir
# ln -s /var/log/apache apache_log_dir

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.

Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.