Jumpserver 迁移升级步骤


公司原jumpserver环境采用组件容器化部署,根据官方文档所述,未使用installer部署的环境不可直接升级,需要使用installer安装最新版环境后进行数据迁移

数据备份

记录原环境config.yml中的数据库信息以及SECRET_KEY和BOOTSTRAP_TOKEN

DB_HOST: 127.0.0.1   # 数据库服务器 IP
DB_PORT: 3306        # 数据库服务器 端口
DB_USER: jumpserver  # 连接数据库的用户
DB_PASSWORD: ******  # 连接数据库用户的密码
DB_NAME: jumpserver  # JumpServer 使用的数据库

SECRET_KEY: *******************************
BOOTSTRAP_TOKEN: ************************

原环境停机

source /opt/py3/bin/activate
./jms stop

备份整个目录

cp /opt/jumpserver /opt/jumpserver_bak

备份数据库

cp /opt/jumpserver /opt/jumpserver_bak

修改数据库字符集

if grep -q 'COLLATE=utf8_bin' /opt/jumpserver.sql; then
    cp /opt/jumpserver.sql /opt/jumpserver_bak.sql
    sed -i 's@ COLLATE=utf8_bin@@g' /opt/jumpserver.sql
    sed -i 's@ COLLATE utf8_bin@@g' /opt/jumpserver.sql
else
    echo "备份数据库字符集正确";
fi

Installer部署新环境

jumpserver官方发布仅维护此安装方式

获取installer安装包

cd /opt
yum -y install wget
wget https://github.com/jumpserver/installer/releases/download/v2.14.2/jumpserver-installer-v2.14.2.tar.gz
tar -xf jumpserver-installer-v2.14.2.tar.gz
cd jumpserver-installer-v2.14.2

修改installer的config.txt文件,填写原环境的BOOTSTRAP_TOKEN和SECRET_KEY

***
# Core 配置
### 启动后不能再修改,否则密码等等信息无法解密
SECRET_KEY=                           # 从旧版本的配置文件获取后填入 (*)
BOOTSTRAP_TOKEN=                      # 从旧版本的配置文件获取后填入 (*)
LOG_LEVEL=ERROR
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=true  
***

开始部署

./jmsctl.sh install

部署成功后启停一次服务,用于初始化数据库

./jmsctl.sh start
./jmsctl.sh stop

数据迁移

进入mysql容器

docker exec -it jms_mysql /bin/bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD

删除并重新创建默认数据库

drop database jumpserver;
create database jumpserver default charset 'utf8';
exit

还原数据

# /opt/jumpserver.sql 为旧版本数据库
./jmsctl.sh restore_db /opt/jumpserver.sql

开始还原数据库: /opt/jumpserver.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
数据库恢复成功!

迁移完成,重启服务

./jmsctl.sh restart

开启HTTPS

修改jumpserver config.txt

vim /opt/jumpserver/config/config.txt

开启nginx HTTPS_PORT

## Nginx 配置, USE_LB=1 表示开启, 为 0 的情况下, HTTPS_PORT 定义不生效
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389

USE_LB=1             #修改为1
HTTPS_PORT=443       #端口默认443

导入证书文件

#将证书文件放置/opt/jumpserver/config/nginx/cert/目录
ll /opt/jumpserver/config/nginx/cert/
-rw-r--r--. 1 root root jumpserver.transwarp.io.bundle.crt
-rw-r--r--. 1 root root jumpserver.transwarp.io.key.pem

修改nginx配置

vim /opt/jumpserver/config/nginx/lb_http_server.conf

server {
  listen 443 ssl;
  server_name jumpserver.transwarp.io;      # 取消注释并自行修改成你自己的域名
  server_tokens off;
  ssl_certificate cert/jumpserver.transwarp.io.bundle.crt;        # 修改 server.crt 为你的证书, 不要改路径 certs/
  ssl_certificate_key cert/jumpserver.transwarp.io.key.pem;    # 修改 server.key 为你的证书, 不要改路径 certs/

重启服务,https生效

cd /opt/jumpserver-installer-v2.14.2
./jmsctl.sh restart

参考文档

https://docs.jumpserver.org/zh/master/install/migration/

最后,Have a nice day~


评论