ubuntu部署genieacs

genieacs官网:GenieACS

一、环境部署

1、安装node.js

  1. 安装curl

    sudo apt install curl
  2. curl指定nodejs版本

    curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
    sudo apt-get install -y nodejs
  3. 检查确认

    node -v

2、安装MongoDB

  1. 安装依赖包

    sudo apt-get install libcurl4 openssl
  2. 关闭和卸载原有的mongodb

    service mongodb stop
    sudo apt-get remove mongodb

  3. 导入包管理系统使用的公钥

    wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
    //如果命令执行结果没有显示OK,则执行此命令在把上一句重新执行:
    sudo apt-get install gnupg

  4. 注册Mondodb镜像源

    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | 
    sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
     
  5. 更新源

    sudo apt-get update

  6. 正式安装

    sudo apt-get install -y mongodb-org=4.4.2 mongodb-org-server=4.4.2 mongodb-org-shell=4.4.2 mongodb-org-mongos=4.4.2 mongodb-org-tools=4.4.2
    //安装过程中如果提示: mongodb-org-tools : 依赖: mongodb-database-tools 但是它将不会被安装
    //终端下运行以下命令,解决:
    sudo apt-get autoremove mongodb-org-mongos mongodb-org-tools mongodb-org
    sudo apt-get install -y mongodb-org=4.4.2

  7. 创建数据存储目录

    sudo mkdir -p /data/db

  8. 修改配置,开放27017端口 ,以及开发外网链接

    sudo vim /etc/mongod.conf
    //port: 27017
    //bindIp: 0.0.0.0

  9. 重新加载配置,并启动mongodb

    sudo systemctl daemon-reload
    sudo systemctl start mongod

  10. 查看运行状态

sudo systemctl status mongod
//如果mongodb状态为stop,则运行:
sudo systemctl enable mongod
  1. 开机启动

    sudo systemctl enable mongod

二、安装GenieACS

从 NPM 安装

sudo npm install -g genieacs@1.2.8

配置 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
//创建文件以保存我们的配置选项,我们将这些选项作为环境变量传递给 GenieACS。有关所有可用配置选项的列表,请参阅环境变量部分。
sudo vim /opt/genieacs/genieacs.env

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

创建系统单元文件

为四个 GenieACS 服务中的每个服务创建一个 systemd 单元文件。请注意,我们正在使用环境文件指令从我们之前创建的文件中读取环境变量。

每个服务都有两个日志流:访问日志和进程日志。此处将访问日志配置为在进程日志转储到日志文件中,而进程日志将转到日志中。使用命令查看进程日志。/var/log/genieacs/``journalctl

运行以下命令创建服务: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

运行以下命令创建服务: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-sim

git clone https://github.com/zaidka/genieacs-sim.git
cd genieacs-sim
npm install
./genieacs-sim

四、连接测试

1、访问genieacs-ui 服务,地址localhost:3000;

2、启动一台genieacs-sim模拟器

3、查看/var/log/genieacs/日志文件,查看页面

cpe函数由ACS调用,用来对CPE进行管理如:设置CPE参数、获取CPE参数、硬件升级、重启设备等。

抓包中inform注册连接xml示例

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
	<soap-env:Header>
		<cwmp:ID soap-env:mustUnderstand="1">lnsjx8wz</cwmp:ID>
	</soap-env:Header>
	<soap-env:Body>
		<cwmp:Inform>
			<DeviceId>
				<Manufacturer>Huawei Technologies Co., Ltd.</Manufacturer>
				<OUI>202BC1</OUI>
				<ProductClass>BM632w</ProductClass>
				<SerialNumber>000000</SerialNumber>
			</DeviceId>
			<Event soap-enc:arrayType="cwmp:EventStruct[1]">
				<EventStruct>
					<EventCode>2 PERIODIC</EventCode>
					<CommandKey />
				</EventStruct>
			</Event>
			<MaxEnvelopes>1</MaxEnvelopes>
			<CurrentTime>2022-06-30T01:10:23.198Z</CurrentTime>
			<RetryCount>0</RetryCount>
			<ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[16]">
				<ParameterValueStruct>
					<Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
					<Value xsi:type="xsd:string">1</Value>
				</ParameterValueStruct>
				<ParameterValueStruct>
					<Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
					<Value xsi:type="xsd:string">40501</Value>
				</ParameterValueStruct>
				<ParameterValueStruct>
					<Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
					<Value xsi:type="xsd:string">V100R001IRQC56B017</Value>
				</ParameterValueStruct>
				<ParameterValueStruct>
					<Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
					<Value xsi:type="xsd:string" />
				</ParameterValueStruct>
				<ParameterValueStruct>
					<Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
					<Value xsi:type="xsd:string" />
				</ParameterValueStruct>
				<ParameterValueStruct>
					<Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
					<Value xsi:type="xsd:string">http://192.168.137.140:54153/</Value>
				</ParameterValueStruct>
				<ParameterValueStruct>
					<Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name>
					<Value xsi:type="xsd:string">172.3.89.140</Value>
				</ParameterValueStruct>
			</ParameterList>
		</cwmp:Inform>
	</soap-env:Body>
</soap-env:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
    <soap-env:Header>
        <cwmp:ID soap-env:mustUnderstand="1">lnsjx8wz</cwmp:ID>
    </soap-env:Header>
    <soap-env:Body>
        <cwmp:InformResponse>
            <MaxEnvelopes>1</MaxEnvelopes>
        </cwmp:InformResponse>
    </soap-env:Body>
</soap-env:Envelope>

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值