openwrt最新版安装freeradius3

    科技2023-09-18  168

    记录一下最近用openwrt 19.07安装mysql php nginx + freeradius3的一些问题。

    安装中遇到的问题:

    1:php安装支持的组件不全导致php不支持session,mysql等。

    解决方法:

    重新编译,可以选择所有组件。

    2:mysql的安装

    Mysql的安装和大部分常规的源码编译安装区别不大。只需要修改/etc/config/mysql配置文件。将enable改为1.

    运行mysql_install_db --defaults-file=/etc/mysql/conf.d/50-server.cnf安装即可。

    /etc/init.d/mysql start启动mysql

    3:freeradius3数据库的导入

    mysql默认初始化完成之后。

    进入/etc/freeradius3/mods-config/sql/main/mysql目录。

    mysql -uroot用root登录mysql。执行create database radius;

    创建radius数据库,这里不创建的话,后边导入schema.sql是会提示找不到数据库

    执行mysql -uroot <setup.sql (这里我没有给Mysql默认账户设置密码)一切正常的话没有任何提示。

    执行mysql -uroot radius < schema.sql,同上,没有提示便是正常。

    这里freeradius的数据库已经成功导入。

    4:开始安装daloradius。

    安装这个的时候花了不少时间。因为用的是Openwrt,也遇到了不少的问题。

    将daloradius的源码放到任易目录,设置好nginx和php.

    首先就遇到提示找不到DB.php。本地搜索了一圈,编译源码里也搜索了一圈,确实没有这个文件。

    当时就觉得奇怪,这个项目已经这么久了,少文件不至于没有人说啊。然后又到daloradius的git上边看了一下之前的版本的源码,确定,也没有这个问题,看了一下Opendb.php这个文件的最后一次修改时间是4年前了,所以可以肯定不是源码的问题,应该是我环境的问题。

    于是点开了项目的issue,果然有人也遇到了同样的问题。

    下边有人回答了解决方法。用pear install DB安装db扩展包。

    然后我ssh连接Openwrt试了一下,似乎没有这个命令。

    查了一下,这个需要编译php的时候加入--with-pear。

    于是找到openwrt里边php的package。果然在里边发现了一段--without-pear。原来Openwrt默认把这个给禁用了。于是我想都没想的把这段改为了--with-pear。然后编译。

    编译过程一切顺利。但是在install的时候出现了问题。提示找不到php这文件。我到编译目录查看了,这个文件明明在这里啊。

    弄了好半天还是不行。最后只好放弃。

    然后又查了一下资料。发现这个pear支持可以单独安装。但是需要php打开php-cli的支持。然后重新编译php,开启了Php-cli的支持。

    从官网下载了.phar的安装包。然后运行php-cli pear-phar安装。这里提示我找不到/usr/bin/php。emmm...这个不就是php-cli吗?

    于是给php-cli创建了一个软连接。再次安装。一切顺利完成,接下来就是DB。

    运行pear install DB提示找不到DB。

    emmm...明明在官网上边都能查到,为什么搜不到呢。刚开始还以为是机器没有联网,ping了一下官网,是通的,网络没有问题。只好直接下载db的.tgz的安装。

    运行pear install db.tgz。安装过程一切顺利。

    这些都安装完成之后,打开daloradius,提示Fatal error: date(): Timezone database is corrupt - this should *never* happ

    好吧,又重新编译,安装zoneinfo。

    本来以为好了,结果又报错。UPDATE command denied to user

    从提示上来看应该是数据库的权限问题。

    再次用root登录mysql执行

    grant all privileges on radius.* radius@localhost identified  by 'radpass';  (这里的radpass是你的radius账户的密码)

    flush privileges;

    再次访问,总算可以正常登录了。

    好了,第一次写,有点乱。

    就先将就着看吧。做为记录。防止以后忘了,毕竟过程有点多。

     

     

     

     

     

    Processed: 0.009, SQL: 8