h-sendai / DAQ-Middleware

DAQ-Middleware Source code
Other
2 stars 5 forks source link

EL9からxinetdパッケージがなくなった #25

Open h-sendai opened 2 years ago

h-sendai commented 2 years ago

EL 9からxinetdパッケージが利用できなくなった(Fedoraでもxinetdパッケージは提供されなくなった)。DAQ-Middlewareではリモートブートにxinetdを使っている。

xinetdの代替として、systemd socket機能が使える。

設定

# /etc/systemd/system/sample-server.socket <==
[Unit]
Description=Sample Server Socket

[Socket]
ListenStream=60000
Accept=yes

[Install]
WantedBy=sockets.target
# /etc/systemd/system/sample-server@.service <==
[Unit]
Description=Sample Server Per-Connection Server
Requires=sample-server.socket

[Service]
Type=simple
ExecStart=-/home/sendai/src/sample-server/sample-server
#ExecStart=/home/sendai/src/sample-server/sample-server
User=sendai
Group=sendai
IgnoreSIGPIPE=no
StandardInput=socket
StandardError=journal
#TimeoutStopSec=5
#StandardOutput=socket

[Install]
WantedBy=multi-user.target

としてsystemctl start sample-server.socketとするとポート60000にアクセスがあるとxinetdとどうようにsample-serverが起動する。sample-serverのエラー出力はjournal logとして記録される。

h-sendai commented 2 years ago

修正案 xinetdの場合も設定サンプルをインストールするのみで、実際にセットする場合はそのサンプルを手動でコピーしてもらっていたのでそれにならいサンプルファイルとしてインストールすることにする場合のパッチ:

diff --git a/etc/remote-boot/Makefile b/etc/remote-boot/Makefile
index c154842..3e7e34f 100644
--- a/etc/remote-boot/Makefile
+++ b/etc/remote-boot/Makefile
@@ -9,6 +9,8 @@ EXEC_MODE = 0755

 FILES      += bootComps-xinetd.sample
 FILES      += services.sample
+FILES      += bootComps.socket.sample
+FILES      += bootComps@.service.sample
 # EXEC_FILES += bootComps.py

 all:
diff --git a/etc/remote-boot/bootComps.socket.sample b/etc/remote-boot/bootComps.socket.sample
new file mode 100644
index 0000000..a642957
--- /dev/null
+++ b/etc/remote-boot/bootComps.socket.sample
@@ -0,0 +1,9 @@
+[Unit]
+Description=bootComps Socket
+
+[Socket]
+ListenStream=50000
+Accept=yes
+
+[Install]
+WantedBy=sockets.target
diff --git a/etc/remote-boot/bootComps@.service.sample b/etc/remote-boot/bootComps@.service.sample
new file mode 100644
index 0000000..a14463e
--- /dev/null
+++ b/etc/remote-boot/bootComps@.service.sample
@@ -0,0 +1,13 @@
+[Unit]
+Description=Remote boot program
+
+[Service]
+Type=simple
+ExecStart=-/usr/share/daqmw/etc/remote-boot/bootComps.py
+# IgnoreSIGPIPE=no
+StandardInput=socket
+StandardError=socket
+#StandardError=journal
+
+[Install]
+WantedBy=multi-user.target