jumpserver 3.0 部署关键在数据库授权(需明确指定'127.0.0.1'而非'localhost')、python依赖兼容性(替换mysql-python为pymysql)、手动执行migrate/collectstatic/runserver三步启动,缺一不可。

JumpServer 3.0 在 Linux 上不是“装完依赖就能跑”,核心卡点在数据库权限、Python 环境兼容性、以及服务启动方式变更——它不再用 python install.py,而是依赖完整环境初始化和手动启动 manage.py。
MySQL 用户权限必须填对 IP,不能只写 localhost
JumpServer 3.0 连接 MySQL 时默认走 TCP,不是 Unix socket。如果你在 MySQL 里执行 GRANT ... TO 'jumpserver'@'localhost',服务启动时会报错 Access denied for user 'jumpserver'@'127.0.0.1'(注意:localhost ≠ 127.0.0.1)。
- 正确做法是显式授权:
GRANT ALL ON jumpserver.* TO 'jumpserver'@'127.0.0.1' IDENTIFIED BY 'your_password'; - 或者更宽松但可控的写法:
GRANT ALL ON jumpserver.* TO 'jumpserver'@'192.168.10.%' IDENTIFIED BY 'your_password';(匹配内网段) - 执行后务必
FLUSH PRIVILEGES; - 检查是否生效:
SELECT host,user FROM mysql.user WHERE user='jumpserver';
pip install -r requirements.txt 很容易失败,得调参数重试
JumpServer 3.0 的 requirements.txt 里包含 MySQL-python==1.2.5 和旧版 Django==1.6,在较新系统(如 CentOS 7.6+ / Python 2.7.15+)上编译会出错,常见报错包括:error: command 'gcc' failed with exit status 1 或 ImportError: No module named MySQLdb。
- 先装系统级依赖:
yum install -y mysql-devel gcc python-devel - 升级 pip 和 setuptools:
pip install --upgrade pip setuptools - 换国内源安装(避免超时中断):
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple - 若仍失败,可临时注释掉
MySQL-python行,改用PyMySQL(需在jumpserver/settings.py开头加import pymysql; pymysql.install_as_MySQLdb())
启动服务必须进 jumpserver 目录再 runserver,不能 cd 错路径
JumpServer 3.0 没有全局 service 脚本,service.sh 是旧版遗留物,新版靠 python manage.py runserver 启动,但路径一错就找不到配置或静态文件。
- 确认当前目录是 JumpServer 根目录(含
manage.py、jumpserver/、settings.py) - 运行前先生成数据库表:
python manage.py migrate - 创建超级用户:
python manage.py createsuperuser - 真正启动命令:
python manage.py runserver 0.0.0.0:8080(别硬绑 80,避免要 root 权限) - 如果提示
CommandError: You must set settings.ALLOWED_HOSTS,编辑jumpserver/conf.py或settings.py,把ALLOWED_HOSTS = ['*']或填具体 IP(如['192.168.10.100'])
Web 访问 502 或白屏,大概率是静态文件没收集
JumpServer 3.0 前端资源(CSS/JS)默认不自动部署,直接访问 /static/ 会 404,导致页面加载失败,看起来像“打不开”。
- 必须手动收集静态文件:
python manage.py collectstatic --noinput - 该命令会把所有 app 的 static 文件合并到
static/目录下(默认在项目根目录) - 确保
STATIC_ROOT在settings.py中指向正确路径,例如:STATIC_ROOT = os.path.join(BASE_DIR, 'static') - 如果用 Nginx 反代,记得配置
location /static/ { alias /path/to/jumpserver/static/; }
JumpServer 3.0 的部署不是线性流程,而是一连串“改完一点才能进下一步”的链式依赖。最容易被忽略的是:MySQL 授权 IP 和 collectstatic 这两步,它们不出错不报红,但会导致整个 Web 界面不可用。











