基于vue+django开发的网络设备轻量化管理平台NetOpsCenter
项目地址:https://github.com/XiuziSeven/NetOpsCenter
作者写的介绍:https://zhuanlan.zhihu.com/p/655040014
因为代码中backuponfig.py中相关备份路径默认是linux下路径方式,且使用了windows下没有的mkdir命令,所以导致windows中备份配置时会显示失败。
这也是为什么有了这篇文章的原因。
python环境搭建见上一篇文章。
centos7 最小化安装,所以后面会因为缺少组件导致报错。
一、创建虚拟环境
1 | conda create -n netops python=3.9.5 |
二、安装依赖
1 | pip install -r requirements.txt |
2.1 这一步安装报错如下:
报错指出mysql_config
和mariadb_config
这两个命令在系统中未找到。mysql_config
和mariadb_config
是MySQL和MariaDB数据库的配置实用程序,用于提供编译和链接MySQL/MariaDB客户端库时所需的编译选项和链接标志。Python包在安装时需要调用mysqlclient这些命令来获取正确的编译参数。
2.2 解决方法:
要解决这个问题,您需要确保系统中已经安装了MySQL或MariaDB的开发库,并且mysql_config
或mariadb_config
命令可被找到。
1 | yum install mysql-devel |
2.3 继续pip 安装依赖,还是有报错
error: command ‘gcc’ failed: No such file or directory
[end of output]note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for mysqlclient
Running setup.py clean for mysqlclient
Failed to build mysqlclient
ERROR: Could not build wheels for mysqlclient, which is required to install pyproject.toml-based projects
如下图,可以看出是缺少gcc之类的,yum安装即可
1 | yum install gcc gcc-c++ make |
2.4 这下pip安装依赖就没问题了
四、数据库安装
代码应该是支持sqlite的,有兴趣的可以去代码里把mysql的注释掉,启用sqlite测试。我这里没有按照作者说明里在本地安装数据库,而是使用局域网一台群晖安装的mariaDB10套件测试。
注意之后需要在./netopscenter/settings.py中修改相关数据库参数。
4.1、套件安装
略。
4.2 数据库创建
ssh进入群晖,找到数据库安装路径/volume3/@appstore/MariaDB10/usr/local/mariadb10/bin
1 | cd /volume3/@appstore/MariaDB10/usr/local/mariadb10/bin |
五、拉取项目并修改./netopscenter/settings.py
1 | git clone https://github.com/XiuziSeven/NetOpsCenter.git |
找到数据库配置代码,修改数据库名及连接用户名、密码、数据库地址。
六、初始化数据库
1 | python manage.py makemigrations app |
6.1makemigrations app命令报错
6.1.1 报错内容如下
d:\miniconda3\envs\NetOpsCenter\lib\site-packages\django\core\management\commands\makemigrations.py:121: RuntimeWarning: Got an error checking a consistent migration history performed for database connection ‘default’: (1130, “Host ‘10.139.27.5’ is not allowed to connect to this MariaDB server”)
warnings.warn(
Migrations for ‘app’:
app\migrations\0001_initial.py
- Create model Area
- Create model DeviceBrand
- Create model Devices
- Create model DeviceType
- Create model DeviceUser
- Create model Task
- Create model DevicesGroup
- Add field device_type to devices
- Add field device_user to devices
- Create model NewUser
这个错误表示: MySQL中的用户权限信息通常存储在系统数据库 mysql 中的 user 表中,而不是在您自定义的数据库(如django)中。错误信息中的表名 django.user 似乎暗示您试图在 django 数据库中查找用户表,但实际上应该是在 mysql 数据库中。
主要原因是运行程序设备ip不是数据库服务器信任地址。
6.1.2 解决方案
更正 UPDATE 语句,使其指向正确的表。对于修改用户权限,正确的数据库操作命令应该是:
1 | UPDATE mysql.user SET host = '10.139.27.%' WHERE User = 'django'; |
注意:
10.139.27.%表示10.139.27.0/24段子网
使用 mysql.user 表示系统数据库 mysql 中的 user 表。
使用 User 而不是 user,因为在 mysql.user 表中,用户名字段的列名是 User(首字母大写)。
MariaDB [django]> UPDATE mysql.user SET host = ‘10.139.27.%’ WHERE User = ‘django’;
Query OK, 1 row affected (0.000 sec)
Rows matched: 1 Changed: 1 Warnings:
6.1.3 python运行还是报错,回到数据库中继续给权限
1 | GRANT ALL PRIVILEGES ON django.* TO 'django'@'10.139.27.%'; |
6.1.4 重新执行数据库初始化,均无报错了
(NetOpsCenter) E:\pythoncode\NetOpsCenter>python manage.py makemigrations app
No changes detected in app ‘app’
python manage.py migrate #无报错
七、创建默认管理员账号
1 | python manage.py createsuperuser #创建管理员 |
有个天坑,是我在windows下测试发现的。
1、密码不能小于6位,且要有字母,否则无法登陆。
2、用户名必须是admin,其他用户名提示用户名无效。(登录后发现所创建用户都能看到,说明创建成功了,但是就是不能登录)
是否个例需要大家测试。
2024-5-22:实际上在linux(ubuntu22)下测试也是同样问题,大家小心。
八、运行服务
1 | python manage.py runserver 0.0.0.0:8000 |
九、其他
9.1 防火墙放行
1 | firewall-cmd --permanent --add-port=8000/tcp |
9.2 ubuntu下手动执行脚本启动服务
1 |
|
注意ubuntu下要使用/bin/bash netopscenter.sh
执行脚本,因为ubuntu和centos不同,默认解释器是dash。
9.2.1 ubuntu下创建服务开机自启动
1 | #新增服务,名称为netopscenter |
上面/etc/systemd/system/netopscenter.service内容如下
1 | [Unit] |
/bin/bash -c '/home/bg4vrg/netopscenter.sh'
这里,/bin/bash -c
表示使用bash解释器执行紧跟其后的命令字符串
重启,检查服务生效。
基于vue+django开发的网络设备轻量化管理平台NetOpsCenter