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,并修改权限)

  1. 运行以下命令创建 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查看)

  1. 运行以下命令创建 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
  1. 运行以下命令创建 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
  1. 运行以下命令创建 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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐