目录
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
Installation Guide
This guide is for installing GenieACS on a single server on any Linux distro that uses systemd as its init system.
The various GenieACS services are independent of each other and may be installed on different servers. You may also run multiple instances of each in a load-balancing/failover setup.
Attention
For production deployments make sure to configure TLS and change UI_JWT_SECRET to a unique and secure string. Refer to HTTPS section for how to enable TLS to encrypt traffic.
Prerequisites
Node.js
GenieACS requires Node.js 10.x and up. Refer to Node.js for instructions.
注意:如果Node.js版本过低,则运行时会出错,n模块可能存在无法升至10.x以上,建议使用nvm模块进行升级,网上资料较多并且安装简单,可自行升级,提供传送门:https://blog.csdn.net/sinat_23958625/article/details/86491282
MongoDB
GenieACS requires MongoDB 3.6 and up. Refer to MongoDB: the application data platform | MongoDB for instructions.
(注意:必须安装到对应的版本以上,否则运行不了)
Install GenieACS
Installing from NPM:
sudo npm install -g genieacs@1.2.5
Installing from source
If you prefer installing from source, such as when running a GenieACS copy with custom patches, refer to README.md file in the source package. Adjust the next steps below accordingly.
Configure systemd
Create a system user to run GenieACS daemons
sudo useradd --system --no-create-home --user-group genieacs
Create directory to save extensions and environment file
We’ll use /opt/genieacs/ext/ directory to store extension scripts (if any).
mkdir /opt/genieacs mkdir /opt/genieacs/ext chown genieacs:genieacs /opt/genieacs/ext
Create the file /opt/genieacs/genieacs.env to hold our configuration options which we pass to GenieACS as environment variables. See Environment Variables section for a list of all available configuration options.
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
Set file ownership and permissions:
sudo chown genieacs:genieacs /opt/genieacs/genieacs.env sudo chmod 600 /opt/genieacs/genieacs.env
Create logs directory
mkdir /var/log/genieacs chown genieacs:genieacs /var/log/genieacs
Create systemd unit files
Create a systemd unit file for each of the four GenieACS services. Note that we’re using EnvironmentFile directive to read the environment variables from the file we created earlier.
Each service has two streams of logs: access log and process log. Access logs are configured here to be dumped in a log file under /var/log/genieacs/ while process logs go to journald. Use journalctl command to view process logs.
Attention
If the command systemctl edit --force --full fails, you can create the unit file manually.
(注意:如果systemctl edit失败,需在/etc/systemd/system/中创建genieacs-nbi.service、genieacs-ui.service、genieacs-fs.service、genieacs-cwmp.service,并修改权限)
-
Run the following command to create genieacs-cwmp service:
sudo systemctl edit --force --full genieacs-cwmp
Then paste the following in the editor and save:
[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查看)
-
Run the following command to create genieacs-nbi service:
sudo systemctl edit --force --full genieacs-nbi
Then paste the following in the editor and save:
[Unit] Description=GenieACS NBI After=network.target [Service] User=genieacs EnvironmentFile=/opt/genieacs/genieacs.env ExecStart=/usr/bin/genieacs-nbi [Install] WantedBy=default.target
-
Run the following command to create genieacs-fs service:
sudo systemctl edit --force --full genieacs-fs
Then paste the following in the editor and save:
[Unit] Description=GenieACS FS After=network.target [Service] User=genieacs EnvironmentFile=/opt/genieacs/genieacs.env ExecStart=/usr/bin/genieacs-fs [Install] WantedBy=default.target
-
Run the following command to create genieacs-ui service:
sudo systemctl edit --force --full genieacs-ui
Then paste the following in the editor and save:
[Unit] Description=GenieACS UI After=network.target [Service] User=genieacs EnvironmentFile=/opt/genieacs/genieacs.env ExecStart=/usr/bin/genieacs-ui [Install] WantedBy=default.target
Configure log file rotation using logrotate
Save the following as /etc/logrotate.d/genieacs
/var/log/genieacs/*.log /var/log/genieacs/*.yaml { daily rotate 30 compress delaycompress dateext }
Enable and start services
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
Review the status message for each to verify that the services are running successfully.
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$ 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