最完整的Jumpserver离线部署指南:从依赖到启动的全流程解析
你是否还在为内网环境无法连接互联网而发愁如何部署Jumpserver?是否在寻找一份详尽可靠的离线安装方案?本文将为你提供从环境准备到服务启动的完整离线部署流程,无需联网即可完成Jumpserver的部署与配置。读完本文后,你将能够:
- 掌握离线环境下的依赖包准备方法
- 理解Jumpserver的离线安装脚本工作原理
- 独立完成从安装到启动的全流程操作
一、离线部署前的环境准备
1.1 系统要求
Jumpserver支持多种Linux发行版,在离线部署前需要确认目标服务器满足以下基本要求:
- 操作系统:CentOS 7/8、Ubuntu 18.04/20.04 LTS
- 内存:至少4GB RAM
- 硬盘:至少20GB可用空间
- 权限:需要root用户权限执行安装操作
1.2 离线安装包获取
官方提供了完整的离线安装包,你可以通过以下两种方式获取:
- 从拥有互联网访问权限的机器下载完整安装包,然后传输到目标服务器
- 使用项目提供的脚本在联网环境下预下载所有依赖,然后迁移到离线环境
相关的下载脚本可以在项目的requirements目录中找到,包括:
- requirements/deb_pkg.sh:Debian/Ubuntu系统的依赖安装脚本
- requirements/rpm_pkg.sh:RHEL/CentOS系统的依赖安装脚本
二、依赖包的离线准备
2.1 Debian/Ubuntu系统依赖处理
对于Debian系系统,可以使用deb_pkg.sh脚本预先下载所需的deb包。该脚本包含了所有必要的系统依赖:
#!/bin/bash
apt install \
g++ make iputils-ping default-libmysqlclient-dev libpq-dev \
libffi-dev libldap2-dev libsasl2-dev openssh-client sshpass pkg-config libxml2-dev \
libxmlsec1-dev libxmlsec1-openssl libaio-dev freetds-dev freerdp2-dev
要离线使用此脚本,建议在联网的相同系统版本上执行以下命令:
# 在联网机器上下载所有依赖包但不安装
apt-get download $(cat requirements/deb_pkg.sh | grep -v '#' | tr '\n' ' ')
然后将下载的所有.deb文件复制到离线服务器的/var/cache/apt/archives/目录,即可使用dpkg -i *.deb命令批量安装。
2.2 RHEL/CentOS系统依赖处理
对于RHEL系系统,rpm_pkg.sh脚本定义了所需的RPM包:
#!/bin/bash
yum -y install \
gcc-c++ sshpass mariadb-devel openldap-devel openssh-clients libxml2-devel \
xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel \
postgresql-devel freerdp-devel
在联网环境下,可以使用以下命令将所有RPM包下载到本地:
# 安装yumdownloader工具
yum install -y yum-utils
# 下载所有依赖包
yumdownloader --resolve $(cat requirements/rpm_pkg.sh | grep -v '#' | tr '\n' ' ')
将下载的RPM包复制到离线服务器后,使用以下命令创建本地yum仓库并安装:
# 创建本地仓库
createrepo /path/to/rpms
# 创建repo文件
cat > /etc/yum.repos.d/local.repo << EOF
[local]
name=Local Repository
baseurl=file:///path/to/rpms
enabled=1
gpgcheck=0
EOF
# 安装依赖
yum install -y $(cat requirements/rpm_pkg.sh | grep -v '#' | tr '\n' ' ')
三、Docker离线部署方案
如果目标服务器支持Docker,使用Docker进行离线部署会更加便捷。Jumpserver提供了完整的Dockerfile和相关脚本,可以预先构建镜像后在离线环境中使用。
3.1 构建Docker镜像
在联网环境中,使用项目提供的utils/build_docker.sh脚本构建Docker镜像:
# 克隆仓库
git clone https://gitcode.com/GitHub_Trending/ju/jumpserver
cd jumpserver
# 构建Docker镜像
bash utils/build_docker.sh
构建完成后,保存镜像为tar文件:
docker save -o jumpserver-image.tar jumpserver/jumpserver:latest
3.2 离线环境加载镜像
将jumpserver-image.tar文件传输到离线服务器后,使用以下命令加载镜像:
docker load -i jumpserver-image.tar
然后使用Docker Compose启动服务。需要提前准备好docker-compose.yml文件,可以从项目仓库中获取并根据需要修改。
四、手动离线安装步骤
4.1 数据库准备
Jumpserver需要数据库支持,在离线环境中可以选择以下数据库之一:
- SQLite:无需额外安装,适合测试环境
- MySQL/MariaDB:需要预先在离线环境中安装配置
- PostgreSQL:需要预先在离线环境中安装配置
数据库初始化脚本可以在项目中找到,相关SQL文件路径为utils/django_migrations.sql。
4.2 应用部署
-
将Jumpserver源代码复制到离线服务器,可以通过U盘或其他存储设备传输
-
安装Python依赖:
# 在联网环境中下载依赖包 pip download -r requirements/requirements.txt -d /path/to/offline_packages # 在离线环境中安装 pip install --no-index --find-links=/path/to/offline_packages -r requirements/requirements.txt -
配置Jumpserver:
# 复制配置文件模板 cp config_example.yml config.yml # 编辑配置文件,设置数据库连接等信息 vi config.yml -
初始化数据库:
python apps/manage.py migrate python apps/manage.py collectstatic --noinput -
创建管理员账户:
python apps/manage.py createsuperuser
4.3 服务启动
使用项目提供的entrypoint脚本启动服务:
bash entrypoint.sh
或者使用systemd管理服务,创建服务文件:
[Unit]
Description=Jumpserver Service
After=network.target mariadb.service
[Service]
User=root
WorkingDirectory=/path/to/jumpserver
ExecStart=/bin/bash entrypoint.sh
Restart=always
[Install]
WantedBy=multi-user.target
五、离线升级与维护
5.1 数据备份
定期备份数据是系统维护的重要部分,项目提供了utils/backup_db.sh脚本用于数据库备份:
# 使用备份脚本
bash utils/backup_db.sh
5.2 版本升级
离线环境下升级Jumpserver需要:
- 获取新版本源代码并传输到离线服务器
- 重复执行数据库迁移步骤
- 重启服务
升级前建议先备份数据和当前配置文件,以防出现兼容性问题。
六、常见问题解决
6.1 依赖缺失
如果安装过程中提示依赖缺失,可以使用以下命令查找提供该依赖的包:
# Debian/Ubuntu
apt-file search <缺失的文件>
# RHEL/CentOS
yum whatprovides <缺失的文件>
然后在联网环境中下载相应的包并手动安装。
6.2 服务启动失败
服务启动失败时,可以查看日志文件定位问题:
# 查看应用日志
tail -f /var/log/jumpserver/app.log
# 查看系统日志
journalctl -u jumpserver.service
七、总结
本文详细介绍了Jumpserver的多种离线安装方案,包括传统的手动安装和更便捷的Docker部署方式。通过预先准备依赖包和相关资源,可以在没有互联网连接的环境中成功部署Jumpserver。
项目中提供了丰富的脚本和工具来简化离线部署过程,关键文件路径总结如下:
- 系统依赖脚本:requirements/deb_pkg.sh、requirements/rpm_pkg.sh
- Docker构建脚本:utils/build_docker.sh
- 数据库备份脚本:utils/backup_db.sh
- 数据库迁移SQL:utils/django_migrations.sql
选择适合自己环境的部署方案,并严格按照步骤操作,即可顺利完成Jumpserver的离线部署。如有其他问题,可以参考项目官方文档或社区寻求帮助。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



