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~