现象:
执行 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..