将编译好的 FreeRADIUS 添加到 systemd

将编译好的 FreeRADIUS 添加到 systemd

致力于启动并运行 FreeRADIUS,但在添加到 systemd 时遇到问题。

通过 radiusd -X 独立运行符合预期,所有自定义配置均完好无损。使用 freetds 模块连接到 MS SQL 后端...

在编译期间,我将其设置为使用“--with-systemd”,但它并没有自动添加服务条目或创建我可以找到的*.service 文件。

我尝试使用在线找到的一个方法,但没有成功。这导致超时错误。

[Unit]
Description=FreeRADIUS high performance RADIUS server.
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/var/run/radiusd/radiusd.pid
ExecStartPre=-/bin/chown -R freerad:freerad /var/run/radiusd
ExecStartPre=/usr/local/sbin/radiusd -C
ExecStart=/usr/local/sbin/radiusd -d /usr/local/etc/raddb
ExecReload=/usr/local/sbin/radiusd -C
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

是否有人成功将 FreeRADIUS (3.0) 的编译版本添加到 systemd?如果是,您能提供一些如何使其工作的指导吗?

谢谢。

答案1

  1. 配置选项“with-systemd”添加了对 systemd 看门狗的支持,但不包括 systemd 单元文件。如果您不确定需要什么,请不要启用此选项。
  2. 尝试诊断发生了什么。从开始systemctl status freeradius。它显示了什么?
  3. 这是 freeradius 包中的标准 systemd 单元文件。将其复制到/etc/systemd/system/freeradius.service并更改路径。它将成为起点。
# /lib/systemd/system/freeradius.service
[Unit]
Description=FreeRADIUS multi-protocol policy server
After=network.target
Documentation=man:radiusd(8) man:radiusd.conf(5) http://wiki.freeradius.org/ http://networkradius.com/doc/

[Service]
Type=forking
PIDFile=/run/freeradius/freeradius.pid
EnvironmentFile=-/etc/default/freeradius
ExecStartPre=/usr/sbin/freeradius $FREERADIUS_OPTIONS -Cxm -lstdout
ExecStart=/usr/sbin/freeradius $FREERADIUS_OPTIONS
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

根据评论更新

  1. freeradius 中的 systemd 支持包括一些功能:

    • 关于启动完成的通知
    • systemd 看门狗支持,防止挂断。
  2. 最好的方法是:

    • 使用这个坚固的服务单位对于 freeradius。将路径更改为您的路径。
    • -f选项传递给 freeradius 以防止分叉。如果您使用上面链接中的服务单元 flle,则应将其添加-f/etc/sysconfig/radiusd。您可以阅读一些关于它的讨论这里。分叉是传统的去进程化方式。如今,程序启动时的进程化可以委托给 systemd 或 start-stop-daemon 等特殊程序。
    • Type=notify在单元文件的服务部分中使用。

相关内容