正在加载今日诗词....

基于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_configmariadb_config这两个命令在系统中未找到。mysql_configmariadb_config是MySQL和MariaDB数据库的配置实用程序,用于提供编译和链接MySQL/MariaDB客户端库时所需的编译选项和链接标志。Python包在安装时需要调用mysqlclient这些命令来获取正确的编译参数。

2.2 解决方法:

要解决这个问题,您需要确保系统中已经安装了MySQL或MariaDB的开发库,并且mysql_configmariadb_config命令可被找到。

1
2
3
yum install mysql-devel
# ubuntu server下使用下面命令安装
# apt install libmysqlclient-dev

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
2
3
yum install gcc gcc-c++ make
# ubuntu server下使用下面命令安装
# apt install gcc

2.4 这下pip安装依赖就没问题了

四、数据库安装

代码应该是支持sqlite的,有兴趣的可以去代码里把mysql的注释掉,启用sqlite测试。我这里没有按照作者说明里在本地安装数据库,而是使用局域网一台群晖安装的mariaDB10套件测试。

注意之后需要在./netopscenter/settings.py中修改相关数据库参数。

4.1、套件安装

略。

4.2 数据库创建

ssh进入群晖,找到数据库安装路径/volume3/@appstore/MariaDB10/usr/local/mariadb10/bin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /volume3/@appstore/MariaDB10/usr/local/mariadb10/bin
./mysql -u root -p
# 以管理员身份进入数据库进行管理
show databases;
# 查看已存在数据库
drop database django;
# 把之前在windows下测试的django数据库删掉
create database django;
# 重新创建django数据库用于服务
use django;
# 选择django数据库
grant all on django.* TO 'django'@'localhost' identified by 'Suyu123!@#';
# 向MySQL数据库中授予特定用户对特定数据库的全部权限,并且指定了用户的登录凭据
ALTER DATABASE django DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 修改数据库编码,解决中文乱码问题

五、拉取项目并修改./netopscenter/settings.py

1
git clone https://github.com/XiuziSeven/NetOpsCenter.git

找到数据库配置代码,修改数据库名及连接用户名、密码、数据库地址。

六、初始化数据库

1
2
python manage.py makemigrations app
python manage.py migrate

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
2
UPDATE mysql.user SET host = '10.139.27.%' WHERE User = 'django';
FLUSH PRIVILEGES;

注意:

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
2
GRANT ALL PRIVILEGES ON django.* TO 'django'@'10.139.27.%';
FLUSH PRIVILEGES;

6.1.4 重新执行数据库初始化,均无报错了

(NetOpsCenter) E:\pythoncode\NetOpsCenter>python manage.py makemigrations app
No changes detected in app ‘app’
python manage.py migrate #无报错

七、创建默认管理员账号

1
2
python manage.py createsuperuser #创建管理员
python manage.py help #帮助

有个天坑,是我在windows下测试发现的。

1、密码不能小于6位,且要有字母,否则无法登陆。

2、用户名必须是admin,其他用户名提示用户名无效。(登录后发现所创建用户都能看到,说明创建成功了,但是就是不能登录)

是否个例需要大家测试。

2024-5-22:实际上在linux(ubuntu22)下测试也是同样问题,大家小心。

八、运行服务

1
python manage.py runserver 0.0.0.0:8000

九、其他

9.1 防火墙放行

1
2
3
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
firewall-cmd --list-ports

9.2 ubuntu下手动执行脚本启动服务

1
2
3
4
5
6
7
8
9
#!/bin/bash
# 等效于@echo off,关闭命令回显,我不确认是否有效,阿里ai给的
exec &>/dev/null
# 使用conda激活miniconda3环境,可以先用conda info命令确认路径
source /home/bg4vrg/miniconda3/bin/activate /home/bg4vrg/miniconda3/envs/netopscenter
# 更改工作目录到NetOpsCenter目录
cd /home/bg4vrg/NetOpsCenter
# 运行python manage.py命令
python manage.py runserver 0.0.0.0:8000

注意ubuntu下要使用/bin/bash netopscenter.sh执行脚本,因为ubuntu和centos不同,默认解释器是dash。

9.2.1 ubuntu下创建服务开机自启动

1
2
3
4
5
6
7
8
9
10
#新增服务,名称为netopscenter
sudo nano /etc/systemd/system/netopscenter.service
# 启用激活netopscenter服务
sudo systemctl enable netopscenter.service
# 启动netopscenter服务
sudo systemctl start netopscenter.service
# 查看netopscenter服务状态
sudo systemctl status netopscenter.service
# 查看服务日志
sudo journalctl -u netopscenter.service

上面/etc/systemd/system/netopscenter.service内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=NetOpsCenter Startup Script
After=network.target

[Service]
User=root
ExecStart=/bin/bash -c '/home/bg4vrg/netopscenter.sh'
Restart=on-failure
RestartSec=50 # 重启间隔,单位为秒

[Install]
WantedBy=multi-user.target

/bin/bash -c '/home/bg4vrg/netopscenter.sh'

这里,/bin/bash -c表示使用bash解释器执行紧跟其后的命令字符串

重启,检查服务生效。

基于vue+django开发的网络设备轻量化管理平台NetOpsCenter

https://bg4vrg.com/post/20240418192744.html

作者

fei

发布于

2024-04-18

更新于

2024-05-22

许可协议

评论