基于 Ubuntu 20.04 系统 部署 NetBox

提示:请注意 信息的时效性、环境的匹配度。侵删!


前言

  NetBox 是一个集 IP地址管理工具和网络设施基础结构管理的工具。适合数据中心、园区网、中小企业等使用。


Netbox 官网:
  https://github.com/netbox-community/netbox




`提示:以下是本篇文章正文内容,下面案例可供参考。建议初次安装参考文中的路径配置。`

NetBox 安装


一、环境

  • Ubuntu20.04 LTS
  • 2核 4G
  • PostgreSQL
  • > v10
  • Redis
  • > 4.0
  • NetBox
  • > v3
  • Python
  • > 3.8
  • Git



二、安装


1.安装 PostgreSQL

# 安装 
sudo apt install -y postgresql

# 验证
user@ubuntu:~$ psql -V
psql (PostgreSQL) 12.12 (Ubuntu 12.12-0ubuntu0.20.04.1)

# 配置数据库并设置开机自启
user@ubuntu:~$ sudo systemctl start postgresql  && sudo systemctl enable postgresql

# 创建数据库
user@ubuntu:~$ sudo -u postgres psql    # 进入数据库
# 建库授权
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'passwork';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
# 退出
\q

# 验证数据库状态
user@ubuntu:~$  psql --username netbox --password --host localhost netbox
Password:    # 密码输入上面的 password
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

netbox=> \conninfo
You are connected to database "netbox" as user "netbox" on host "localhost" (address "127.0.0.1") at port "5432".
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
netbox=> \q
user@ubuntu:~$ 

Netbox数据库的 备份导出 和 导入恢复 方法:

# 导入数据,postgres需要密码
user@ubuntu:~$ su postgres
postgres@ubuntu:/home/user$ psql netbox < netbox.sql

# 导出数据可以使用 pg_dump
postgres@ubuntu:/home/user$ pg_dump --username netbox --password --host localhost netbox > netbox.sql

# 记得切换用户 否则会报错:
user@ubuntu:~$ pg_dump
pg_dump: error: connection to database "user" failed: FATAL:  role "user" does not exist

2.安装 Redis

# 安装就行
user@ubuntu:~$  sudo apt install -y redis-server

# 查看版本信息
user@ubuntu:~$ redis-server -v
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=66bd629f924ac924

# 验证。返回 PONG 表示正常。
user@ubuntu:~$ redis-cli ping
PONG

3.安装 Python

# NetBox v3.0 开始最低支持 Python3.7,从 NetBox v3.2 开始将最低支持 Python3.8。

# 截止20220824 Ubuntu20.04 默认的 Python 版本为 3.8.10,有可能会仍缺少一些相关的依赖包。按需安装。

user@ubuntu:~$ sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev

3.安装 Netbox

# 可以通过 wget 或者 git 来下载。
user@ubuntu:~$ sudo mkdir -p /opt/netbox/ && cd /opt/netbox/

user@ubuntu:~$ sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
Cloning into '.'...
remote: Enumerating objects: 1173, done.
remote: Counting objects: 100% (1173/1173), done.
remote: Compressing objects: 100% (1097/1097), done.
remote: Total 1173 (delta 210), reused 427 (delta 49), pack-reused 0
Receiving objects: 100% (1173/1173), 4.31 MiB | 1.90 MiB/s, done.
Resolving deltas: 100% (210/210), done.
user@ubuntu:~$

# 创建系统用户 netbox.WSGI 和 HTTP 服务配置的运行需要它。
user@ubuntu:~$ sudo adduser --system --group netbox

# 将 /opt/netbox/netbox/media/ 目录设置成 netbox 用户权限,这个文件夹下是前端页面
user@ubuntu:~$ sudo chown --recursive netbox /opt/netbox/netbox/media/

4.修改 NetBox 配置文件

# 复制一份默认的配置文件:
user@ubuntu:~$ cd /opt/netbox/netbox/netbox/ && sudo cp configuration_example.py configuration.py

# 生成一个密钥,用来维护 HTTP 用户会话状态,配置文件里面要用到:
user@ubuntu:/opt/netbox/netbox/netbox$  python3 ../generate_secret_key.py 
TWRBswpBFZfDW9Xj3QmOowxU3-uMMD)xx9A0cZsz(uKw500YOx

# 最小化配置运行如下:
user@ubuntu:/opt/netbox/netbox/netbox$ sudo vim  configuration.py
# :set number显示行号, 修改:
ALLOWED_HOSTS = ['*']  # 11行;允许所有客户端都可以访问前端页面

#  15~22 行。数据库,修改用户名和密码。
DATABASE = { 
    'NAME': 'netbox',
    'USER': 'netbox', # 修改用户名
    'PASSWORD': 'VIP@xdai.vip',  # 修改密码
    'HOST': 'localhost',
    'PORT': '',
    'CONN_MAX_AGE': 300,
}

# 60 行
SECRET_KEY = 'lKCyYG-q5qW0&3zK=*U9%Ga@yOzZOwEIz9JhrlIIdd*CXE0b#z'

# 203 行。 修改时区为 Asia/Shanghai
TIME_ZONE = 'Asia/Shanghai'

# 不同时期的配置文件不太相同,请根据最新的配置文件进行修改,以上仅供参考

5.安装其他可选的插件或组件

NetBox 支持插件和可选软件包。

组件可以写在 NetBox 根目录的 local_requirements.txt 文件中, 第一次初始化安装时 NetBox 会自动进行安装;后期也可以手动安装。

插件:
    官方文档

官方组件:

user@ubuntu:/opt/netbox/netbox/netbox$ sudo sh -c "echo 'napalm' >> /opt/netbox/local_requirements.txt"
user@ubuntu:/opt/netbox/netbox/netbox$ sudo sh -c "echo 'napalm-h3c-comware' >> /opt/netbox/local_requirements.txt"
  • django-storages 用于连接远程文件存储(默认是使用本地存储)

6.运行升级脚本

以上基础环境所依赖的软件已经部署完成,运行 upgrade.sh 初始化 Netbox,它会完成以下操作:

  • 创建 Python 的虚拟环境,后面许多配置都在虚拟环境中进行。
  • 安装 Netbox所需的 Python 包(根目录下的requirements.txt 和 local_requirements.txt)。
  • 初始化 Django 数据,进行数据库的迁移。
  • 本地生成离线文档
  • 生成静态资源文件

默认的 PIP国外源 可能会很慢,参考 pip 国内加速

# 升级
user@ubuntu:~$ sudo /opt/netbox/upgrade.sh
Upgrade complete! Don't forget to restart the NetBox services:

# 重启NetBox,第一次安装可以跳过。
user@ubuntu:~$ sudo systemctl restart netbox netbox-rq

进入虚拟环境配置Netbox

# 进入虚拟环境,退出直接 deactivate
user@ubuntu:~$ source /opt/netbox/venv/bin/activate

# 创建 django 管理员用户, 邮箱可以为空。
# 若是前面已经恢复过数据库这里可以跳过。
(venv)user@ubuntu:/opt/netbox/netbox$ python3 manage.py createsuperuser
Username (leave blank to use 'user'): admin
Email address:       
Password: 
Password (again): 
Superuser created successfully.

# 设置自动清理任务
# 注意脚本的路径,如果 NetBox 安装在其他路径,需要使用正确的绝对路径。
# housekeeping 管理命令用来处理一些定期清理任务,例如清除旧会话和过期的更改记录。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

6.Python试运行Netbox

# 运行Netbox 
(venv)user@ubuntu:/opt/netbox/netbox$ python3 manage.py runserver 0.0.0.0:8000 --insecure

# 若是无法访问,则检查 防火墙 或者 iptables 设置中是否放行了 8000端口
# 或者暂时关闭 防火墙,直到再次重启启动linux
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl stop firewalld

Netbox 试运行正常状态,验证完毕后 Ctrl + C 停止服务:
在这里插入图片描述

7.使用 Gunicorn 运行 Django 服务,并配置Nginx服务

运行 Django 服务

# 将Gunicorn配置复制到 /opt/netbox 中,这里使用默认配置。若自定义配置,则 Nginx配置也需要修改。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py

# 将Netbox 默认的systemd服务文件,复制到系统目录下
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
# 加载服务
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl daemon-reload
# 启动并设置为开机自启动
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl start netbox netbox-rq && sudo systemctl enable netbox netbox-rq
# 查看服务状态
(venv)user@ubuntu:/opt/netbox/netbox$ systemctl status netbox.service

(venv)user@ubuntu:/opt/netbox/netbox$ 
# 此时服务应该运行完成,但访问时可能会出现 静态文件 无法加载的问题

运行 Nginx 服务

# 安装 Nginx
(venv)user@ubuntu:/opt/netbox/netbox$ sudo apt install -y nginx
# 复制配置文件到 nginx 目录并覆盖 nginx.conf 。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/nginx.conf 

# Netbox 的 nginx.conf 配置默认使用 https模式, 更改为http模式。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo vim /etc/nginx/nginx.conf
[sudo] password for user: 

worker_processes auto;
pid /run/nginx.pid;

events {
  worker_connections 65535;
  multi_accept on;
}

http {
    include mime.types;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    server {
      listen 80;
      server_name  localhost;

      client_max_body_size 25m;

      location /static/ {
        alias /opt/netbox/netbox/static/;
      }

      location / {
        proxy_pass http://localhost:8001;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
      }
    }
}
# 若发生跨域错误,则可以将下列注释取消,复制到 location 下
		#add_header 'Access-Control-Allow-Origin' '*';
        #add_header 'Access-Control-Allow-Credentials' 'true';
        #add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        #add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

# 重启 Nginx 服务
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl restart nginx
(venv)user@ubuntu:/opt/netbox/netbox$ 
(venv)user@ubuntu:/opt/netbox/netbox$ 
(venv)user@ubuntu:/opt/netbox/netbox$ 
(venv)user@ubuntu:/opt/netbox/netbox$ 

9.测试,使用 80 端口来访问:

在这里插入图片描述
至此,NetBox 搭建完成!



引用

  • 基于centos7 部署 NetBox3_世界–的博客-CSDN博客_netbox部署
    • https://blog.csdn.net/sedbz/article/details/122988725
  • NetBox 文档
    • https://docs.netbox.dev/en/stable/introduction/
  • 插件 - NetBox 文档
    • https://docs.netbox.dev/en/stable/plugins/
  • netbox 导出 csv 中文乱码、时区修改_某呆啊的博客-CSDN博客
    • https://blog.csdn.net/q965844841qq/article/details/122570724
  • 修改已经导出的文件编码
    • https://blog.csdn.net/q965844841qq/article/details/119065251
  • NetBox 时区修改
    • https://blog.csdn.net/q965844841qq/article/details/122570724
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值