jumpserver centos7 源码编译安装

一、部署CORE

1、修改maridb版本库

vi /etc/yum.repos.d/MariaDB.repo

[mariadb]

name = MariaDB

baseurl = 阿里云开源镜像站资源目录

gpgkey =  http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB

gpgcheck = 1

清除Yum的缓存并重新建立

yum clean all

yum makecache

2、安装基础依赖库

yum -y install wget lrzsz xz gcc git epel-release python-pip python-devel mysql-devel automake autoconf sqlite-devel zlib-devel openssl-devel sshpass readline-devel

3、安装python

#因为python3.6指支持jumpserver 2.0.1版本以下的环境所以请手动到github官网下载安装

#上传包Python-3.6.1.tar.xz

tar xf Python-3.6.1.tar.xz

mv Python-3.6.1 /opt

cd /opt/Python-3.6.1

./configure

make && make install #编译并安装

建立 Python 虚拟环境

cd /opt

python3.6 -m venv py3

source /opt/py3/bin/activate  (每次进入操作系统都需要执行此命令进入虚拟环境)

4、安装jumpserver

在Github上下载 jumpserver包并上传

下载地址在上方: jumpserver-2.0.1.zip

yum install unzip

unzip jumpserver-2.0.1.zip

mv jumpserver-2.0.1.zip /opt/jumpserver

安装依赖

cd /opt/jumpserver

chmod 777 * -R

cd /opt/jumpserver/requirements

yum -y install $(cat rpm_requirements.txt)

yum install mariadb-libs

yum install MariaDB-shared

安装Python依赖

pip install --upgrade pip setuptools

阿里云源下载(更快)

pip install -r requirements.txt -i Simple Index

5、安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke

yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

yum --enablerepo=remi install redis

查看redis版本:

redis-cli --version

启动redis:

systemctl start redis

设置开机自启

systemctl enable redis

Redis开启远程登录连接,redis默认只能localhost访问,所以需要开启远程登录。解决方法如下:

在redis的配置文件/etc/redis.conf中

将bind 127.0.0.1 改成了 bind 0.0.0.0

6、安装 MySQL

yum -y install mariadb mariadb-devel mariadb-server

systemctl start mariadb

设置开机自启

systemctl enable mariadb

创建数据库 Jumpserver 并授权

DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`

mysql -uroot -e "create database jumpserver default charset 'utf8'; grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'jumpserver'; flush privileges;"

7、修改 Jumpserver 配置文件

cd /opt/jumpserver/

cp config_example.yml config.yml

SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`

echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc

BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`

echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc

sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml

sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml

sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml

sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml

sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml

sed -i "s/DB_PASSWORD: /DB_PASSWORD: jumpserver/g" /opt/jumpserver/config.yml

处理国际化

rm -f apps/locale/zh/LC_MESSAGES/django.mo

python apps/manage.py makemessages -a

python apps/manage.py compilemessages

处理IP库

./opt/jumpserver/requirements/lfs_requirements.sh

运行 Jumpserver

cd /opt/jumpserver

./jms start all -d

8、关闭防火墙

在系统外访问URL时可能无法访问到,需要关闭防火墙或者将8080添加到防火墙中

查看防火墙状态

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service

访问url查看jumpserver安装结果 http://IP:8080

二、Lina  安装

Lina 是 JumpServer 的前端 UI 项目,主要使用 Vue,Element UI 完成。

1、下载源代码

可以从 Github 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:

mkdir /opt/lina-v2.15.4

wget -O /opt/lina-v2.15.4.tar.gz https://github.com/jumpserver/lina/archive/refs/tags/v2.15.4.tar.gz

tar -xf lina-v2.15.4.tar.gz -C /opt/lina-v2.15.4 --strip-components 1

cd lina-v2.15.4

2、安装 Node

从 Node 官方网站参考文档部署 Node.js,请根据 环境要求,通过命令行中判断是否安装完成:

wget https://npm.taobao.org/mirrors/node/v12.20.2/node-v12.20.2-linux-x64.tar.xz

tar -xf node-v12.20.2-linux-x64.tar.xz

mv node-v12.20.2-linux-x64 /usr/local/node

chown -R root:root /usr/local/node

vi /etc/profile

#最后一行加入PATH

export PATH=$PATH:/usr/local/node/bin

环境变量生效

source /etc/profile

npm config set sass_binary_site node-sass Mirror

npm config set registry https://registry.npm.taobao.org

npm install -g yarn

yarn config set registry https://registry.npm.taobao.org

3、安装依赖

npm install -g yarn

yarn install

4、拷贝配置文件

cp .env.development.example .env.development

5、修改配置文件(默认情况下不要修改)

vi .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'  # 修改成 Core 的 url 地址

VUE_APP_CORE_WS = 'ws://localhost:8070'

VUE_APP_ENV = 'development'

6、运行 Lina

yarn serve

7、构建 Lina

构建完成后的 lina 包为 html 文件,可以直接移到到 nginx 服务器。

yarn build:prod

三、Luna安装

Luna 是 JumpServer 的前端 UI 项目,主要使用 Angular CLI 完成。

环境要求⚓︎

Name    Luna    Node

Version v2.15.4 10

1、下载源代码⚓︎

可以从 Github 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:

mkdir /opt/luna-v2.15.4

wget -O /opt/luna-v2.15.4.tar.gz https://github.com/jumpserver/luna/archive/refs/tags/v2.15.4.tar.gz

tar -xf luna-v2.15.4.tar.gz -C /opt/luna-v2.15.4 --strip-components 1

cd luna-v2.15.4

2、安装 Node

从 Node 官方网站参考文档部署 Node.js,请根据 环境要求,通过命令行中判断是否安装完成:

node -v

3、安装依赖

npm install

npm install --dev

npm rebuild node-sass

npm install -g @angular/cli

4、修改配置文件

备份配置文件

cp proxy.conf.json proxy.conf.json.example

修改

vi proxy.conf.json

{

  "/koko": {

    "target": "http://localhost:5000",  # KoKo 地址

    "secure": false,

    "ws": true

  },

  "/media/": {

    "target": "http://localhost:8080",  # Core 地址

    "secure": false,

    "changeOrigin": true

  },

  "/api/": {

    "target": "http://localhost:8080",  # Core 地址

    "secure": false,                    # https ssl 需要开启

    "changeOrigin": true

  },

  "/core": {

    "target": "http://localhost:8080",  # Core 地址

    "secure": false,

    "changeOrigin": true

  },

  "/static": {

    "target": "http://localhost:8080",  # Core 地址

    "secure": false,

    "changeOrigin": true

  },

  "/lion": {

    "target": "http://localhost:9529",  # Lion 地址

    "secure": false,

    "pathRewrite": {

      "^/lion/monitor": "/monitor"

    },

    "ws": true,

    "changeOrigin": true

  },

  "/omnidb": {

    "target": "http://localhost:8082",

    "secure": false,

    "ws": true,

    "changeOrigin": true

  }

}

5、修改package.json文件

在scripts标签下增加:

"serve" : "node --max_old_space_size=2048 node_modules/.bin/vue-cli-service serve --open"

这是为了解决node内存泄露导致无法正常运行的问题

6、运行 Luna

ng serve

7、构建 Luna

可以加 -prod 来进行生产构建 ng build -prod

ng build

构建完成后, 生成在 build 目录下

build时出现错误:Module not found: Error: Can't resolve 'crypto' in '/opt/luna-v2.15.4/node_modules/crypto-js'时需要单独执行npm i crypto --save 来解决这个问题。安装完后重新执行 ng build --------错误未解决

四、KoKo看装

Koko 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。

环境要求⚓︎

Name    KoKo    Go

Version v2.15.4 1.15

1、下载源代码⚓︎

可以从 Github[koko] 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:

OS  Arch    Name

Linux   amd64   koko-v2.15.4-linux-amd64.tar.gz

macOS   amd64   koko-v2.15.4-darwin-amd64.tar.gz

mkdir /opt/koko-v2.15.4

wget -O /opt/koko-v2.15.4.tar.gz https://github.com/jumpserver/koko/archive/refs/tags/v2.15.4.tar.gz

tar -xf koko-v2.15.4.tar.gz -C /opt/koko-v2.15.4 --strip-components 1

cd koko-v2.15.4

chmod 777 * -R

2、安装 Go

从 Go 官方网站参考文档部署 golang,请根据 环境要求,通过命令行中判断是否安装完成:

wget https://golang.google.cn/dl/go1.15.linux-amd64.tar.gz

tar -xf go1.15.linux-amd64.tar.gz -C /usr/local/

chown -R root:root /usr/local/go

3、设置环境变量

vi /etc/profile

#最后一行加入PATH

export PATH=$PATH:/usr/local/go/bin

环境变量生效

source /etc/profile

go version

4、编译

OS  Arch    Command

Linux   amd64   make linux

macOS   amd64   make darwin

go env -w GOPROXY=https://goproxy.cn

make

构建完成后, 生成在 build 目录下

5、修改配置文件

cp config_example.yml config.yml

vi config.yml

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

# NAME:

# Jumpserver项目的url, api请求注册会使用

CORE_HOST: http://127.0.0.1:8080   # Core 的地址

# Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal

# 请和jumpserver 配置文件中保持一致,注册完成后可以删除

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:

6、启动koko监听程度

在build目录下生成的即是各操作系统的SSH/SFTP 服务和 Web Terminal 服务,需要到build目录下解压需要的客户端,修改对应的config.yml文件后

执行./koko 即可启动监听程序

例如:启动linux X86架构的koko

cd build/

tar xzvf  koko---linux-amd64.tar.gz

cd koko---linux-amd64

chmod 777 * -R

cp /opt/koko-v2.15.4/config.yml /opt/koko-v2.15.4/build/koko---linux-amd64

touch config.yml

./koko

五、Lion 安装

Lion 使用了 Apache 软件基金会的开源项目 Guacamole,JumpServer 使用 Golang 和 Vue 重构了 Guacamole 实现 RDP/VNC 协议跳板机功能。

环境要求⚓︎

Name    JumpServer  Guacd   Lion

Version v2.15.4 1.3.0   v2.15.4

1、下载源码包

可以从 Github 网站上获取对应的 guacd 副本。这些版本是最新代码的稳定快照,从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:

mkdir /opt/guacamole-v2.15.4

cd /opt/guacamole-v2.15.4

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、安装依赖

参考 building-guacamole-server 官方文档,安装对应操作系统的依赖包。

yum -y localinstall --nogpgcheck https://mirrors.aliyun.com/rpmfusion/free/el/rpmfusion-free-release-7.noarch.rpm

yum install -y cairo-devel libjpeg-turbo-devel libpng-devel libtool uuid-devel

yum install -y ffmpeg-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel

3、构建 Guacd

./configure --with-init-dir=/etc/init.d

make

make install

ldconfig

如果希望使用 systemd 管理, 可以使用 ./configure --with-systemd-dir=/etc/systemd/system/

4、下载 Lion

可以从 Github 网站上获取最新的 Release 副本。

OS  Arch    Name

Linux   amd64   lion-v2.15.4-linux-amd64.tar.gz

Linux   arm64   lion-v2.15.4-linux-arm64.tar.gz

macOS   amd64   lion-v2.15.4-darwin-amd64.tar.gz

Windows amd64   lion-v2.15.4-windows-amd64.tar.gz

cd /opt

wget https://github.com/jumpserver/lion-release/releases/download/v2.15.4/lion-v2.15.4-linux-amd64.tar.gz

tar -xf lion-v2.15.4-linux-amd64.tar.gz

cd lion-v2.15.4-linux-amd64

5、修改配置文件

cp config_example.yml config.yml

vi config.yml

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

# NAME:

# Jumpserver项目的url, api请求注册会使用

CORE_HOST: http://127.0.0.1:8080   # Core 的地址

# Bootstrap Token, 预共享秘钥, 用来注册使用的service account和terminal

# 请和jumpserver 配置文件中保持一致,注册完成后可以删除

BOOTSTRAP_TOKEN: ********  # 和 Core config.yml 的值保持一致

# 启动时绑定的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:

6、启动 Guacd⚓︎

/etc/init.d/guacd start

7、启动 Lion⚓︎

./lion

六、Nginx安装

从 Nginx 官方网站上获取 Nginx 的最新发行版本 linux_packages,通过命令行验证安装是否完成:

1、安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2、安装 PCRE(让 Nginx 支持 Rewrite 功能)

#下载最新版本的,注意不要用pcre2

wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz --no-check-certificate       #因部署了openssl 需要增加 --no-check-certificate 参数跳过验证

tar -xvf pcre-8.45.tar.gz -C /opt/nginx/

cd nginx/pcre-8.45/

#安装编译

./configure

make && make install

#查看pcre版本

pcre-config --version

3、安装nginx

cd /opt/nginx

#下载

wget https://nginx.org/download/nginx-1.19.7.tar.gz

tar -xvf nginx-1.19.7.tar.gz

cd nginx-1.19.7

#编译安装

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/nginx/pcre-8.45

make && make install

#查看版本

/usr/local/webserver/nginx/sbin/nginx -v

4、设置环境变量

vi /etc/profile

#最后一行加入PATH

export PATH=$PATH:/usr/local/webserver/nginx/sbin

环境变量生效

source /etc/profile

验证

nginx -v

5、启动nginx

cd /usr/local/webserver/nginx/sbin

./nginx

6、nginx命令

start nginx:打开 nginx

nginx -t :测试配置文件是否有语法错误

nginx -s reopen:重启Nginx

nginx -s reload:重新加载Nginx配置文件,然后以优雅的方式重启Nginx

nginx -s stop:强制停止Nginx服务

nginx -s quit:优雅地停止Nginx服务(即处理完所有请求后再停止服务)

七、整合 JumpServer

vi jumpserver.conf

server {

  listen 80;

  # server_name _;

  #文件大小限制

  client_max_body_size 5000m;

  # Luna 配置

  location /luna/ {

    proxy_pass http://localhost:4200;

  }

  # Core data 静态资源

  location /media/replay/ {

    add_header Content-Encoding gzip;

    root /opt/jumpserver/data/;

  }

  location /media/ {

    root /opt/jumpserver/data/;

  }

  location /static/ {

    root /opt/jumpserver/data/;

  }

  # KoKo Lion 配置

  location /koko/ {

    proxy_pass       http://localhost: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://localhost: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://localhost: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://localhost: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://localhost: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://localhost: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;

  }

}

你可能感兴趣的:(jumpserver,运维)