Configurar servicios de red para su inicio automático.
Introducción
Comentaremos en esta sección como configurar el inicio automático genérico de servicios en Redhat / Centos 7. Los paquetes y servicios necesarios para cada aplicación se verán en cada apartado de instalación y configuración correspondiente (apache, nfs,…).
En Redhat 7 / Centos 7 se ha sustituido SysVinit por Systemd por tanto cambia la forma de gestionar el inicio de los servicios. Si usamos los antiguos comandos “service” veremos que la mayoría funcionaran ya que el sistema se encarga de enlazarlos a comandos Systemd y nos avisa al respecto pero no tenemos garantía de que todos funcionen y cuanto antes nos acostumbremos a Systemd mejor.
[]# service NetworkManager stop
Redirecting to /bin/systemctl stop NetworkManager.service
No vamos a hacer aquí un tutorial de Systemd ya que no es el caso y ya existen estupendos tutoriales al respecto (ver referencias al final de este artículo). Nos centraremos exclusivamente en ver como se gestionan los servicios y como se configuran para su inicio automático.
Para la gestión de servicios se usará el comando systemctl
Configuración de inicio automático para servicios.
Activar o desactivar el inicio automático es muy sencillo y además el comando nos proporcionan información adicional de los enlaces simbólicos que crea / elimina.
[]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
[]# systemctl disable httpd
rm '/etc/systemd/system/multi-user.target.wants/httpd.service'
NOTA: Cuando trabajamos con servicios sería más correcto añadir “.service” tras el nombre de este en la forma systemctl enable httpd.service
. El comando systemctl interpreta que si no especificamos nada (unidad) por defecto será un servicio, por eso funciona correctamente.
Podemos verificar si un servicio está activado para el inicio o no con is-enabled
[]# systemctl is-enabled httpd
disabled
[]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
[]# systemctl is-enabled httpd
enabled
Otras operaciones básicas con servicios.
El resto de operaciones básicas con servicios usarán las palabras clave habituales stop
, start
, restart
, reload
. Mediante is-active”
también averiguamos si un servicio está activo.
[]# systemctl start httpd
[]# systemctl stop httpd
[]# systemctl restart httpd
[]# systemctl reload httpd
[]# systemctl is-active httpd
Y por supuesto la verificación de estado que nos da información importante.
[]# systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since dom 2015-08-30 10:02:04 CEST; 2s ago
Process: 11929 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 11935 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─11935 /usr/sbin/httpd -DFOREGROUND
├─11936 /usr/sbin/httpd -DFOREGROUND
├─11937 /usr/sbin/httpd -DFOREGROUND
├─11938 /usr/sbin/httpd -DFOREGROUND
├─11939 /usr/sbin/httpd -DFOREGROUND
└─11940 /usr/sbin/httpd -DFOREGROUND
ago 30 10:02:02 centos7 systemd[1]: Starting The Apache HTTP Server...
ago 30 10:02:03 centos7 httpd[11935]: AH00558: httpd: Could not reliably de...ge
ago 30 10:02:04 centos7 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
También podemos desactivar servicios de forma que no se puedan iniciar de forma manual. Es una funcionalidad disponible para asegurarse de que no es posible iniciar un servicio de forma manual, automática o semiautomática sin reactivarlo de nuevo. Se hace mediante mask
/ unmask
[]# systemctl mask httpd
ln -s '/dev/null' '/etc/systemd/system/httpd.service'
[]# systemctl start httpd
Failed to issue method call: Unit httpd.service is masked.
[]# systemctl unmask httpd
rm '/etc/systemd/system/httpd.service'
Verificamos como siempre si el puerto está abierto con ss -tnlp | grep puerto
¿Y si el servicio que instalamos es de xinetd?
Systemctl start servicio.socket ???? Ver lo de SOCKET. En LinuxAcademy el video prueba con un servidor de telnet.
Referencias. RHEL7: How to get started with Systemd. Overview of systemd for RHEL 7