jumpserver部署流程以及相关参数的解释

部署实践

当前选择的版本是
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



# 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

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 ~]#export LC_ALL=zh_CN.UTF-8
[root@master-61 ~]#
[root@master-61 ~]#locale
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之后,默认初始化启动,会随机给你生成密码,你得去配置文件中找这个随机密码。
用如下命令,修改配置文件,可以让他默认别生成随机密码。

使用--initialize-insecure,不会root生成密码。这是不安全的;假设您在将服务器投入生产使用之前及时为帐户分配了密码。
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
# 允许redis在任意地址可访问
sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis.conf
# 让redis以守护进程,在后台运行
sed -i "s/daemonize no/daemonize yes/g" /etc/redis.conf
# 设置redis的内存性参数,内存缓存算法
sed -i "561i maxmemory-policy allkeys-lru" /etc/redis.conf
# 设置redis的连接密码requirepass设置密码的,后面写密码
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]#redis-cli
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]#redis-cli -h 172.16.1.51
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/#python3

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、# 安装该项目依赖的linux依赖
[root@master-61 /opt/jumpserver-v2.12.0]#ll /opt/jumpserver-v2.12.0/requirements/
总用量 28
requirements/                     # 对应操作系统需要的依赖包
├── alpine_requirements.txt       # Alpine
├── deb_buster_requirements.txt   # Debian 10
├── deb_requirements.txt          # 基于 Debian 的发行版(如: Ubuntu)
├── issues.txt                    # macOS 一些问题及解决方案
├── mac_requirements.txt          # macOS
├── requirements.txt              # python
└── rpm_requirements.txt          # 基于 RedHat 的发行版(如: CentOS)

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
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]#python3 -V
Python 3.6.9

# 这是管理python程序的模块依赖包的
# 这么去理解
#    yum是给centos安装rpm包依赖的。
#    pip3命令是给python3,给python项目,安装项目所需的依赖的。
# 它俩是2个 东西
[root@master-61 /opt/Python-3.6.9]#pip3 -V
pip 18.1 from /opt/python369/lib/python3.6/site-packages/pip (python 3.6)


[root@master-61 /opt/Python-3.6.9]#which python3
/opt/python369/bin/python3
[root@master-61 /opt/Python-3.6.9]#which pip3
/opt/python369/bin/pip3

安装python虚拟环境
查看模块列表
[root@master-61 /opt/Python-3.6.9]#pip3 list
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]#pip3 install requests
[root@master-61 /opt/Python-3.6.9]#pip3 list
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]#source /opt/py3/bin/activate
(py3) [root@master-61 /opt]#echo $PATH
/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]#cd /opt/jumpserver-v2.12.0/requirements/
(py3) [root@master-61 /opt/jumpserver-v2.12.0/requirements]#ls
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]#pip install -r requirements.txt 

这个python模块,要么全部成功,要么全部会失败。
注意别报错即可。

别出现error,否则pip3命令会立即终止的,然后看报错,解决报错即可。

检查解释器的模块依赖
安装的模块依赖大约这么多,不一定完全一样
(py3) [root@master-61 /opt/jumpserver-v2.12.0/requirements]#pip list | wc -l
198
修改core配置文件
这里需要对整个jumpserver后端进行配置修改
(py3) [root@master-61 /opt/jumpserver-v2.12.0]#cp config_example.yml config.yml

以及注意了是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]#tail -2  ~/.bashrc 
SECRET_KEY=0zxfott36HA44Wkc8mFLYwmsauEeNyXZPp07hiK8MiU5YwLIsN
BOOTSTRAP_TOKEN=7Xe9BCu6wDlA3RQS

配置文件,使用该变量。
# SECURITY WARNING: keep the secret key used in production secret!
# 加密秘钥 生产环境中请修改为随机字符串,请勿外泄, 可使用命令生成
# $ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo
SECRET_KEY: "$SECRET_KEY"

# SECURITY WARNING: keep the bootstrap token used in production secret!
# 预共享Token koko 和 lion 用来注册服务账号,不在使用原来的注册接受机制
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"

# Development env open this, when error occur display the full process track, Production disable it
# DEBUG 模式 开启DEBUG后遇到错误时可以看到更多日志
DEBUG: true                   # 开发建议打开 DEBUG, 生产环境应该关闭

# DEBUG, INFO, WARNING, ERROR, CRITICAL can set. See https://docs.djangoproject.com/en/1.10/topics/logging/
# 日志级别
LOG_LEVEL: DEBUG              # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
# LOG_DIR:

# Session expiration setting, Default 24 hour, Also set expired on on browser close
# 浏览器Session过期时间,默认24小时, 也可以设置浏览器关闭则过期
# SESSION_COOKIE_AGE: 86400
SESSION_EXPIRE_AT_BROWSER_CLOSE: true  # 浏览器关闭 session 过期

# Database setting, Support sqlite3, mysql, postgres ....
# 数据库设置
# See https://docs.djangoproject.com/en/1.10/ref/settings/#databases

# SQLite setting:
# 使用单文件sqlite数据库
# DB_ENGINE: sqlite3
# DB_NAME:
# MySQL or postgres setting like:
# 使用Mysql作为数据库
DB_ENGINE: mysql
DB_HOST: 10.0.0.51       # 自行配置 数据库相关
DB_PORT: 3306
DB_USER: jumpserver
DB_PASSWORD: www.yuchaoit.cn
DB_NAME: jumpserver

# When Django start it will bind this host and port
# ./manage.py runserver 127.0.0.1:8080
# 运行时绑定端口, 将会使用 0.0.0.0:8080 0.0.0.0:8070 端口
HTTP_BIND_HOST: 0.0.0.0
HTTP_LISTEN_PORT: 8080
WS_LISTEN_PORT: 8070

# Use Redis as broker for celery and web socket
# Redis配置
REDIS_HOST: 10.0.0.52    # 自行配置 Redis 相关
REDIS_PORT: 6379
REDIS_PASSWORD: www.yuchaoit.cn
# REDIS_DB_CELERY: 3
# REDIS_DB_CACHE: 4

# Use OpenID Authorization
# 使用 OpenID 进行认证设置
# AUTH_OPENID: False # True or False
# BASE_SITE_URL: None
# AUTH_OPENID_CLIENT_ID: client-id
# AUTH_OPENID_CLIENT_SECRET: client-secret
# AUTH_OPENID_PROVIDER_ENDPOINT: https://op-example.com/
# AUTH_OPENID_PROVIDER_AUTHORIZATION_ENDPOINT: https://op-example.com/authorize
# AUTH_OPENID_PROVIDER_TOKEN_ENDPOINT: https://op-example.com/token
# AUTH_OPENID_PROVIDER_JWKS_ENDPOINT: https://op-example.com/jwks
# AUTH_OPENID_PROVIDER_USERINFO_ENDPOINT: https://op-example.com/userinfo
# AUTH_OPENID_PROVIDER_END_SESSION_ENDPOINT: https://op-example.com/logout
# AUTH_OPENID_PROVIDER_SIGNATURE_ALG: HS256
# AUTH_OPENID_PROVIDER_SIGNATURE_KEY: None
# AUTH_OPENID_SCOPES: "openid profile email"
# AUTH_OPENID_ID_TOKEN_MAX_AGE: 60
# AUTH_OPENID_ID_TOKEN_INCLUDE_CLAIMS: True
# AUTH_OPENID_USE_STATE: True
# AUTH_OPENID_USE_NONCE: True
# AUTH_OPENID_SHARE_SESSION: True
# AUTH_OPENID_IGNORE_SSL_VERIFICATION: True
# AUTH_OPENID_ALWAYS_UPDATE_USER: True

# Use Radius authorization
# 使用Radius来认证
# AUTH_RADIUS: false
# RADIUS_SERVER: localhost
# RADIUS_PORT: 1812
# RADIUS_SECRET:

# CAS 配置
# AUTH_CAS': False,
# CAS_SERVER_URL': "http://host/cas/",
# CAS_ROOT_PROXIED_AS': 'http://jumpserver-host:port',  
# CAS_LOGOUT_COMPLETELY': True,
# CAS_VERSION': 3,

# LDAP/AD settings
# LDAP 搜索分页数量
# AUTH_LDAP_SEARCH_PAGED_SIZE: 1000
#
# 定时同步用户
# 启用 / 禁用
# AUTH_LDAP_SYNC_IS_PERIODIC: True
# 同步间隔 (单位: 时) (优先)
# AUTH_LDAP_SYNC_INTERVAL: 12
# Crontab 表达式
# AUTH_LDAP_SYNC_CRONTAB: * 6 * * *
#
# LDAP 用户登录时仅允许在用户列表中的用户执行 LDAP Server 认证
# AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS: False
#
# LDAP 认证时如果日志中出现以下信息将参数设置为 0 (详情参见:https://www.python-ldap.org/en/latest/faq.html)
# In order to perform this operation a successful bind must be completed on the connection
# AUTH_LDAP_OPTIONS_OPT_REFERRALS: -1

# OTP settings
# OTP/MFA 配置
# OTP_VALID_WINDOW: 0
# OTP_ISSUER_NAME: Jumpserver

# Perm show single asset to ungrouped node
# 是否把未授权节点资产放入到 未分组 节点中
# PERM_SINGLE_ASSET_TO_UNGROUP_NODE: False
#
# 同一账号仅允许在一台设备登录
# USER_LOGIN_SINGLE_MACHINE_ENABLED: False
#
# 启用定时任务
# PERIOD_TASK_ENABLE: True
#
# 启用二次复合认证配置
# LOGIN_CONFIRM_ENABLE: False
#
# Windows 登录跳过手动输入密码
# WINDOWS_SKIP_ALL_MANUAL_PASSWORD: False

(py3) [root@master-61 /opt/jumpserver-v2.12.0]#cat config.yml 
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]#python manage.py makemigrations


(py3) [root@master-61 /opt/jumpserver-v2.12.0/apps]#python manage.py migrate
启动后端core服务
进入到jumpserver源码目录中,它提供好了启动脚本。


一键执行python的启动服务脚本,运行后端所有程序
并且是后台运行,不会占用你的窗口,xshell关了,也不会断开。


(py3) [root@master-61 /opt/jumpserver-v2.12.0]#./jms start all -d 
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]#./jms status
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]#netstat -tunlp
直接告诉大家,后端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://github.com/jumpserver/lina/archive/refs/tags/v2.12.0.tar.gz
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 ~]#node -v
v10.24.1

# 你最终,确保node.js的运行目录如下即可。
[root@master-61 /opt/node-v10.24.1/bin]#ls /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://registry.npm.taobao.org/



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]#cat .env.development 
# 全局环境变量 请勿随意改动
ENV = 'development'



# base api
VUE_APP_BASE_API = ''
VUE_APP_PUBLIC_PATH = '/ui/'

# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
# It only does one thing by converting all import() to require().
# This configuration can significantly increase the speed of hot updates,
# when you have a large number of pages.
# Detail:  https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js

VUE_CLI_BABEL_TRANSPILE_MODULES = true

# External auth
VUE_APP_LOGIN_PATH = '/core/auth/login/'
VUE_APP_LOGOUT_PATH = '/core/auth/logout/'


# Dev server for core proxy
VUE_APP_CORE_HOST = 'http://localhost:8080'
VUE_APP_ENV = 'development'


# 我们这里是测试,前端的lina项目和后端的core项目运行在同一台机器,因此 这里用
# 前端后端在一起的用法。
# 还记得,我们刚才去访问 core的堡垒机登录页面,确认后端端口是8080

运行lina前端项目
执行如下命令,让lina在后台运行即可。
更新数据库
npx browserslist@latest --update-db

[root@master-61 /opt/lina-v2.12.0]#nohup yarn serve &  
[1] 19433
[root@master-61 /opt/lina-v2.12.0]#nohup: ignoring input and appending output to ‘nohup.out’
^C
[root@master-61 /opt/lina-v2.12.0]#netstat -tunlp|grep 9528
tcp        0      0 0.0.0.0:9528            0.0.0.0:*               LISTEN      19444/node          
[root@master-61 /opt/lina-v2.12.0]#jobs
[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]#node -v
v10.24.1
[root@master-61 /opt/lina-v2.12.0]#npm -v
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 

# 必须安装对应版本的 node-sass依赖,否则又是一堆报错。

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]#npm install 

老师的机器安装了如下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]#cat proxy.conf.json 
{
  "/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

# 安装ng命令,用于启动前端服务器,注意,必须是这个版本(再次吐槽,官网文档,就不能用心点写吗?一堆烂坑)
# 安装这个ng命令,使用这条命令,添加--unsafe-perm参数,提权,让node的权限大一点
npm install -g @angular/cli@1.3.2  --unsafe-perm

结果如下
+ @angular/cli@1.3.2
added 1080 packages from 725 contributors in 330.599s

# 确保ng命令能装好,执行如下命令即可。
[root@master-61 /opt/luna-v2.12.0]#ng --version


# 当前是没有luna的端口的
[root@master-61 /opt/luna-v2.12.0]#netstat -tunlp|grep 4200
# 后台运行命令如下,必须运行在0.0.0.0地址上,否则不通。
[root@master-61 /opt/luna-v2.12.0]#nohup ng serve --proxy-config proxy.conf.json --host 0.0.0.0 & 

# 检查端口
[root@master-61 /opt/luna-v2.12.0]#netstat -tunlp|grep 4200
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--r-- 1 root root  165742 Jun  9 17:14 fontawesome-webfont.eot
-rw-r--r-- 1 root root  444379 Jun  9 17:14 fontawesome-webfont.svg
-rw-r--r-- 1 root root  165548 Jun  9 17:14 fontawesome-webfont.ttf
-rw-r--r-- 1 root root   98024 Jun  9 17:14 fontawesome-webfont.woff
-rw-r--r-- 1 root root   77160 Jun  9 17:14 fontawesome-webfont.woff2
-rw-r--r-- 1 root root     381 Jun  9 17:14 loading.gif
-rw-r--r-- 1 root root  380687 Jun  9 17:14 main.js
-rw-r--r-- 1 root root  344846 Jun  9 17:14 main.js.map
-rw-r--r-- 1 root root  143258 Jun  9 17:14 MaterialIcons-Regular.eot
-rw-r--r-- 1 root root  128180 Jun  9 17:14 MaterialIcons-Regular.ttf
-rw-r--r-- 1 root root   57620 Jun  9 17:14 MaterialIcons-Regular.woff
-rw-r--r-- 1 root root   44300 Jun  9 17:14 MaterialIcons-Regular.woff2
-rw-r--r-- 1 root root  265793 Jun  9 17:14 polyfills.js
-rw-r--r-- 1 root root  257549 Jun  9 17:14 polyfills.js.map
-rw-r--r-- 1 root root    6224 Jun  9 17:14 runtime.js
-rw-r--r-- 1 root root    6214 Jun  9 17:14 runtime.js.map
-rw-r--r-- 1 root root  441610 Jun  9 17:14 scripts.js
-rw-r--r-- 1 root root  522847 Jun  9 17:14 scripts.js.map
drwxr-xr-x 3 root root      18 Jun  9 17:14 static
-rw-r--r-- 1 root root 2686771 Jun  9 17:14 styles.js
-rw-r--r-- 1 root root 2855086 Jun  9 17:14 styles.js.map
-rw-r--r-- 1 root root 9316491 Jun  9 17:14 vendor.js
-rw-r--r-- 1 root root 9995663 Jun  9 17:14 vendor.js.map

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]#tail -1 /etc/profile
export PATH=$PATH:/opt/python369/bin/:/opt/node-v10.24.1/bin:/opt/go/bin/

确认版本
[root@master-61 /opt/go/bin]#source /etc/profile
[root@master-61 /opt/go/bin]#go version
go version go1.15 linux/amd64
修改koko配置文件
[root@master-61 /opt/koko-v2.12.0]#cp config_example.yml config.ym

# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# NAME: 

# Jumpserver项目的url, api请求注册会使用
CORE_HOST: http://127.0.0.1:8080   # Core 的地址

# Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
# 请和jumpserver 配置文件中保持一致,注册完成后可以删除
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"
# 和 Core config.yml 的值保持一致

# 启动时绑定的ip, 默认 0.0.0.0
BIND_HOST: 0.0.0.0

# 监听的SSH端口号, 默认2222
SSHD_PORT: 2222            # 使用 0.0.0.0:2222

# 监听的HTTP/WS端口号,默认5000
HTTPD_PORT: 5000           # 使用 0.0.0.0:5000

# 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
# 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
# ACCESS_KEY: null

# ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
# ACCESS_KEY_FILE: data/keys/.access_key

# 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
LOG_LEVEL: DEBUG           # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR

# SSH连接超时时间 (default 15 seconds)
# SSH_TIMEOUT: 15

# 语言 [en,zh]
# LANGUAGE_CODE: zh

# SFTP的根目录, 可选 /tmp, Home其他自定义目录
# SFTP_ROOT: /tmp

# SFTP是否显示隐藏文件
# SFTP_SHOW_HIDDEN_FILE: false

# 是否复用和用户后端资产已建立的连接(用户不会复用其他用户的连接)
# REUSE_CONNECTION: true

# 资产加载策略, 可根据资产规模自行调整. 默认异步加载资产, 异步搜索分页; 如果为all, 则资产全部加载, 本地搜索分页.
# ASSET_LOAD_POLICY:

# zip压缩的最大额度 (单位: M)
# ZIP_MAX_SIZE: 1024M

# zip压缩存放的临时目录 /tmp
# ZIP_TMP_PATH: /tmp

# 向 SSH Client 连接发送心跳的时间间隔 (单位: 秒),默认为30, 0则表示不发送
# CLIENT_ALIVE_INTERVAL: 30

# 向资产发送心跳包的重试次数,默认为3
# RETRY_ALIVE_COUNT_MAX: 3

# 会话共享使用的类型 [local, redis], 默认local
# SHARE_ROOM_TYPE: local

# Redis配置
# REDIS_HOST: 127.0.0.1      # 如果需要部署多个 koko, 需要通过 redis 来保持会话
# REDIS_PORT: 6379
# REDIS_PASSWORD:
# REDIS_CLUSTERS:
# REDIS_DB_ROOM:
[root@master-61 /opt/koko-v2.12.0]#cat config.yml 
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.yml  -d  
./koko  -f config_example.yml  -d

验证koko的运行
[root@master-61 /opt/koko-v2.12.0]#./koko  -f config.yml  -d
[root@master-61 /opt/koko-v2.12.0]#netstat -tunlp|grep -E '(5000|2222)'
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
# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# NAME: 

# Jumpserver项目的url, api请求注册会使用
CORE_HOST: http://127.0.0.1:8080   # Core 的地址

# Bootstrap Token, 预共享秘钥, 用来注册使用的service account和terminal
# 请和jumpserver 配置文件中保持一致,注册完成后可以删除
BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"

# 启动时绑定的ip, 默认 0.0.0.0
BIND_HOST: 0.0.0.0

# 监听的HTTP/WS端口号,默认8081
HTTPD_PORT: 8081

# 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
LOG_LEVEL: DEBUG           # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR

# Guacamole Server ip, 默认127.0.0.1
# GUA_HOST: 127.0.0.1

# Guacamole Server 端口号,默认4822
# GUA_PORT: 4822

# 会话共享使用的类型 [local, redis], 默认local
# SHARE_ROOM_TYPE: local

# Redis配置
# REDIS_HOST: 127.0.0.1
# REDIS_PORT: 6379
# REDIS_PASSWORD:
# REDIS_DB_ROOM:
5、启动guacd
[root@master-61 /opt/lion-v2.12.0-linux-amd64]#/etc/init.d/guacd start
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]#nohup ./lion -f config.yml &
[3] 27341
[root@master-61 /opt/lion-v2.12.0-linux-amd64]#nohup: ignoring input and appending output to ‘nohup.out’
^C
[root@master-61 /opt/lion-v2.12.0-linux-amd64]#jobs
[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 -v
nginx version: nginx/1.20.1

[root@master-61 /etc/nginx]#cat nginx.conf
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
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]#cd conf.d/
[root@master-61 /etc/nginx/conf.d]#ls
download.conf
[root@master-61 /etc/nginx/conf.d]#rm -rf download.conf 
[root@master-61 /etc/nginx/conf.d]#vim jumpserver.conf
[root@master-61 /etc/nginx/conf.d]#cat jumpserver.conf 
server {
  listen 80;
  # server_name www.yuchaoit.cn;

  client_max_body_size 5000m; 文件大小限制

  # Luna 配置
  # 经过实测,这个v12版本,只能http://10.0.0.61:4200/luna/这样去访问,前端这里有点难处理。

  location /luna/ {
    proxy_pass http://luna:4200;
  }

  # Core data 静态资源
  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/;
  }

  # KoKo Lion 配置
  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";
  }

  # lion 配置
  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;
  }

  # Core 配置
  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;
  }

  # 前端 Lina
  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]#cat /etc/hosts
 外网地址   内网地址     主机名
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  rsync-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 --color=auto nginx

八、访问jumpserver

1.验证登录(core功能是否正常)
1. 入口,http://10.0.0.61/ 自动跳转到lina

可以判断出 lina前端,和core后台服务都正常,以及数据库。

确保可以正确登录,整个实验就没问题了。
2、堡垒机大盘页面

3、个人信息页面

端口检查

重启,重新验证jumpserver

启动所有组件

后端core
source /opt/py3/bin/activate

(py3) [root@master-61 ~]#/opt/jumpserver-v2.12.0/jms start all -d
前端lina
(py3) [root@master-61 ~]#cd /opt/lina-v2.12.0/
(py3) [root@master-61 /opt/lina-v2.12.0]#nohup yarn serve &
[1] 4139
(py3) [root@master-61 /opt/lina-v2.12.0]#nohup: ignoring input and appending output to ‘nohup.out’
前端luna
(py3) [root@master-61 /opt/lina-v2.12.0]#
(py3) [root@master-61 /opt/lina-v2.12.0]#cd /opt/luna-v2.12.0/
(py3) [root@master-61 /opt/luna-v2.12.0]#nohup ng serve &
[2] 4170
(py3) [root@master-61 /opt/luna-v2.12.0]#nohup: ignoring input and appending output to ‘nohup.out’
启动lion
(py3) [root@master-61 /opt/luna-v2.12.0]#cd ../lion-v2.12.0-linux-amd64/
(py3) [root@master-61 /opt/lion-v2.12.0-linux-amd64]#nohup ./lion -f config.yml &
[4] 4435
(py3) [root@master-61 /opt/lion-v2.12.0-linux-amd64]#nohup: ignoring input and appending output to ‘nohup.out’
^C
(py3) [root@master-61 /opt/lion-v2.12.0-linux-amd64]#jobs 
[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]#/opt/koko-v2.12.0/koko -f /opt/koko-v2.12.0/config.yml
启动koko失败

解决办法

再次注册终端
./koko -f config.yml -d 

修改koko配置文件
修改配置文件,然后重新启动koko服务
# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# NAME: 

# Jumpserver项目的url, api请求注册会使用
CORE_HOST: http://127.0.0.1:8080   # Core 的地址

# Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
# 请和jumpserver 配置文件中保持一致,注册完成后可以删除
#BOOTSTRAP_TOKEN: "$BOOTSTRAP_TOKEN"

再次运行koko
[root@master-61 /opt/koko-v2.12.0]#netstat -tunlp|grep koko
tcp6       0      0 :::5000                 :::*                    LISTEN      4604/./koko         
tcp6       0      0 :::2222                 :::*                    LISTEN      4604/./koko
启动情况
[root@master-61 /opt/koko-v2.12.0]#netstat -tunlp

posted @ 2022-08-01 21:08  张开嘴  阅读(991)  评论(0编辑  收藏  举报