Monthly Archives: November 2008 - Page 2

Instalación y configuración de ISP

Hace algún tiempo publiqué esta serie de links en el blog del Web & Beer. Me pareció un recurso bastante interesante y digno de ser compartido también en este espacio. En aquel momento me enteré de esto por un post de Linuxeando, donde decía que HowToForge, había publicado una serie de guías para configurar un ISP (un servidor completo que ofrezca todos los servicios necesarios para un ISP y alojamiento web: servidor web Apache con SSL, servidor de correo Postfix con SMTP-AUTH y TLS, servidor DNS con BIND, servidor FTP con Proftpd, servidor MySQL, Dovecot POP3/IMAP, Quota, Firewall, etc.) en distintas distribuciones de Linux.

También hace un tiempo salió un documento de Implementación de servidores con GNU/Linux por Joel Barrios Dueñas.

Y por último, para no dejar afuera otros sistemas basados en Unix, está esta guía para la instalación y configuración de un ISP en FreeBSD.

Custombuild en Directadmin

Custombuild es un script muy completo e interesante que se distribuye con el panel de control Directadmin para instalar y actualizar los distintos servicios que el panel puede administrar.

Directadmin Control Panel

Directadmin Control Panel

¿Por qué usar custombuild?

Básicamente porque es la forma de instalar los distintos servicios de manera que el Directadmin pueda gestionarlos. Esto incluye, fundamentalmente, el hecho de generar archivos de configuración iniciales y ubicarlos en las localizaciones adecuadas, para que el panel pueda administrar virtual hosts de Apache, cuentas de email, etc. Además custombuild permite mantener una configuración estándar en distintos servidores que usen Directadmin, lo cual simplifica el trabajo al momento de acceder a un nuevo equipo y tener que hacer alguna tarea de diagnóstico, upgrade o instalación. Por último, el script simplifica muchísimo el trabajo para el sysadmin, porque si bien no es un sistema completo de manejo de paquetes (como podría ser apt-get en Debian, los ports de FreeBSD, o el odioso yum de Red Hat/CentOS), sí resuelve algunas dependencias, encargandose de descargar y compilar las distintas librerías que va a requerir la aplicación para poder ser instalada.

¿Qué permite instalar/actualizar Custombuild?

  • Apache 1.3, 2.0 or 2.2
  • AWstats
  • Autoconf
  • Automake
  • cURL
  • Dovecot
  • Archivos de configuración de Exim
  • FreeType
  • GD
  • libiconv
  • libjpeg
  • libpng
  • libmcrypt
  • libmhash
  • mod_perl
  • MySQL
  • PHP (con o sin suPHP) 4, 5 or 6
  • ProFTPD
  • Webalizer
  • Zend Optimizer
  • Zlib

Y aplicaciones web como:

  • Atmail Open webmail
  • Roundcube webmail
  • Squirrelmail webmail
  • phpMyAdmin
  • UebiMiau webmail

¿Cómo instalar Custombuild?

cd /usr/local/directadmin
wget http://files.directadmin.com/services/custombuild/1.1/custombuild.tar.gz
tar xvzf custombuild.tar.gz
cd custombuild
./build

options.conf

El Custombuild funciona con un archivo de configuración llamado options.conf. Este archivo define algunos parámetros básicos para el funcionamiento del script, indicando qué versiones se va a instalar de cada programa, etc.

Después de editar el archivo options.conf, siempre es necesario correr el siguiente comando para actualizar las dependencias.

./build update_data

Por otro lado, la primera vez que se utiliza Custombuild es conveniente correr el siguiente comando, que descargará e instalará TODO con las opciones por default.

./build all d

¿Qué es cada opción del options.conf?

PHP:

  • default_php – Esta opción se utiliza cuando hay dos versiones de PHP en el sistema (4, 5, ó 6), para definir cual es la default. Por defecto este valor es igual a la última versión de PHP.
  • phpX_cli – instalar/actualizar PHP como CLI (opción default) al hacer “./build php” or”./build all”. Valores posibles yes/no (default: yes).
  • phpX_cgi – instalar/actualizar PHP como CGI (opción default) al hacer “./build php” or”./build all”. Valores posibles yes/no (default: no).
  • php_ini - actualizar el archivo de configuración de PHP al hacer “./build php-ini” o “./build all”. Valores posibles: yes/no (default: no).
  • php_ini_type - Esta opción define el tipo de php.ini a utilizar al momento de ejecutar “./build php-ini”. Valores posibles: dist/recommended (default: recommended).
  • zend - Instalar/actualizar Zend Optimizer al usar “./build zend” o “./build all”. Valores posibles: yes/no (default: no).

MySQL:

  • mysql - Versión de MySQL. Valores posibles: 4.1, 5.0, 5.1 (default: 5.0).
  • mysql_inst – instalar/actualizar MySQL al utilizar “./build mysql” or “./build all”. Valores posibles: yes/no (default: no).
  • mysql_backup - hacer backup de MySQL cada vez que se actualiza MySQL. Valores posibles: yes/no (default: yes).

Apache:

  • apache_ver - Versión de Apache. Valores posibles: 1.3, 2.0, 2.2 (default: 2.2).

Aplicaciones web:

  • phpmyadmin – instalar/actualizar phpMyAdmin al hacer “./build phpmyadmin” o “./build all”. Valores posibles: yes/no (default: yes).
  • atmail – instalar/actualizar Atmail Open webmail al hacer “./build atmail” o “./build all”. Valores posibles: yes/no (default: no).
  • squirrelmail - instalar/actualizar SquirrelMail webmail al hacer “./build squirrelmail” o “./build all”. Valores posibles: yes/no (default: yes).
  • roundcube – instalar/actualizar RoundCube webmail al hacer “./build roundcube” o “./build all”. Valores posibles: yes/no (default: yes).
  • uebimiau - instalar/actualizar UebiMiau webmail al hacer “./build uebimiau” o “./build all”. Valores posibles: yes/no (default: no).

Mail:

  • exim – instalar/actualizar Exim al hacer “./build exim” o “./build all”. Valores posibles: yes/no (default: no).
  • mail-header-patch – usar el patch del header de la función mail() de PHP al instalar/actualizar Valores posibles: yes/no (default: yes).
  • dovecot - instalar/actualizar Dovecot al hacer “./build dovecot” o “./build all”. Valores posibles: yes/no (default: yes).
  • eximconf – actualizar el archivo de configuración de exim (/etc/exim.conf) al hacer “./build exim_conf” o “./build all”. Valores posibles: yes/no (default: no).

Jailed shell:

  • jail - instalar/actualizar programas de jailed shell al hacer “./build apache”, “./build all_jail”. Valores posibles: yes/no (default: no).

FTP:

  • proftpd - instalar/actualizar ProFTPD al hacer “./build proftpd” o “./build all”. Valores posibles: yes/no (default: yes).

Estadísticas:

  • awstats - instalar/actualizar AWstats al hacer “./build awstats” o “./build all”. Valores posibles: yes/no (default: no).
  • webalizer - instalar/actualizar webalizer al hacer “./build webalizer” o “./build all”. Valores posibles: yes/no (default: yes).

Crontab:

  • cron - habilitar crontad para Custombuild, al usar “./build cron” para configurarlo. Valores posibles: yes/no (default: no).
  • email - definir notificaciones por email. Valores posibles: cualquier dirección de email (default: email@domain.com).
  • notifications - habilitar notificaciones por email para actualizaciones. Valores posibles: yes/no (default: yes).
  • updates – actualizar software/applicaciones automáticamente cuando hay actualizaciones disponibles. Valores posibles: yes/no (default: no).

CustomBuild:

  • custombuild - version del script CustomBuild que se quiere utilizar. Valores posibles: 1.1/1.2 (default: la versión instalada).
  • autover – descargar versions.txt cada vez que se ejecuta el comando “./build”.  Valores posibles: yes/no (default: no).
  • bold - habilitar/deshabilitar texto en negrita. Valores posibles: yes/no (default: yes).
  • clean – ejecutar “./build clean” cada vez. Valores posibles: yes/no (default: yes).
  • cleanapache – excluir al apache del “./build clean”. Valores posibles: yes/no (default: no).
  • clean_old_webapps - ejecutar “./build clean_old_webapps” cada vez. Valores posibles: yes/no (default: no).
  • fileserver – definir el servidor desde el cual descargar los archivos. “1″ significa files.directadmin.com y “2″ significa files4.directadmin.com server (Europa). Valores posibles: 1/2 (default: 1).

¿Cómo ejecutar Custombuild?

Para instalar todo:

./build all

Otras opciones:

./build apache
./build autoconf
./build automake
./build curl
./build cron
./build dovecot
./build exim_conf
./build freetype
./build iconv
./build icu
./build libjpeg
./build libpng
./build libtool
./build libxml2
./build libxslt
./build mcrypt
./build mhash
./build mod_perl
./build mysql
./build pcre
./build php
./build proftpd
./build rewrite_confs
./build update_versions
./build used_configs
./build versions
./build webalizer
./build zend
./build zlib

Aplicaciones:

./build phpmyadmin
./build atmail
./build roundcube
./build squirrelmail
./build uebimiau

Jailed shell:

./build all_jail
./build coreutils
./build shell
./build smtp_mail
./jail/jail_user.sh user

Borrar información vieja:

./build clean

Obtener la última versión del script y de la información:

./build update
./build update_script

Obtener la información para el script actual:

./build update_data

Funciones recomendadas sólo para usuarios experimentados:

./build php4-cli
./build php5-cli
./build php4-cgi
./build php5-cgi
./build todovecot

Se puede pasar un segundo argumento a los comandos:

./build <option> d : ejecutar la acción default
./build <option> y : responder "yes" a todas las preguntas
./build <option> n : responder "no" a todas las preguntas

Fuente: Directadmin Custombuild FAQ.

Traducción propia.

Solaris SMF

Este artículo fue publicado originalmente por mí en el blog de Web and Beer.

Sun Solaris 10

Sun Solaris 10

Solaris 10 incorpora SMF: Service Management Facility, que básicamente es un daemon que controla los servicios que corren en el sistema operativo. Su idea es reemplazar los scripts de /etc/init.d y /etc/rc.*.d, con una utilidad bastante más robusta y simple de configurar.

A partir de Solaris 10, entonces, vemos que muchos servicios que antes estaban en /etc/init.d ahora desaparecieron de allí y si revisamos el /etc/inittab vemos que una de las primeras cosas que hace es levantar el svc.startd que es el daemon que maneja los servicios de SMF. De hecho, dicen que ahora el boot es bastante más limpito, porque todos los mensajes de los servicios que se inician se van logueando en distintos lugares, y uno termina viendo algo así:

SunOS Release 5.10 Version Generic 64-bit
Copyright 1983-2004 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: demobox
NIS domain name is testlab.example.com
checking ufs filesystems

demobox console login:

En este link hay una Quickstart Guide muy interesante, donde muestra cómo se hacían las cosas en las versiones anteriores de Solaris y cómo deberían hacerse ahora con SMF: http://www.sun.com/bigadmin/content/selfheal/smf-quickstart.jsp

Subir y bajar el apache es tan sencillo como ejecutar los siguientes comandos:

Levantar:     svcadm enable network/http:apache2
Bajar:           svcadm disable network/http:apache2
Reiniciar:     svcadm restart network/http:apache2

Como podrán observar, los servicios se agrupan en unidades más “user-friendly” (o admin-friendly), en vez de ser archivos tirados en directorios (de hecho en Solaris siempre era más molesto que en Linux, porque el archivo debía estar indefectiblemente en /etc/init.d y con hard links en /etc/rc3.d – para el caso de servicios que levantaran en runlevel 3). Además se pueden configurar facilmente variables de entorno y otras cosas locas que se deben inicializar con el servicio.

Por otro lado, al haber un daemon constantemente corriendo, si el servicio no es deshabilitado por un “restarter” habilitado, el servicio se levanta automáticamente:

[root@BOCUNOCDWB04:~]# svcadm enable network/http:apache2
[root@BOCUNOCDWB04:~]# ps -ef |grep httpd
root 23319     1   3 13:38:59 ?           0:01 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23328 23319   0 13:39:02 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
root 23330 22786   0 13:39:04 pts/2       0:00 grep httpd
nobody 23327 23319   0 13:39:02 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
root 23322     1   0 13:39:01 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23326 23319   0 13:39:02 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23325 23319   0 13:39:02 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23324 23319   0 13:39:02 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
[root@BOCUNOCDWB04:~]# pkill httpd
[root@BOCUNOCDWB04:~]# ps -ef |grep httpd
root 23357     1   0 13:39:22 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23360 23351   0 13:39:22 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
root 23365 22786   0 13:39:22 pts/2       0:00 grep httpd
root 23351     1   2 13:39:20 ?           0:01 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23359 23351   0 13:39:22 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23361 23351   0 13:39:22 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23362 23351   0 13:39:22 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
nobody 23363 23351   0 13:39:22 ?           0:00 /usr/local/apache2/bin/httpd -k start -DSSL
[root@BOCUNOCDWB04:~]#

De la misma forma, si hay algún error al levantar el programa o el mismo se muere dejando algún error, el servicio es puesto en estado “maintenance”, para poder consultar posteriormente por qué no está corriendo.

[root@BOCUNOCDWB04:~]# svcs -xv network/http:apache2
svc:/network/http:apache2 (Apache 2 HTTP server)
State: maintenance since Mon 14 Jul 2008 01:37:39 PM COT
Reason: Start method failed repeatedly, last exited with status 1.
See: http://sun.com/msg/SMF-8000-KS
See: man -M /usr/apache2/man -s 8 httpd
See: /var/svc/log/network-http:apache2.log
Impact: This service is not running.
[root@BOCUNOCDWB04:~]#

Para configurar los servicios hay una consola a la que podemos acceder con svccfg.

[root@BOCUNOCDWB04:~]# svccfg
svc:> select network/http
svc:/network/http> select apache2
svc:/network/http:apache2> listprop
httpd                              application
httpd/stability                    astring  Evolving
httpd/ssl                          boolean  true
network                            dependency
network/entities                   fmri     svc:/milestone/network:default
network/grouping                   astring  require_all
network/restart_on                 astring  error
network/type                       astring  service
filesystem-local                   dependency
filesystem-local/entities          fmri     svc:/system/filesystem/local:default
filesystem-local/grouping          astring  require_all
filesystem-local/restart_on        astring  none
filesystem-local/type              astring  service
autofs                             dependency
autofs/entities                    fmri     svc:/system/filesystem/autofs:default
autofs/grouping                    astring  optional_all
autofs/restart_on                  astring  error
autofs/type                        astring  service
startd                             framework
startd/ignore_error                astring  core,signal
general                            framework
general/enabled                    boolean  true
start                              method
start/exec                         astring  “/lib/svc/method/http-apache2 start”
start/timeout_seconds              count    60
start/type                         astring  method
stop                               method
stop/exec                          astring  “/lib/svc/method/http-apache2 stop”
stop/timeout_seconds               count    60
stop/type                          astring  method
refresh                            method
refresh/exec                       astring  “/lib/svc/method/http-apache2 refresh”
refresh/timeout_seconds            count    60
refresh/type                       astring  method
restarter                          framework    NONPERSISTENT
restarter/transient_contract       count  restarter/logfile                  astring  /var/svc/log/network-http:apache2.log
restarter/contract                 count    299148
restarter/start_pid                count    23339
restarter/start_method_timestamp   time     1216060760.150109000
restarter/start_method_waitstatus  integer  0
restarter/auxiliary_state          astring  none
restarter/next_state               astring  none
restarter/state                    astring  online
restarter/state_timestamp          time     1216060760.155996000
restarter_actions                  framework    NONPERSISTENT
restarter_actions/restart          integer
restarter_actions/maint_off        integer
svc:/network/http:apache2>

La forma en que el daemon manejará los servicios se define en un script que tiene “métodos”, que serán invocados por el daemon. Estos scripts están en /lib/svc/methods, y el daemon los llama por ejemplo de esta forma:

/lib/svc/methods/http-apache2 start 

Adentro el método consulta algunas variables del servicio y lo levanta. El script es muy similar a los de /etc/init.d.

Con svcs se listan los servicios.
Con svcs -l se puede ver el estado actual de un determinado servicio. Además podes se puede ver el proceso principal y sus hijos:

 % svcs -p network/smtp:sendmail
    STATE          STIME    FMRI
    online         18:20:30 svc:/network/smtp:sendmail
     18:20:30      655 sendmail
     18:20:30      657 sendmail

Y con svcs -x se puede ver por qué un determinado servicio falló.

Tiene muchas más cosas locas. Yo creo que debe tener alguna forma de controlar servicios remotos, porque cada servicio tiene una URI que llaman FMRI (Fault Managed Resource Identifier), que puede ser algo así:

  • svc://localhost/system/system-log:default
  • svc:/system/system-log:default
  • system/system-log:default

Y en la primera opción justamente se define una location que en ese caso es localhost, pero supongo que uno podría poner una IP.

También hay otras cosas locas para el manejo de los runlevels del SO. Podés definir milestones que, si no entendí mal, serían como runlevels custom para los cuales vos podés definir qué servicios corren.

Más información sobre SMF en el System Administration Guide de Solaris: http://docs.sun.com/app/docs/doc/817-1985

Particularmente en estos dos capítulos:
http://docs.sun.com/app/docs/doc/817-1985/hbrunlevels-25516?a=view
http://docs.sun.com/app/docs/doc/817-1985/faauf?a=view

Cheat-sheet de  SMF: http://www2.petervg.nl/quick_reference/SolarisSMF.pdf

Introducción

¿Hace falta una introducción? Probablemente el título del blog ya lo diga todo, pero valga este pequeño post como introducción, declaración de principios, fundamentación y sobre todo bienvenida a nuestros visitantes.

“tail -f” es quizás uno de los comandos (específicamente con ese parámetro) más utilizado cualquier sysadmin. El nombrarlo remite instantáneamente a una serie de símbolos de la cultura del administrador de sistemas con los cuales todos nos identificamos.

El objetivo de este blog es ofrecer noticias y recursos para la comunidad de sysadmins, facilitando un poco nuestras vidas y permitiendo divertirnos y disfrutar de lo que hacemos.

En este nuevo espacio que inauguramos aquí, pretendemos ir volcando artículos sobre distintos sistemas operativos basados en Unix, fundamentalmente, Linux, FreeBSD y Solaris, pero siempre abiertos a otros. La idea no es revivir viejas competencias y discusiones que llevan a enfrentamientos interminables, sino compartir experiencias para que nuestro trabajo con cualquiera de ellos sea lo menos traumático posible e incluso aumentar los conocimientos de la propia práctica.