【原创】FreeRadius3 在 CentOS7下自动启动故障排除

现象:

执行 systemctl enable radiusd.service

设置开机自动启动,无任何报错。但重启后,服务却无法自动起来。手动启动服务

systemctl start radiusd.service

服务能够正常启动。

修改:

/usr/lib/systemd/system/radiusd.service

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

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

[Install]
WantedBy=multi-user.target

在【Unit】单元 after属性增加 mysqld.service

就是说,radiusd.service 服务在前面相应目标启动完成后,方开始启动。

故障原因:

freeradius 默认是不包含mysql数据库的,(只用本地数据库),因此不需要检查mysql.srevice服务。但因为我的环境是有mysql支撑的,因此,启动过程中,radius服务依赖于mysql ,如果mysql服务没有启动起来时候就启动radius,则会报错,就起不来。因此,自动启动就会失败。

而在系统启动完毕后,mysql服务已经启动完毕,因此,可以用手工启动radius。解决方法见上面。

[root@freeradius ~]# systemctl status radiusd.service
● radiusd.service – FreeRADIUS high performance RADIUS server.
Loaded: loaded (/usr/lib/systemd/system/radiusd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2017-08-15 14:19:08 CST; 2min 40s ago
Process: 1105 ExecStart=/usr/sbin/radiusd -d /etc/raddb (code=exited, status=0/SUCCESS)
Process: 1103 ExecStartPre=/usr/sbin/radiusd -C (code=exited, status=0/SUCCESS)
Process: 1101 ExecStartPre=/bin/chown -R radiusd.radiusd /var/run/radiusd (code=exited, status=0/SUCCESS)
Main PID: 1112 (radiusd)
CGroup: /system.slice/radiusd.service
└─1112 /usr/sbin/radiusd -d /etc/raddb

Aug 15 14:19:07 freeradius systemd[1]: Starting FreeRADIUS high performance RADIUS server….
Aug 15 14:19:08 freeradius systemd[1]: Started FreeRADIUS high performance RADIUS server..