
NetBox 4.x 源码部署实战Rocky Linux 9 系统下 3 大核心服务配置详解1. 环境准备与系统配置在开始部署 NetBox 4.x 之前我们需要确保 Rocky Linux 9 系统已经完成基础环境配置。作为 RHEL 系的现代发行版Rocky Linux 9 提供了稳定的软件包支持和长期维护保障。首先更新系统并安装基础开发工具链sudo dnf update -y sudo dnf groupinstall Development Tools -y sudo dnf install -y epel-release关键依赖项安装Python 3.13 及相关开发库Git 版本控制工具数据库和缓存系统依赖sudo dnf install -y python3.13 python3.13-devel git libxml2-devel libxslt-devel libffi-devel openssl-devel提示Rocky Linux 9 默认仓库可能不包含最新版 PostgreSQL 和 Redis建议通过官方仓库安装。2. 数据库服务配置2.1 PostgreSQL 16 安装与优化NetBox 要求使用 PostgreSQL 作为后端数据库以下是 PostgreSQL 16 的安装步骤# 添加 PostgreSQL 官方仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 安装 PostgreSQL 16 服务器 sudo dnf install -y postgresql16-server postgresql16-contrib # 初始化数据库 sudo /usr/pgsql-16/bin/postgresql-16-setup initdb sudo systemctl enable postgresql-16 sudo systemctl start postgresql-16性能优化配置编辑/var/lib/pgsql/16/data/postgresql.conf调整以下参数shared_buffers 1GB # 建议系统内存的25% work_mem 16MB # 每个查询操作的内存 maintenance_work_mem 256MB # 维护操作的内存 effective_cache_size 3GB # 系统内存的50-75% random_page_cost 1.1 # SSD存储建议值2.2 创建 NetBox 数据库sudo -u postgres psql在 PostgreSQL 交互终端中执行CREATE DATABASE netbox; CREATE USER netbox WITH PASSWORD YourStrongPassword123!; GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox; \q3. Redis 7 缓存服务配置3.1 Redis 7 安装与安全加固sudo dnf install -y redis7 # 修改配置文件 /etc/redis/redis.conf sudo sed -i s/^bind 127.0.0.1/bind 127.0.0.1 ::1/ /etc/redis/redis.conf sudo sed -i s/^protected-mode no/protected-mode yes/ /etc/redis/redis.conf sudo sed -i s/^# requirepass foobared/requirepass YourRedisPass123!/ /etc/redis/redis.conf sudo systemctl enable redis sudo systemctl start redis3.2 Redis 多数据库配置NetBox 需要两个独立的 Redis 数据库用途数据库ID密码任务队列0YourRedisPass123!缓存1YourRedisPass123!验证 Redis 连接redis-cli -a YourRedisPass123! PING4. NetBox 4.x 源码部署4.1 获取源码与目录结构sudo mkdir -p /opt/netbox sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git /opt/netbox目录权限设置sudo groupadd --system netbox sudo adduser --system -g netbox netbox sudo chown --recursive netbox /opt/netbox/netbox/media/4.2 Python 虚拟环境配置cd /opt/netbox python3.13 -m venv venv source venv/bin/activate使用清华 PyPI 源加速依赖安装pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install --upgrade pip pip install -r requirements.txt4.3 核心配置文件定制复制并编辑配置文件cd /opt/netbox/netbox/netbox/ sudo -u netbox cp configuration_example.py configuration.py关键配置项说明# configuration.py 核心配置 ALLOWED_HOSTS [netbox.yourdomain.com, 192.168.1.100] DATABASE { NAME: netbox, USER: netbox, PASSWORD: YourStrongPassword123!, HOST: localhost, PORT: , CONN_MAX_AGE: 300, } REDIS { tasks: { HOST: localhost, PORT: 6379, PASSWORD: YourRedisPass123!, DATABASE: 0, SSL: False, }, caching: { HOST: localhost, PORT: 6379, PASSWORD: YourRedisPass123!, DATABASE: 1, SSL: False, } } # 生成并设置唯一密钥 SECRET_KEY 生成50字符以上的随机字符串注意可使用/opt/netbox/generate_secret_key.py生成安全的 SECRET_KEY5. 系统服务集成5.1 Gunicorn 配置复制并修改 Gunicorn 配置文件sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py推荐配置调整# /opt/netbox/gunicorn.py bind 127.0.0.1:8001 workers 3 threads 3 timeout 1205.2 Systemd 服务配置sudo cp /opt/netbox/contrib/*.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now netbox netbox-rq验证服务状态systemctl status netbox5.3 Nginx 反向代理配置安装并配置 Nginxsudo dnf install -y nginx sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/conf.d/netbox.conf典型 Nginx 配置示例server { listen 80; server_name netbox.yourdomain.com; client_max_body_size 25m; location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; } }启用配置并重启服务sudo systemctl enable nginx sudo systemctl restart nginx6. 初始化与日常维护6.1 创建管理员账户source /opt/netbox/venv/bin/activate cd /opt/netbox/netbox python3 manage.py createsuperuser6.2 定时维护任务设置每日自动维护sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping6.3 备份策略推荐备份方案数据库备份sudo -u postgres pg_dump -Fc netbox /backup/netbox_$(date %Y%m%d).dump配置文件备份tar czvf /backup/netbox_config_$(date %Y%m%d).tar.gz /opt/netbox/netbox/netbox/configuration.py媒体文件备份rsync -av /opt/netbox/netbox/media/ /backup/netbox_media/7. 高级配置与优化7.1 中文语言支持在configuration.py中添加LANGUAGE_CODE zh-hans TIME_ZONE Asia/Shanghai USE_I18N True USE_L10N True USE_TZ True7.2 性能调优参数# Django 缓存配置 CACHES { default: { BACKEND: django.core.cache.backends.db.DatabaseCache, LOCATION: django_cache_table, TIMEOUT: 300, } } # 会话配置 SESSION_ENGINE django.contrib.sessions.backends.cached_db7.3 安全加固建议启用 HTTPSsudo dnf install -y certbot python3-certbot-nginx sudo certbot --nginx -d netbox.yourdomain.com防火墙配置sudo firewall-cmd --permanent --add-servicehttp --add-servicehttps sudo firewall-cmd --reload定期更新检查cd /opt/netbox git fetch origin git status8. 故障排查与日志分析常见问题排查命令# 检查服务状态 systemctl status netbox netbox-rq nginx postgresql-16 redis # 查看日志 journalctl -u netbox --since 1 hour ago tail -f /var/log/nginx/error.log sudo -u postgres psql -c SELECT pid, query_start, query FROM pg_stat_activity WHERE state active;典型错误解决方案数据库连接问题检查/var/lib/pgsql/16/data/pg_hba.conf中的认证方法验证 PostgreSQL 日志/var/lib/pgsql/16/data/log/postgresql-*.log静态文件404错误cd /opt/netbox/netbox python3 manage.py collectstatic --no-input任务队列积压sudo systemctl restart netbox-rq redis-cli -a YourRedisPass123! --stat9. 生产环境部署建议对于企业级部署建议考虑以下增强配置高可用架构PostgreSQL 主从复制Redis Sentinel 集群Nginx 负载均衡监控方案# Prometheus 监控指标端点 sudo dnf install -y prometheus-node-exporter备份恢复测试# 测试数据库恢复 sudo -u postgres pg_restore -C -d postgres /backup/netbox_20230101.dump性能基准测试ab -n 1000 -c 100 http://netbox.yourdomain.com/10. 版本升级与维护升级 NetBox 的标准流程cd /opt/netbox git fetch origin git checkout v4.x.x # 替换为目标版本 sudo systemctl stop netbox netbox-rq source venv/bin/activate pip install -r requirements.txt --upgrade python3 manage.py migrate python3 manage.py collectstatic --no-input sudo systemctl start netbox netbox-rq升级前检查清单查看官方发布说明中的破坏性变更备份数据库和配置文件在测试环境验证升级流程规划维护窗口期通知用户