genieacs官网:GenieACS
genieacs开发手册:Welcome to GenieACS’s documentation! — GenieACS Documentation 1.2.8 documentation
genieacs 论坛:GenieACS Forum - GenieACS community
(注意:可选用docker进行安装 ,这里不做介绍)
安装指南参考官网Installation Guide — GenieACS Documentation 1.2.8 documentation
安装指南
本指南用于在任何使用 systemd 作为其初始化系统的 Linux 发行版上的单个服务器上安装 GenieACS。
各种 GenieACS 服务相互独立,可以安装在不同的服务器上。 您还可以在负载平衡/故障转移设置中运行每个实例的多个实例。
注意
对于生产部署,请确保配置 TLS 并将 UI_JWT_SECRET 更改为唯一且安全的字符串。 有关如何启用 TLS 以加密流量的信息,请参阅 HTTPS 部分。
条件
Node.js
GenieACS 需要 Node.js 10.x 及更高版本。 有关说明,请参阅 Node.js。
注意:如果Node.js版本过低,则运行时会出错,n模块可能存在无法升至10.x以上,建议使用nvm模块进行升级,网上资料较多并且安装简单,可自行升级,提供传送门:NVM安装nodejs的方法_json博客-CSDN博客_nvm安装nodejs
MongoDB
GenieACS 需要 MongoDB 3.6 及更高版本。 参考MongoDB:应用数据平台| MongoDB 获取说明。
(注意:必须安装到对应的版本以上,否则运行不了)
安装GenieACS
从 NPM 安装:
sudo npm install -g genieacs@1.2.5
从源码安装
如果您更喜欢从源代码安装,例如在运行带有自定义补丁的 GenieACS 副本时,请参阅源包中的 README.md 文件。 相应地调整下面的后续步骤。
配置systemd
创建一个系统用户来运行 genieacs 守护进程
sudo useradd --system --no-create-home --user-group genieacs
创建目录以保存扩展和环境文件
我们将使用 /opt/genieacs/ext/ 目录来存储扩展脚本。
mkdir /opt/genieacs
mkdir /opt/genieacs/ext
chown genieacs:genieacs /opt/genieacs/ext
创建文件 /opt/genieacs/genieacs.env 来保存我们作为环境变量传递给 GenieACS 的配置选项。 有关所有可用配置选项的列表,请参阅环境变量部分。
GENIEACS_CWMP_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-cwmp-access.log
GENIEACS_NBI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-nbi-access.log
GENIEACS_FS_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-fs-access.log
GENIEACS_UI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-ui-access.log
GENIEACS_DEBUG_FILE=/var/log/genieacs/genieacs-debug.yaml
NODE_OPTIONS=--enable-source-maps
GENIEACS_EXT_DIR=/opt/genieacs/ext
GENIEACS_UI_JWT_SECRET=secret
设置文件所有权和权限:
sudo chown genieacs:genieacs /opt/genieacs/genieacs.env
sudo chmod 600 /opt/genieacs/genieacs.env
创建日志目录
mkdir /var/log/genieacs
chown genieacs:genieacs /var/log/genieacs
创建 systemd 文件
为四个 GenieACS 服务中的每一个创建一个 systemd 单元文件。 请注意,我们使用 EnvironmentFile 指令从我们之前创建的文件中读取环境变量。
每个服务都有两个日志流:访问日志和进程日志。 访问日志在此处配置为转储到 /var/log/genieacs/ 下的日志文件中,而进程日志则转到 journald。 使用 journalctl 命令查看进程日志。
注意
如果命令 systemctl edit --force --full 失败,您可以手动创建单元文件。
(注意:如果systemctl edit失败,需在/etc/systemd/system/中创建genieacs-nbi.service、genieacs-ui.service、genieacs-fs.service、genieacs-cwmp.service,并修改权限)
-
运行以下命令创建 genieacs-cwmp 服务:
sudo systemctl edit --force --full genieacs-cwmp
然后在编辑器中粘贴以下内容并保存:
[Unit]
Description=GenieACS CWMP
After=network.target
[Service]
User=genieacs
EnvironmentFile=/opt/genieacs/genieacs.env
ExecStart=/usr/bin/genieacs-cwmp
[Install]
WantedBy=default.target
(注意: ExecStart需修改为对应genieacs-cwmp路径,可通过命令which genieacs-cwmp查看)
-
运行以下命令创建 genieacs-nbi 服务:
sudo systemctl edit --force --full genieacs-nbi
然后在编辑器中粘贴以下内容并保存:
[Unit]
Description=GenieACS NBI
After=network.target
[Service]
User=genieacs
EnvironmentFile=/opt/genieacs/genieacs.env
ExecStart=/usr/bin/genieacs-nbi
[Install]
WantedBy=default.target
-
运行以下命令创建 genieacs-fs 服务:
sudo systemctl edit --force --full genieacs-fs
然后在编辑器中粘贴以下内容并保存:
[Unit]
Description=GenieACS FS
After=network.target
[Service]
User=genieacs
EnvironmentFile=/opt/genieacs/genieacs.env
ExecStart=/usr/bin/genieacs-fs
[Install]
WantedBy=default.target
-
运行以下命令创建 genieacs-ui 服务:
sudo systemctl edit --force --full genieacs-ui
然后在编辑器中粘贴以下内容并保存:
[Unit]
Description=GenieACS UI
After=network.target
[Service]
User=genieacs
EnvironmentFile=/opt/genieacs/genieacs.env
ExecStart=/usr/bin/genieacs-ui
[Install]
WantedBy=default.target
使用 logrotate 配置日志文件轮换
将以下内容另存为 /etc/logrotate.d/genieacs
/var/log/genieacs/*.log /var/log/genieacs/*.yaml {
daily
rotate 30
compress
delaycompress
dateext
}
启用和启动服务
sudo systemctl enable genieacs-cwmp
sudo systemctl start genieacs-cwmp
sudo systemctl status genieacs-cwmp
sudo systemctl enable genieacs-nbi
sudo systemctl start genieacs-nbi
sudo systemctl status genieacs-nbi
sudo systemctl enable genieacs-fs
sudo systemctl start genieacs-fs
sudo systemctl status genieacs-fs
sudo systemctl enable genieacs-ui
sudo systemctl start genieacs-ui
sudo systemctl status genieacs-ui
查看每个状态消息以验证服务是否成功运行。
genieacs配置
acs认证设置
Key:cwmp.auth
Value:AUTH("cwmp","cwmp")
cpe认证设置
Key:cwmp.connectionRequestAuth
Value:AUTH("cwmpd","cwmpd")
Online设置
可以设置配置cwmp.deviceOnlineThreshold
来调整超时前等待的时间。默认为 4000(以毫秒为单位)
Key:cwmp.deviceOnlineThreshold
Value:10000
会话超时设置
可以配置cwmp.deviceOnlineThreshold
来调整会话超时时间
Key:cwmp.seesionTimeout
Value:"10000"
其他:
可在论坛GenieACS Forum - GenieACS community中搜索对应ACS产生的异常
genieacs基本操作
1:任务队列数,需要调用操作2才会将队列中任务发送出去
2:Commit发送数据,将1中Queued全部整合成报文在一个session中发送出去
3:搜索栏,可通过节点名称过滤节点
4:部分PRC操作
-
reboot:重启
-
reset:恢复出厂设置
-
Push file 上传文件 如固件升级
-
Delete:删除当前设备
5:Log,能查看当前设备的错误返回情况
6:部分RPC操作,操作后将会放入Queued队列中
7、12:刷新节点,通过节点后带有数字的为object,详细可查看协议或规格
-
7为param,刷新7时,会调用getParamValue刷新当前值
-
12位object,刷新12时,会先调用getParamName获取PortMapping下所有的{i}节点名称,如PortMapping.1. PortMapping.2. ……PortMapping.n.等,当前仅存在PortMapping.1. 然后再调用getParamValue获取其子节点值
详细可通过wireshark抓包查看
8:当param中属性rw=1,可写入时,ACS会生成此图标,可通过调用setParamName设置CPE参数值
9:当object中属性rw=1,可写入时,ACS会生成此图标,可通过调用addObject添加CPE object实例值
10:当object中属性rw=1,可写入时,ACS会生成此图标,可通过调用delObject删除CPE object实例值
11:清空队列Queued
genieacs配置更改
配置为systemctl edit --force --full genieacs-*中
EnvironmentFile=/opt/genieacs/genieacs.env
配置中参数设置参考Environment Variables — GenieACS Documentation 1.2.8 documentation
服务开启
sudo systemctl enable genieacs-cwmp
sudo systemctl enable genieacs-nbi
sudo systemctl enable genieacs-fs
sudo systemctl enable genieacs-ui
服务开始
sudo systemctl start genieacs-cwmp
sudo systemctl start genieacs-nbi
sudo systemctl start genieacs-fs
sudo systemctl start genieacs-ui
服务停止
sudo systemctl stop genieacs-cwmp
sudo systemctl stop genieacs-nbi
sudo systemctl stop genieacs-fs
sudo systemctl stop genieacs-ui
服务状态查询
sudo systemctl status genieacs-cwmp
sudo systemctl status genieacs-nbi
sudo systemctl status genieacs-fs
sudo systemctl status genieacs-ui
安装过程遇到的问题:
由于安装使用的是genieacs账户,当在root时,nodejs的版本是最新的,但在genieacs账号中node指令可能仍然是低版本
解决方法1:
1.切换至genieacs查看node的路径
2.并将更新好的node14.17.1 软链接到node中
genieacs@ubuntu:/xx$ node --version
v8.17.0
genieacs@ubuntu:/xx$ which node
/usr/local/bin/node
genieacs@ubuntu:/xx$ su
root@ubuntu:/xx$
root@ubuntu:/xx$ cd /usr/local/bin/
root@ubuntu:/usr/local/bin$
root@ubuntu:/usr/local/bin$ find / -name "node"
……
/usr/bin/node
/usr/local/bin/node
/usr/local/share/doc/node
/usr/local/n/versions/node
/usr/local/n/versions/node/8.17.0/bin/node
/usr/local/n/versions/node/8.17.0/share/doc/node
/usr/local/n/versions/node/8.17.0/include/node
/home/ecos/.nvm/versions/node
/home/ecos/.nvm/versions/node/v14.17.1/bin/node
/home/ecos/.nvm/versions/node/v14.17.1/share/doc/node
/home/ecos/.nvm/versions/node/v14.17.1/include/node
/home/ecos/.nvm/.cache/src/node-v14.17.1/files/node
/home/ecos/.nvm/.cache/src/node-v14.17.1/files/deps/v8/tools/node
……
root@ubuntu:/usr/local/bin# sudo ln -s /home/ecos/.nvm/versions/node/v14.17.1/bin/node ./node