Configurar OpenDJ como servicio (systemd/systemctl)

Vamos a ver los pasos para configurar una instancia de OpenDJ como servicio integrado en systemd de modo que se pueda gestionar a través del comando systemctl y arranque automáticamente con el sistema. En el caso de que lo instaléis por rpm no es necesario, sólo si es una instalación manual con el setup.

El primer paso es generar un script estándar de init.d/rc:

$ cd $OPENDJ_HOME/bin
$ ./create-rc-script --userName root --outputFile opendj.init

Nota: si OpenDJ no se ejecuta como root, especificad el usuario correspondiente como parámetro para la creación del script:

En caso de que queráis integrar el script de arranque en init.d, es decir, como servicio básico de RC, simplemente ejecutad el mismo comando pero copiando el script a init.d:

# ./create-rc-script --outputFile /etc/init.d/opendj --userName root

Ya se podría iniciar o integrar con chkconfig:

# chkconfig add opendj
# chkconfig opendj on
# /etc/init.d/opendj start

Para systemd, podéis usar este script como base y activarlo. Lo tenéis que ubicar en /usr/lib/systemd/system/opendj.service. Únicamente tened en cuenta cambiar los paths en función de vuestro $OPENDJ_HOME y dónde estén los scripts de arranque generados en el paso previo:

[Unit]
SourcePath=/opt/opendj/bin
Description=Instancia OpenDJ LDAP
Before=runlevel5.target shutdown.target
After=
Conflicts=shutdown.target

[Service]
Type=forking
Restart=always
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/opt/opendj/bin/opendj.init start
ExecStop=/opt/opendj/bin/opendj.init stop

[Install]
WantedBy=multi-user.target

Finalmente, se activa el servicio y recarga el demonio de systemd:

# systemctl enable opendj.service
# systemctl daemon-reload	
# systemctl start opendj.service
# systemctl status opendj.service
opendj.service - ForgeRock OpenDJ 3.5.0
   Loaded: loaded (/opt/opendj/bin; enabled)
   Active: active (exited) since Fri 2019-01-21 12:05:22 GMT; 97min ago
  Process: 1233 ExecStart=/opt/opendj/bin/opendj.init start (code=exited, status=0/SUCCESS)