Ubuntu搭建本地genieacs
ubuntu换源:
查看版本代号:
root@ubuntu:/# lsb_release -cCodename: bionic
保存原本源复制件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
编辑源列表文件:
sudo vim /etc/apt/sources.list
新源地址:facal替换为版本代号
# 默认官方源
deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse# 阿里云源deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
18.04LTS
######## Ubuntu18.04LTS 清华镜像源 ################ 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse# 预发布软件源,不建议启用# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
安装linux版genieacs
一、安装信息
安装资料
🧩 官网详情:
1 官网:https://genieacs.com/
2 github:https://github.com/genieacs/genieacs
3 官网介绍文档:http://docs.genieacs.com/en/latest/
🧩 安装资料:
1 genieacs服务器安装:https://docs.genieacs.com/en/latest/installation-guide.html2 genieacs服务器配置说明:https://docs.genieacs.com/en/latest/environment-variables.html
🍄 注意:
安装环境
🧩 说明:
1 本文安装环境为:
a 虚拟机版本:VMware® Workstation 16 Pro — 16.0.0 build-16894299
b ubuntu版本:Ubuntu 22.04.2 LTS x86_64
🍄 注意:
二、安装步骤
安装依赖
🧩 说明:
1 安装12.13及以上版本的Node.js。详情可见Node.js官网:https://nodejs.org/zh-cn/download/package-manager
a 安装nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
注意:
i
如果因为网络等问题导致上面这一步不成功,可以使用下面已下载的install.sh脚本传到ubuntu,然后运行sudo ./install.sh;
install.sh
16.17 KB
ii
如果出现如下的报错,再尝试一次sudo ./install.sh一般能解决;
b 安装Node.js:
#1. 重启ubuntu终端;
#2. 执行:
nvm install 20
#3. 执行
cp /root/.nvm/versions/node/v20.15.0/bin/node /usr/bin/ chmod 777 /usr/bin/node
注意:如果提示nvm命令找不到,可能是因为nvm命令默认安装在/root/.nvm/目录下,普通用户即使使用sudo nvm也无法使用,此时可以运行sudo su切换到root用户去执行后续命令。
c 验证环境中正确的Node.js版本,版本应该为v20.15.0:
node -v
d 验证环境中正确的npm版本,版本应该为10.7.0:
npm -v
2 安装3.6及以上版本的MongoDB。
a 下载MongoDB:可从https://www.mongodb.com/try/download/community-kubernetes-operator地址下载不同版本的软件包;
b 安装MongoDB:
sudo dpkg -i ./mongodb-org-server_7.0.11_amd64.deb
c 查看是否安装成功:
mongod --version
🍄 注意:
安装genieacs
🧩 注意:
1 由于npm等命令只能在root用户下发现,普通用户下使用sudo npm无法发现,因此后续所有安装命令统一在root用户下执行。
🧩 2种安装步骤:
1 从源码安装genieacs:首先参考下载genieacs源码,然后进入genieacs源码根目录,root权限下做如下操作:
npm install --no-fund npm run build
2 如果安装成功,会在genieacs/dist/bin/目录下发现genieacs-cwmp等4个服务,将它们软链接到/usr/bin/目录下(注意不能直接把这些可执行文件拷贝到/usr/bin/下,直接拷贝会在运行时找不到ipaddr.js等依赖模块):
ln -s genieacs源码绝对路径/dist/bin/genieacs-cwmp /usr/bin/genieacs-cwmp
#如:ln -s /home/xxx/project/backup/genieacs/dist/bin/genieacs-cwmp /usr/bin/genieacs-cwmp
ln -s genieacs源码绝对路径/dist/bin/genieacs-fs /usr/bin/genieacs-fs
ln -s genieacs源码绝对路径/dist/bin/genieacs-ui /usr/bin/genieacs-ui
ln -s genieacs源码绝对路径/dist/bin/genieacs-nbi /usr/bin/genieacs-nbi
#README.md只说了genieacs需要上述4个服务,并没有提到genieacs-ext。根据名字和内容来猜测,这个可执行文件应该是服务于第三方插件的,暂时不集成 #ln -s genieacs源码绝对路径/dist/bin/genieacs-ext /usr/bin/genieacs-ext
3 从npm安装genieacs:
npm install -g genieacs@1.2.13ln -s /root/.nvm/versions/node/v20.15.0/lib/node_modules/genieacs/bin/genieacs-cwmp /usr/bin/genieacs-cwmpln -s /root/.nvm/versions/node/v20.15.0/lib/node_modules/genieacs/bin/genieacs-fs /usr/bin/genieacs-fsln -s /root/.nvm/versions/node/v20.15.0/lib/node_modules/genieacs/bin/genieacs-ui /usr/bin/genieacs-uiln -s /root/.nvm/versions/node/v20.15.0/lib/node_modules/genieacs/bin/genieacs-nbi /usr/bin/genieacs-nbi
注意:由于这些二进制文件在root目录下,运行时可能碰到一些权限问题。
🍄 注意:
1 本次安装使用的是源码方式安装。
三、配置及启动服务器
配置服务器
🧩 注意:
1 为了方便,下面命令统一在root用户下执行。
🧩 说明:
1 创建一个系统用户来运行 GenieACS 守护进程:
useradd --system --no-create-home --user-group genieacs
2 创建保存扩展名和环境文件的目录:
mkdir /opt/genieacs mkdir /opt/genieacs/ext chown genieacs:genieacs /opt/genieacs/ext
3 创建/opt/genieacs/genieacs.env文件保存我们的配置选项。这些选项将作为环境变量传递给 genieacs。有关所有可用配置选项的列表,参见Environment Variables。
#/opt/genieacs/genieacs.env文件初始配置如下:
GENIEACS_CWMP_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-cwmp-access.logGENIEACS_NBI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-nbi-access.logGENIEACS_FS_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-fs-access.logGENIEACS_UI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-ui-access.logGENIEACS_DEBUG_FILE=/var/log/genieacs/genieacs-debug.yaml NODE_OPTIONS=--enable-source-mapsGENIEACS_EXT_DIR=/opt/genieacs/ext
4 生成一个安全的 JWT签字并附加到/opt/genieacs/genieacs.env文件:
node -e "console.log(\"GENIEACS_UI_JWT_SECRET=\" + require('crypto').randomBytes(128).toString('hex'))" >> /opt/genieacs/genieacs.env
5 设置文件所有权和权限:
chown genieacs:genieacs /opt/genieacs/genieacs.env chmod 600 /opt/genieacs/genieacs.env
6 创建日志目录:
mkdir /var/log/genieacs chown genieacs:genieacs /var/log/genieacs
7 为genieacs的4个服务创建各自的Systemd 自启动单元文件。注意,如果如下命令创建单元文件失败,也可以手动创建单元文件:
输入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输入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输入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输入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
8 配置日志文件的周期:将下面的代码保存为/etc/logrotate.d/genieacs文件:
/var/log/genieacs/*.log /var/log/genieacs/*.yaml { daily rotate 30 compress delaycompress dateext }
9 配置服务的一些必需项,否则服务器下发命令时会报错"Connection request error: Incorrect connectionrequest credentials"。
a 配置反向连接的用户名和密码:在web的Admin→Config菜单下做如下操作:新增<cwmp.connectionRequestAuth>项,该项的值为<AUTH("反向连接用户名", "反向连接密码")>;
b 配置自动下发反向连接的用户名和密码:(不配置的话,总是会自动下发序列号组成的用户名而不是自定义的).
🍄 注意:
1、genieacs有4个服务,如下所示,
genieacs-cwmp:与CPE通信的服务,是ACS服务器的主体服务,默认监听7547端口。该端口即为ACS URL的端口。
genieacs-nbi:提供北向接口服务,用于外部实现自动化脚本,默认监听7557端口;
genieacs-fs:提供文件服务器服务,CPE将从这上面下载固件等文件,默认监听7567端口;
genieacs-ui:提供web用户界面服务,默认情况下监听3000端口,你必须传递--ui-jwt-secret参数来提供用于签名浏览器cookie的安全密钥;
2、genieacs的4个服务中,每个服务都有两个日志流:
访问日志:保存在/var/log/geneiacs/目录下;
进程日志:转储到journal,可通过journalctl命令查看;
启动服务器
🧩 说明:
1 、启用并启动服务,检查每个服务的状态消息,以验证服务是否正在成功运行:
sudo systemctl enable mongodsudo systemctl start mongodsudo systemctl status mongodsudo systemctl enable genieacs-cwmpsudo systemctl start genieacs-cwmpsudo systemctl status genieacs-cwmpsudo systemctl enable genieacs-nbisudo systemctl start genieacs-nbisudo systemctl status genieacs-nbisudo systemctl enable genieacs-fssudo systemctl start genieacs-fssudo systemctl status genieacs-fssudo systemctl enable genieacs-uisudo systemctl start genieacs-uisudo systemctl status genieacs-ui
2、登录页面:网页端口默认为3000
🍄 注意:
1 启动后需要过10秒再次通过sudo systemctl status ***命令检查各个服务的状态,避免有些服务拉起一段时间后才挂掉;
2、如失败,重启服务器:
sudo systemctl enable genieacs-cwmpsudo systemctl start genieacs-cwmpsudo systemctl enable genieacs-nbisudo systemctl start genieacs-nbisudo systemctl enable genieacs-fssudo systemctl start genieacs-fssudo systemctl enable genieacs-uisudo systemctl start genieacs-uisudo systemctl status genieacs-cwmpsudo systemctl status genieacs-nbisudo systemctl status genieacs-fssudo systemctl status genieacs-ui
四、其他
下载genieacs源码
🧩 说明:
1 从github下载genieacs源码并切换到自己需要的分支(如果网络原因下载不成功也可以使用下面的压缩包),本次安装使用的是主干代码,commit id:fc80a7d487182d6b378fe3edd4ab004456859ae3;
git clone https://github.com/genieacs/genieacs git checkout xxx分支 #(如果需要)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程