部署实践
当前选择的版本是
https: //docs.jumpserver.org/zh /v2.12.0/install /setup_by_fast/
架构图
Lina 是 JumpServer 的前端 UI 项目, 主要使用 Vue, Element UI 完成, 名字来源于 Dota 英雄 Lina
Luna 是 JumpServer Web Terminal 前端项目(网页命令行)
Core 是 JumpServer 的核心组件,由 Django 二次开发而来。
Koko 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。
Lion 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。
基础环境准备
注意得是新机器,否则你可能会遇见各种坑,那就随机应变的解决吧
1.环境准备
centos7
关闭防火墙 firewalld selinux
iptables -F
systemctl stop firewalld
systemctl disable firewalld
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel
2.第一个里程:需要部署跳板机依赖软件,重要
yum -y install git python-pip gcc automake autoconf python-devel vim sshpass lrzsz readline-devel zlib zlib-devel openssl openssl-devel
git --- 用于下载jumpserver软件程序
python-pip --- 用于安装python软件
gcc --- 解析代码中C语言信息(解释器)
automake --- 实现软件自动编译过程
autoconf --- 实现软件自动配置过程
python-devel --- 系统中需要有python依赖
readline-devel --- 在操作python命令信息时,实现补全功能
3.修改系统字符集为中文
localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
echo 'LANG="zh_CN.UTF-8" ' > /etc/locale.conf
[root@master-61 ~]
[root@master-61 ~]
[root@master-61 ~]
LANG=en_US.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8
组件版本
https: //docs.jumpserver.org/zh /v2.12.0/install /setup_by_lb/
通过负载均衡组件,即可得知需要部署的所有组件
一.部署mysql5.7
友情提示:mysql数据库密码请使用 "字母+数字"
可以和超哥配置的一样
用"yuchao666"
数据库密码连接,读取的是字符串类型
如果你的数据库密码是 "123456" 这样的纯数字,
在config .yml里面填入的DB_PASSWORD: "123456" 需要像这样,添加引号,否则报错。
网址
https:/ / docs.jumpserver.org/ zh/ v2.12 .0 / install/ setup_by_fast/
1 、配置yum源
yum - y localinstall http:/ / mirrors.ustc.edu.cn/ mysql- repo/ mysql57- community- release - el7.rpm
2 、关闭密钥检查
sed - i '/gpgcheck=1/c gpgcheck=0' / etc/ yum.repos.d/ mysql- community*
3 、安装mysql
yum clean all
yum install - y mysql- community- server
4 、初始化mysql数据
shell命令,修改mysql的启动脚本
mysql5.7 之后,默认初始化启动,会随机给你生成密码,你得去配置文件中找这个随机密码。
用如下命令,修改配置文件,可以让他默认别生成随机密码。
使用
https:/ / dev.mysql.com/ doc/ refman/ 5.7 / en/ data- directory- initialization.html
‘
if [ ! "$(cat /usr/bin/mysqld_pre_systemd | grep -v ^\# | grep initialize-insecure )" ]; then
sed - i "s@--initialize @--initialize-insecure @g" / usr/ bin/ mysqld_pre_systemd
fi
5 、启动服务
systemctl enable mysqld
systemctl start mysqld
6 、检查进程端口
[root@db -51 ~ ]#netstat - tunlp| grep mysql
[root@db -51 ~ ]#ps - ef| grep mysql
7 、连接数据库
mysql - uroot
创建数据库,用于堡垒机写入数据表信息
create database jumpserver default charset 'utf8' ;
设置弱密码参数,默认密码难度限度大,数字字母特殊符号
set global validate_password_policy= LOW;
创建用户,jumpserver以及密码,用于远程连接
create user 'jumpserver' @'%' identified by 'afei2222' ;
用于授予远程连接权限
grant all on jumpserver.* to 'jumpserver' @'%' ;
flush privileges;
数据库mysql5.7 配置完成
二、部署redis-6.2.4
1、下载环境源码
下载基础环境
yum -y install epel-release wget make gcc-c++
cd /opt
下载源码
wget https://download.redis.io/releases/redis-6.2.4.tar.gz
2、安装redis
解压
tar -xf redis-6.2.4.tar.gz
cd redis-6.2.4
安装
make && make install PREFIX=/usr/local/redis
3、添加PATH变量
export PATH=$PATH :/usr/local/redis/bin/
echo 'export PATH=$PATH:/usr/local/redis/bin/' >> /etc/profile
source /etc/profile
4、配置redis
cp redis.conf /etc/redis.conf
sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis.conf
sed -i "s/daemonize no/daemonize yes/g" /etc/redis.conf
sed -i "561i maxmemory-policy allkeys-lru" /etc/redis.conf
sed -i "481i requirepass afei2222" /etc/redis.conf
5、验证配置是否生效
grep -Ev '^#|^$' /etc/redis.conf
6、 配置启动脚本
cat >/etc/systemd/system/redis.service <<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
EOF
7、启动redis
systemctl enable redis
systemctl start redis
8、测试
[root@db-51 /opt/redis-6.2.4]
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth afei1111
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
[root@db-51 /opt/redis-6.2.4]
172.16.1.51:6379>
172.16.1.51:6379> ping
(error) NOAUTH Authentication required.
172.16.1.51:6379> auth afei1111
OK
172.16.1.51:6379> auth afei1111
OK
172.16.1.51:6379> ping
PONG
172.16.1.51:6379> exit
三、部署core
网站
https: //docs.jumpserver.org/zh /v2.12.0/dev /build/
Core 是 JumpServer 的核心组件,由 Django 二次开发而来, 内置了 Lion Celery Beat Flower Daphne 服务。
配置源
yum源,基础环境部署
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
基础环境安装
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel
yum -y install git python-pip gcc automake autoconf python-devel vim sshpass lrzsz readline-devel zlib zlib-devel openssl openssl-devel
1、下载源码
mkdir /opt/jumpserver-v2.12.0
wget -O /opt/jumpserver-v2.12.0.tar.gz https://github.com/jumpserver/jumpserver/archive/refs/tags/v2.12.0.tar.gz
2、去除解压目录的以及目录
cd /opt ; tar -xf jumpserver-v2.12.0.tar.gz -C /opt/jumpserver-v2.12.0 --strip-components 1
3、
[root@master-61 /opt/jumpserver-v2.12.0]
总用量 28
requirements/
├── alpine_requirements.txt
├── deb_buster_requirements.txt
├── deb_requirements.txt
├── issues.txt
├── mac_requirements.txt
├── requirements.txt
└── rpm_requirements.txt
4、安装命令
yum install -y $(cat /opt/jumpserver-v2.12.0/requirements/rpm_requirements.txt)
安装python3
1、当前机器是有python2
[root@master-61 /opt/jumpserver-v2.12.0]
python python2 python2.7 python2.7-config python2-config python-config
2、编译安装python3
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
3、下载源码,编译安装
cd /opt && wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar -zxf Python-3.6.9.tgz
cd Python-3.6.9/
./configure --prefix=/opt/python369
make && make install
4、设置PATH变量
echo 'export PATH=$PATH:/opt/python369/bin/' >> /etc/profile
source /etc/profile
5、查看版本
[root@master-61 /opt/Python-3.6.9]
Python 3.6.9
[root@master-61 /opt/Python-3.6.9]
pip 18.1 from /opt/python369/lib/python3.6/site-packages/pip (python 3.6)
[root@master-61 /opt/Python-3.6.9]
/opt/python369/bin/python3
[root@master-61 /opt/Python-3.6.9]
/opt/python369/bin/pip3
安装python虚拟环境
查看模块列表
[root@master-61 /opt/Python-3.6.9]
Package Version
---------- -------
pip 18.1
setuptools 40.6.2
You are using pip version 18.1, however version 21.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command .
安装一个模块
[root@master-61 /opt/Python-3.6.9]
[root@master-61 /opt/Python-3.6.9]
Package Version
------------------ -----------
certifi 2022.5.18.1
charset-normalizer 2.0.12
idna 3.3
pip 18.1
requests 2.27.1
setuptools 40.6.2
urllib3 1.26.9
You are using pip version 18.1, however version 21.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command .
1.创建虚拟环境
cd /opt && python3 -m venv /opt/py3
2. 激活虚拟环境,通过PATH即可理解原理
[root@master-61 /opt]
(py3) [root@master-61 /opt]
/opt/py3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python369/bin/
(py3) [root@master-61 /opt]
安装core后端的项目依赖
(py3) [root@master-61 /opt]
(py3) [root@master-61 /opt/jumpserver-v2.12.0/requirements]
alpine_requirements.txt deb_requirements.txt mac_requirements.txt rpm_requirements.txt
deb_buster_requirements.txt issues.txt requirements.txt
(py3) [root@master-61 /opt/jumpserver-v2.12.0/requirements]
这个python模块,要么全部成功,要么全部会失败。
注意别报错即可。
别出现error,否则pip3命令会立即终止的,然后看报错,解决报错即可。
检查解释器的模块依赖
安装的模块依赖大约这么多,不一定完全一样
(py3) [root@master-61 /opt/jumpserver-v2.12.0/requirements]
198
修改core配置文件
这里需要对整个jumpserver后端进行配置修改
(py3) [root@master-61 /opt/jumpserver-v2.12.0]
以及注意了是yml语法配置文件,别写错了
生成服务运行需要的随机密钥,自动创建即可
if [ "$SECRET_KEY " = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=$SECRET_KEY " >> ~/.bashrc; echo $SECRET_KEY ; else echo $SECRET_KEY ; fi
if [ "$BOOTSTRAP_TOKEN " = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN " >> ~/.bashrc; echo $BOOTSTRAP_TOKEN ; else echo $BOOTSTRAP_TOKEN ; fi
检查2个随机密钥的值
(py3) [root@master-61 /opt/jumpserver-v2.12.0]
SECRET_KEY=0zxfott36HA44Wkc8mFLYwmsauEeNyXZPp07hiK8MiU5YwLIsN
BOOTSTRAP_TOKEN=7Xe9BCu6wDlA3RQS
配置文件,使用该变量。
SECRET_KEY: "$SECRET_KEY"
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"
DEBUG: true
LOG_LEVEL: DEBUG
SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_ENGINE: mysql
DB_HOST: 10.0 .0 .51
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: www.yuchaoit.cn
DB_NAME: jumpserver
HTTP_BIND_HOST: 0.0 .0 .0
HTTP_LISTEN_PORT: 8080
WS_LISTEN_PORT: 8070
REDIS_HOST: 10.0 .0 .52
REDIS_PORT: 6379
REDIS_PASSWORD: www.yuchaoit.cn
(py3) [root@master-61 /opt/jumpserver-v2.12.0 ]
SECRET_KEY: "$SECRET_KEY"
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"
DEBUG: true
LOG_LEVEL: DEBUG
SESSION_EXPIRE_AT_BROWSER_CLOSE: true
DB_ENGINE: mysql
DB_HOST: 10.0 .0 .51
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: afei2222
DB_NAME: jumpserver
HTTP_BIND_HOST: 0.0 .0 .0
HTTP_LISTEN_PORT: 8080
WS_LISTEN_PORT: 8070
REDIS_HOST: 10.0 .0 .51
REDIS_PORT: 6379
REDIS_PASSWORD: afei2222
数据库迁移,生成数据表
(py3) [root@master-61 /opt/jumpserver-v2.12.0/apps]
(py3) [root@master-61 /opt/jumpserver-v2.12.0/apps]
启动后端core服务
进入到jumpserver源码目录中,它提供好了启动脚本。
一键执行python的启动服务脚本,运行后端所有程序
并且是后台运行,不会占用你的窗口,xshell关了,也不会断开。
(py3) [root@master-61 /opt/jumpserver-v2.12.0 ]
2022-06-09 16:12:24 Thu Jun 9 16 :12:24 2022
2022-06-09 16:12:24 JumpServer version 2.0 .0 , more see https://www.jumpserver.org
gunicorn is running: 17155
flower is running: 17658
daphne is running: 18100
celery_ansible is running: 18310
celery_default is running: 18382
beat is running: 18630
gunicorn is running: 17155
flower is running: 17658
daphne is running: 18100
celery_ansible is running: 18310
celery_default is running: 18382
beat is running: 18630
(py3) [root@master-61 /opt/jumpserver-v2.12.0 ]
gunicorn is running: 17155
flower is running: 17658
daphne is running: 18100
celery_ansible is running: 18310
celery_default is running: 18382
beat is running: 18630
以及,查看该进程的 端口,注意是端口。
(py3) [root@master-61 /opt/jumpserver-v2.12.0 ]
直接告诉大家,后端core服务,运行的http端口是 8080
首次访问,登录,修改密码
admin
admin
首次修改密码为,afei222
四、部署前端lina
前后端架构图
可以从 Github 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code .tar.gz 源代码,通过命令行中提取该存档:
下载源码
mkdir -p /opt /lina-v2 .12 .0
wget -O /opt /lina-v2 .12 .0 .tar.gz https:
tar -xf lina-v2 .12 .0 .tar.gz -C /opt /lina-v2 .12 .0 --strip-components 1
cd /opt /lina-v2 .12 .0
部署nodejs开发环境
安装 Node
从 Node 官方网站参考文档部署 Node.js,请根据 环境要求,通过命令行中判断是否安装完成
mkdir -p /opt/node-v10.24.1 && cd /opt/node-v10.24.1 && wget https://nodejs.org/dist/v10.24.1/node-v10.24.1-linux-x64.tar.gz
tar -xf node-v10.24.1-linux-x64.tar.gz --strip-components 1
/etc/profile
export PATH=$PATH :/opt/python369/bin/:/opt/node-v10.24.1/bin
echo 'export PATH=$PATH:/opt/python369/bin/:/opt/node-v10.24.1/bin' >> /etc/profile
source /etc/profile
[root@master-61 ~]
v10.24.1
[root@master-61 /opt/node-v10.24.1/bin]
node npm npx
安装前端依赖
[root@master-61 /opt/node-v10.24.1 ]#cd /opt/lina-v2.12.0/
[root@master-61 /opt/lina-v2.12.0 ]#ls
alias .config.js dump.rdb mock public utils
babel.config.js jest.config.js nginx.conf README.md vue.config.js
build jsconfig.json package.json src yarn.lock
Dockerfile LICENSE postcss.config.js tests
[root@master-61 /opt/lina-v2.12.0 ]#
这里可以配置淘宝的下载加速源
[root@master-61 /opt/lina-v2.12.0 ]#npm config set registry https://registry.npm.taobao.org
[root@master-61 /opt/lina-v2.12.0 ]#npm config get registry
https:
1 、先安装yarn工具,为了安装前端vue的依赖,跟着操作就行,都是前端开发的知识。
公司里会有前端工程师,配合你,给你文档,你跟着操作就行。
[root@master-61 /opt/lina-v2.12.0 ]#npm install -g yarn
2 、通过如下命令,安装前端的依赖
[root@master-61 /opt/lina-v2.12.0 ]#yarn install
3 、需要确保,能理解这些步骤,是在部署前端代码,下载前端的项目依赖,确保命令正确执行就OK
生产环境下的部署,需要有前端、后端的接口、参数、调试配合,如果没有自动化的话,一天时间,能跑起来。
修改前端配置文件
[root@master-61 /opt/lina-v2.12.0]
ENV = 'development'
VUE_APP_BASE_API = ''
VUE_APP_PUBLIC_PATH = '/ui/'
VUE_CLI_BABEL_TRANSPILE_MODULES = true
VUE_APP_LOGIN_PATH = '/core/auth/login/'
VUE_APP_LOGOUT_PATH = '/core/auth/logout/'
VUE_APP_CORE_HOST = 'http://localhost:8080'
VUE_APP_ENV = 'development'
运行lina前端项目
执行如下命令,让lina在后台运行即可。
更新数据库
npx browserslist@latest --update-db
[root@master-61 /opt/lina-v2.12.0]
[1] 19433
[root@master-61 /opt/lina-v2.12.0]
^C
[root@master-61 /opt/lina-v2.12.0]
tcp 0 0 0.0.0.0:9528 0.0.0.0:* LISTEN 19444/node
[root@master-61 /opt/lina-v2.12.0]
[1]+ Running nohup yarn serve &
[root@master-61 /opt/lina-v2.12.0]
前端lina、后端core的架构图
1. db-51的 mysql,redis组件
2. master-61 core后台组件 lina前端组件
五、luna部署
Luna 是 JumpServer 的前端 UI 项目, 主要使用 Angular CLI 完成。
其中 Lina 和 Luna 为纯静态文件,最终由 nginx 整合。
1、部署node
[root@master-61 /opt/jumpserver-v2.12.0]
v10.24.1
[root@master-61 /opt/lina-v2.12.0]
6.14.12
2、获取luna前端源码、安装
mkdir /opt/luna-v2.12.0
wget -O /opt/luna-v2.12.0.tar.gz https://github.com/jumpserver/luna/archive/refs/tags/v2.12.0.tar.gz
tar -xf luna-v2.12.0.tar.gz -C /opt/luna-v2.12.0 --strip-components 1
cd luna-v2.12.0
安装依赖前端依赖
yum -y install gcc gcc-c++
npm install
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass@4.13.0
另一种方法
[root@master-61 /opt/luna-v2.12.0]
老师的机器安装了如下1477个依赖包。
added 1477 packages from 1909 contributors in 244.312s
11 packages are looking for funding
run `npm fund` for details
3、修改配置文件
这里,我们是将jumpserver前后端放在同一台机器了,因此localhost没问题。
否则需要填写后端服务器的IP。
[root@master-61 /opt/luna-v2.12.0]
{
"/koko" : {
"target" : "http://localhost:5000" ,
"secure" : false ,
"ws" : true
},
"/media/" : {
"target" : "http://localhost:8080" ,
"secure" : false ,
"changeOrigin" : true
},
"/api/" : {
"target" : "http://localhost:8080" ,
"secure" : false ,
"changeOrigin" : true
},
"/core" : {
"target" : "http://localhost:8080" ,
"secure" : false ,
"changeOrigin" : true
},
"/static" : {
"target" : "http://localhost:8080" ,
"secure" : false ,
"changeOrigin" : true
},
"/lion" : {
"target" : "http://localhost:9529" ,
"secure" : false ,
"pathRewrite" : {
"^/lion/monitor" : "/monitor"
},
"ws" : true ,
"changeOrigin" : true
}
}
4、启动luna
npm install -g @angular /cli@1 .3.2 --unsafe-perm
结果如下
+ @angular /cli@1 .3.2
added 1080 packages from 725 contributors in 330 .599s
[root@master -61 /opt/luna-v2.12.0 ]
[root@master -61 /opt/luna-v2.12.0 ]
[root@master -61 /opt/luna-v2.12.0 ]
[root@master -61 /opt/luna-v2.12.0 ]
tcp 0 0 0.0 .0.0 : 4200 0.0 .0.0 :* LISTEN 7155 /@angular /cli
5.编译静态文件
体验编译过程即可。
ng build
查看静态文件
[root@master -61 / opt/ luna- v2.12 .0 ]#ll - d dist/
drwxr- xr- x 4 root root 4096 May 23 15 :15 dist/
[root@master -61 / opt/ luna- v2.12 .0 ]#ll dist/
total 27776
drwxr- xr- x 4 root root 34 Jun 9 17 :14 assets
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
- rw- r
drwxr- xr- x 3 root root 18 Jun 9 17 :14 static
- rw- r
- rw- r
- rw- r
- rw- r
6、测试访问
六、部署Koko
Koko 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。
Koko组件用于基于ssh的跳板机登录,统一管理。
下载koko二进制命令
mkdir /opt/koko-v2.12.0
cd /opt ;wget https://github.com/jumpserver/koko/releases/download/v2.12.0/koko-v2.12.0-linux-amd64.tar.gz
tar -xf koko-v2.12.0-linux-amd64.tar.gz -C /opt/koko-v2.12.0 --strip-components 1
cd koko-v2.12.0
下载golang-1.15
直接下载二进制版本
wget https://golang.google.cn/dl/go1.15.linux-amd64.tar.gz
tar -xf go1.15.linux-amd64.tar.gz
添加path
[root@master-61 /opt/go/bin]
[root@master-61 /opt/go/bin]
export PATH=$PATH :/opt/python369/bin/:/opt/node-v10.24.1/bin:/opt/go/bin/
确认版本
[root@master-61 /opt/go/bin]
[root@master-61 /opt/go/bin]
go version go1.15 linux/amd64
修改koko配置文件
[root@master-61 /opt/koko-v2.12.0 ]
CORE_HOST: http://127.0.0.1:8080
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"
BIND_HOST: 0.0 .0 .0
SSHD_PORT: 2222
HTTPD_PORT: 5000
LOG_LEVEL: DEBUG
[root@master-61 /opt/koko-v2.12.0 ]
CORE_HOST: http://127.0.0.1:8080
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"
BIND_HOST: 0.0 .0 .0
SSHD_PORT: 2222
HTTPD_PORT: 5000
LOG_LEVEL: DEBUG
启动服务
[root@master-61 /opt/koko-v2.12.0]
./koko -f config_example.yml -d
验证koko的运行
[root@master-61 /opt/koko-v2.12.0]
[root@master-61 /opt/koko-v2.12.0]
tcp6 0 0 :::5000 :::* LISTEN 21529/./koko
tcp6 0 0 :::2222 :::* LISTEN 21529/./koko
基于ssh协议连接koko
账户 admin 密码afei222
ssh admin@10 .0.0.61 -p 2222
七、部署Lion
Lion 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP / VNC 协议跳板机功能。
目前,常用的远程管理协议有以下 4 种:
RDP(remote desktop protocol )协议:远程桌面协议,大部分 Windows 系统都默认支持此协议,Windows 系统中的远程桌面管理就基于该协议。
RFB (Remote FrameBuffer )协议:图形化远程管理协议,VNC 远程管理工具就基于此协议。
Telnet :命令行界面远程管理协议,几乎所有的操作系统都默认支持此协议。此协议的特点是,在进行数据传送时使用明文传输的方式,也就是不对数据进行加密。
SSH (Secure Shell )协议:命令行界面远程管理协议,几乎所有操作系统都默认支持此协议。和 Telnet 不同,该协议在数据传输时会对数据进行加密并压缩,因此使用此协议传输数据既安全速度又快。
1、先装一个工具叫做 guacamole,远程桌面依赖的一个前端框架
mkdir /opt/guacamole-v2.12.0
cd /opt/guacamole-v2.12.0
wget http://download.jumpserver.org/public/guacamole-server-1.3.0.tar.gz
tar -xzf guacamole-server-1.3.0.tar.gz
cd guacamole-server-1.3.0/
2、构建guacd
guacd 是 Guacamole Web 应用程序使用的 Guacamole 代理守护进程,并且
框架。由于 JavaScript 无法处理二进制协议(如 VNC 和远程
桌面)有效地开发了一种新的基于文本的协议,该协议将
包含高效远程桌面所需操作的通用超集
访问,但对 JavaScript 程序来说很容易处理。guacd 是
在任意协议和 Guacamole 协议之间进行转换的代理。
# 踩坑了
yum -y install cairo-devel libjpeg-devel libpng-devel uuid-devel
./configure --with -init -dir=/etc/init .d
make && make install
# 让你的linux,更新底层的驱动,加载远程桌面 guacamole协议
ldconfig
3、安装lion程序
cd /opt
wget https://github.com/jumpserver/lion-release/releases/download/v2.12.0/lion-v2.12.0-linux-amd64.tar.gz
tar -xf lion-v2.12.0-linux-amd64.tar.gz
cd lion-v2.12.0-linux-amd64
4、修改配置文件
cp config_example.yml config .yml
vim config .yml
CORE_HOST: http://127.0.0.1:8080
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"
BIND_HOST: 0.0 .0 .0
HTTPD_PORT: 8081
LOG_LEVEL: DEBUG
5、启动guacd
[root@master-61 /opt/lion-v2.12.0-linux-amd64 ]
Starting guacd: guacd[15533]: INFO: Guacamole proxy daemon (guacd) version 1.3 .0 started
SUCCESS
6、启动Lion
[root@master-61 /opt/lion-v2.12.0-linux-amd64]
[3] 27341
[root@master-61 /opt/lion-v2.12.0-linux-amd64]
^C
[root@master-61 /opt/lion-v2.12.0-linux-amd64]
[1] Running nohup yarn serve & (wd: /opt/lina-v2.12.0)
[2]- Running nohup ng serve --proxy-config proxy.conf.json --host 0.0.0.0 & (wd: /opt/luna-v2.12.0)
[3]+ Running nohup ./lion -f config.yml &
八、部署Nginx
主配置文件
[root@master-61 ~]
nginx version: nginx/1.20.1
[root@master-61 /etc/nginx]
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main ' - [] "" '
' "" '
'"" ""' ;
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 81;
server_name localhost;
location / {
root html;
index index.html;
}
}
}
jumpserver.conf
[root@master-61 /etc/nginx]
[root@master-61 /etc/nginx/conf.d]
download.conf
[root@master-61 /etc/nginx/conf.d]
[root@master-61 /etc/nginx/conf.d]
[root@master-61 /etc/nginx/conf.d]
server {
listen 80;
client_max_body_size 5000m; 文件大小限制
location /luna/ {
proxy_pass http://luna:4200;
}
location /media/replay/ {
add_header Content-Encoding gzip;
root /opt/jumpserver-v2.12.0/data/;
}
location /media/ {
root /opt/jumpserver-v2.12.0/data/;
}
location /static/ {
root /opt/jumpserver-v2.12.0/data/;
}
location /koko/ {
proxy_pass http://koko:5000;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header Host $host ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade ;
proxy_set_header Connection "upgrade" ;
}
location /lion/ {
proxy_pass http://lion:8081;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header Upgrade $http_upgrade ;
proxy_set_header Connection $http_connection ;
proxy_ignore_client_abort on;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 6000;
}
location /ws/ {
proxy_pass http://core:8070;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header Host $host ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade ;
proxy_set_header Connection "upgrade" ;
}
location /api/ {
proxy_pass http://core:8080;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header Host $host ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
}
location /core/ {
proxy_pass http://core:8080;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header Host $host ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
}
location /ui/ {
proxy_pass http://lina:9528;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header Host $host ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
}
location / {
rewrite ^/(.*)$ /ui/$1 last;
}
}
[root@master-61 /etc/nginx/conf.d]
图解配置
做好dns解析
[root @master -61 /etc /nginx /conf.d ]
外网地址 内网地址 主机名
10.0 .0.61 172.16 .1.61 master-61
10.0 .0.5 172.16 .1.5 slb-5
10.0 .0.6 172.16 .1.6 slb-6
10.0 .0.7 172.16 .1.7 web-7
10.0 .0.8 172.16 .1.8 web-8
10.0 .0.9 172.16 .1.9 web-9
10.0 .0.31 172.16 .1.31 nfs-31
10.0 .0.41 172.16 .1.41 r sync-41
10.0 .0.51 172.16 .1.51 db-51
10.0 .0.61 luna koko lion core lina
启动nginx
[root@master-61 /etc/nginx]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@master-61 /etc/nginx]#systemctl restart nginx
[root@master-61 /etc/nginx/conf.d]#ps -ef | grep nginx
root 27666 1 0 18 :11 ? 00 :00 :00 nginx: master process /usr/sbin/nginx
nginx 27667 27666 0 18 :11 ? 00 :00 :00 nginx: worker process
nginx 27668 27666 0 18 :11 ? 00 :00 :00 nginx: worker process
nginx 27669 27666 0 18 :11 ? 00 :00 :00 nginx: worker process
nginx 27670 27666 0 18 :11 ? 00 :00 :00 nginx: worker process
root 27698 19110 0 18 :12 pts/1 00 :00 :00 grep
八、访问jumpserver
1.验证登录(core功能是否正常)
1. 入口,http:
可以判断出 lina前端,和core后台服务都正常,以及数据库。
确保可以正确登录,整个实验就没问题了。
2、堡垒机大盘页面
3、个人信息页面
端口检查
重启,重新验证jumpserver
启动所有组件
后端core
source /opt/py3/bin/activate
(py3) [root@master-61 ~]
前端lina
(py3) [root@master-61 ~]
(py3) [root@master-61 /opt/lina-v2.12.0 ]
[1 ] 4139
(py3) [root@master-61 /opt/lina-v2.12.0 ]
前端luna
(py3) [root@master-61 /opt/lina-v2.12.0]
(py3) [root@master-61 /opt/lina-v2.12.0]
(py3) [root@master-61 /opt/luna-v2.12.0]
[2] 4170
(py3) [root@master-61 /opt/luna-v2.12.0]
启动lion
(py3) [root@master-61 /opt/luna-v2.12.0]
(py3) [root@master-61 /opt/lion-v2.12.0-linux-amd64]
[4] 4435
(py3) [root@master-61 /opt/lion-v2.12.0-linux-amd64]
^C
(py3) [root@master-61 /opt/lion-v2.12.0-linux-amd64]
[1] Running nohup yarn serve & (wd: /opt/lina-v2.12.0)
[3]- Running nohup ng serve & (wd: /opt/luna-v2.12.0)
[4]+ Running nohup ./lion -f config.yml &
启动nginx
systemctl restart nginx
启动koko
(py3) [root@master-61 /opt/luna-v2.12.0]
启动koko失败
解决办法
再次注册终端
./koko -f config.yml -d
修改koko配置文件
修改配置文件,然后重新启动koko服务
CORE_HOST: http://127.0.0.1:8080
再次运行koko
[root@master-61 /opt/koko-v2.12.0]
tcp6 0 0 :::5000 :::* LISTEN 4604/./koko
tcp6 0 0 :::2222 :::* LISTEN 4604/./koko
启动情况
[root@master-61 /opt/koko-v2.12.0]
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器