QVINTVS · SCRIBET

Gem-Server mit Systemd

Kurztipp: Systemd-Service-Datei für den RubyGems-Server.

Ich war es leid, gem server immer von Hand ausführen zu müssen, wenn ich die Gem-RDocs im Browser ansehen wollte. Da der Gem-Server aber systemweit nur einmal ausgeführt werden soll, ist es auch keine Option, das in die Autostart-Dateien jedes Benutzers zu stecken. Also musste eine Service-Datei her. Folgendes:

Description=RubyGems server
Wants=network.service
After=network.service
Type=simple
ExecStart=/opt/rubies/ruby-1.9.3-p194/bin/gem server

[Install]
WantedBy=multi-user.target

Wobei der unter ExecStart angegebene Pfad natürlich an eure Gegebenheiten angepasst werden muss. Diese Datei nun als /etc/systemd/system/rubygems.service abspeichern und starten sowie für den Autostart eintragen:

# systemctl start rubygems.service
# systemctl enable rubygems.service

Fertig. Von nun an wird der Gem-Server automatisch bei jedem Start ausgeführt. Wants=network.service sagt dabei aus, dass der RubyGems-Dienst nur gestartet werden kann, wenn auch (irgendwann) der network-Dienst gestartet wird (der ist für das Setup von Netzwerkschnittstellen verantwortlich). After=network.service bewirkt, dass der Server tatsächlich auch nach network.service gestartet wird. Type=simple sagt Systemd, dass hier nur ein Hauptrozess erzeugt wird, und zwar jener über die ExecStart-Direktive (für Daemons etwa müsste das anders lauten, siehe systemd.service(5) und systemd.unit(5)). WantedBy definiert, für welches Target die Service-Datei gestartet werden soll, wenn sie aktiviert wurde; multi-user.target ist dabei mein Standard-Target, d.h. jenes, welches beim Booten ausgeführt wird (es startet alle für Mehrbenutzer-Konsolenmodus erforderlichen Dienste; daneben gibt es auch noch graphical.target, falls ihr einen Login-Manager wie GDM verwendet (multi-user.target ist eine Abhängigkeit von graphical.target)).

Valete.