在Rocky Linux 9.2上从源码编译安装NetBox 3.5.6:一份避开Docker的详细配置手册
2026/5/2 8:25:48 网站建设 项目流程

在Rocky Linux 9.2上从源码编译安装NetBox 3.5.6:一份避开Docker的详细配置手册

对于需要深度定制NetBox或对容器化部署有顾虑的技术团队而言,从源码构建不仅提供了完整的代码控制权,还能根据实际需求灵活调整系统架构。本文将手把手带你在Rocky Linux 9.2上搭建生产级NetBox环境,涵盖从依赖配置到性能调优的全流程实战经验。

1. 环境准备与系统优化

在开始前,建议使用4核CPU、8GB内存及100GB存储的硬件配置。我们选择Rocky Linux 9.2作为基础平台,其与RHEL 9的二进制兼容性保证了长期支持稳定性。

系统基础配置:

# 禁用SELinux和防火墙(生产环境需按需调整) sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config sudo setenforce 0 sudo systemctl disable --now firewalld # 安装开发工具链 sudo dnf install -y gcc libxml2-devel libxslt-devel libffi-devel \ libpq-devel openssl-devel redhat-rpm-config git tree vim bash-completion

存储优化建议:

  • 数据库分区采用XFS文件系统
  • 为/opt/netbox单独挂载高性能SSD
  • 设置合理的swappiness值(建议10-30)

提示:执行sudo tuned-adm profile throughput-performance可启用性能优化方案

2. 核心依赖部署

2.1 PostgreSQL 15深度配置

采用官方仓库安装最新稳定版:

sudo dnf module install postgresql:15 -y sudo postgresql-setup --initdb

关键配置文件调整:

# 修改认证方式 sudo sed -i 's/ident/scram-sha-256/g' /var/lib/pgsql/data/pg_hba.conf # 性能参数优化(8GB内存示例) echo " shared_buffers = 2GB effective_cache_size = 6GB maintenance_work_mem = 512MB work_mem = 16MB random_page_cost = 1.1 max_connections = 100 " | sudo tee -a /var/lib/pgsql/data/postgresql.conf

数据库初始化:

CREATE DATABASE netboxdb TEMPLATE template0 ENCODING 'UTF8'; CREATE USER netbox WITH PASSWORD 'YourStrongPassword'; GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox; ALTER DATABASE netboxdb SET timezone TO 'Asia/Shanghai';

2.2 Redis 6缓存系统

安装与安全加固:

sudo dnf install -y redis sudo sed -i 's/^# requirepass .*/requirepass YourRedisPassword/' /etc/redis/redis.conf echo "maxmemory 1gb" | sudo tee -a /etc/redis/redis.conf echo "maxmemory-policy allkeys-lru" | sudo tee -a /etc/redis/redis.conf

验证连接:

redis-cli -a YourRedisPassword ping

3. NetBox源码部署实战

3.1 代码获取与环境初始化

创建专用用户和目录:

sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox sudo mkdir -p /opt/netbox sudo chown -R netbox:netbox /opt/netbox

源码获取与虚拟环境配置:

sudo -u netbox git clone -b v3.5.6 --depth 1 https://github.com/netbox-community/netbox.git /opt/netbox cd /opt/netbox sudo -u netbox python3 -m venv venv

依赖安装加速技巧:

sudo -u netbox tee /opt/netbox/pip.conf <<EOF [global] index-url = https://mirrors.aliyun.com/pypi/simple/ trusted-host = mirrors.aliyun.com EOF

3.2 关键配置文件详解

configuration.py核心参数示例:

# 安全配置 SECRET_KEY = '生成的安全密钥' ALLOWED_HOSTS = ['netbox.yourdomain.com', '192.168.1.100'] # 数据库连接 DATABASE = { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'netboxdb', 'USER': 'netbox', 'PASSWORD': 'YourStrongPassword', 'HOST': 'localhost', 'PORT': '', 'CONN_MAX_AGE': 300, 'OPTIONS': {'sslmode': 'prefer'}, } # 国际化设置 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True

生成密钥的安全方法:

sudo -u netbox python3 /opt/netbox/netbox/generate_secret_key.py

4. 服务集成与优化

4.1 Gunicorn高级配置

定制化gunicorn.py

bind = '127.0.0.1:8001' workers = (2 * cpu_count()) + 1 worker_class = 'gunicorn.workers.gthread.ThreadWorker' threads = 3 max_requests = 1000 max_requests_jitter = 50 timeout = 300

系统服务配置示例:

# /etc/systemd/system/netbox.service [Unit] Description=NetBox WSGI Service After=network.target [Service] User=netbox Group=netbox WorkingDirectory=/opt/netbox/netbox ExecStart=/opt/netbox/venv/bin/gunicorn \ --pythonpath /opt/netbox/netbox \ --config /opt/netbox/gunicorn.py \ netbox.wsgi Restart=on-failure RestartSec=30s [Install] WantedBy=multi-user.target

4.2 Nginx性能调优

推荐配置模板:

upstream netbox { server 127.0.0.1:8001; keepalive 32; } server { listen 80; server_name netbox.yourdomain.com; client_max_body_size 50m; keepalive_timeout 300; location /static/ { alias /opt/netbox/netbox/static/; expires 30d; add_header Cache-Control "public"; } location / { proxy_pass http://netbox; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 600; } }

启用HTTP/2和Gzip压缩:

listen 443 ssl http2; gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;

5. 高级维护技巧

5.1 自动化备份方案

数据库备份脚本示例:

#!/bin/bash BACKUP_DIR="/var/backups/netbox" DATE=$(date +%Y%m%d) pg_dump -U netbox -Fc netboxdb > $BACKUP_DIR/netbox_db_$DATE.dump tar czf $BACKUP_DIR/netbox_media_$DATE.tar.gz /opt/netbox/netbox/media/ find $BACKUP_DIR -type f -mtime +30 -delete

5.2 监控指标收集

Prometheus监控端点配置:

# configuration.py 新增 METRICS_ENABLED = True

关键监控指标:

  • 请求响应时间P99
  • PostgreSQL连接池使用率
  • Redis内存占用
  • 后台任务队列积压

5.3 常见故障排查

启动问题检查清单:

  1. 检查systemctl status netbox错误日志
  2. 验证数据库连接权限
  3. 确认Redis服务可达性
  4. 检查静态文件权限(chmod 755)
  5. 查看/var/log/nginx/error.log

性能瓶颈定位:

# 数据库慢查询分析 sudo -u postgres pg_stat_activity # Gunicorn工作状态 sudo journalctl -u netbox --since "1 hour ago"

6. 定制化开发指南

6.1 菜单本地化实践

修改/opt/netbox/netbox/navigation/menu.py示例:

from django.utils.translation import gettext as _ DEVICES_MENU = Menu( label=_('设备管理'), icon_class='mdi mdi-server', groups=( MenuGroup( label=_('物理设备'), items=( get_model_item('dcim', 'device', _('设备列表')), get_model_item('dcim', 'devicetype', _('设备型号')), ), ), ), )

6.2 插件开发环境

创建插件模板:

source /opt/netbox/venv/bin/activate python3 ../manage.py startplugin your_plugin

典型插件结构:

your_plugin/ ├── __init__.py ├── models.py ├── api/ ├── templates/ ├── views.py └── urls.py

在项目实践中,我们发现通过源码安装虽然初期配置稍复杂,但后期维护和扩展明显更加灵活。特别是在需要修改核心功能或开发定制插件时,这种部署方式展现出独特优势。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询