一.环境要求
代码语言:txt复制硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低)
操作系统: Linux 发行版 x86_64
Python = 3.6.x
Mysql Server ≥ 5.6
Mariadb Server ≥ 5.5.56
Redis
二.基于docker部署
代码语言:txt复制首先部署docker
yum install -y yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/aliyun.base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.09.9-3.el7
# 启动docker,并设置docker开机自启
systemctl start docker && systemctl enable docker
# 配置加速,并设置驱动
cat << EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
javascript:;
# 加载daemon并重启docker
systemctl daemon-reload && systemctl restart docker
三.部署mysql容器服务
代码语言:javascript复制#从上面的环境要求我们看出,jumpserver依赖的外置数据库服务有版本要求,我们这里从官方容器仓库中直接拉取mysql5.7版本的镜像。
docker pull mysql:5.7
#我们在宿主机上准备好mysql的配置文件和数据存放目录,后面mysql容器启动的时候直接挂载宿主机目录,使数据保存在宿主机,实现数据和容器的分离,
可以在容器运行异常时,可以再启动一个新的容器直接使用宿主机的数据,从而保证业务的正常运行。
mkdir /iflytek/mysql/mysql.conf.d -pv
mkdir /iflytek/mysql/conf.d -p
mkdir /iflytek/mysql/data
vim /iflytek/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
vim /iflytek/mysql/conf.d/mysql.cnf
[mysql]
default-character-set=utf8
#启动Mysql容器,挂载上面准备好的配置文件和数据存放目录。然后通过-e MYSQL_ROOT_PASSWORD指定启动的mysql的root密码
[root@jumpserver-no ~]# docker run -it -d -p 3306:3306 -v /iflytek/mysql/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /iflytek/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf -v /iflytek/mysql/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="ming1128" mysql:5.7
#安装mysql客户端,测试访问容器数据库是否正常(换一台服务器)
yum install -y mariadb
mysql -h 10.111.3.55 -pming1128
mysql> show databases;
#验证数据库的字符编码是否符合要求,jumpserver要求数据库字符编码为utf8,不然后面web显示可能会有问题
show global variables where variable_name like 'character%';
#创建jumpserver数据库,并指定字符编码
mysql> create database jumpserver default charset 'utf8' collate 'utf8_bin';
#创建jumpserver访问用户,并赋权。
mysql> grant all on jumpserver.* to 'jumpserver'@'%' identified by 'ming1128';
#验证jumpserver用户授权是否成功
mysql -ujumpserver -pming1128 -h192.168.10.2
mysql> show databases;
四.部署redis容器服务
代码语言:javascript复制#直接从官方仓库拉取redis镜像,并启动
[root@jumpserver-no ~]# docker pull redis:4.0.14
[root@jumpserver-no ~]# docker run -it -d -p 6379:6379 redis:4.0.14
9cb2b24d2008a541635dc5f9fd21b843cb3c6e04517192ab7442e4eea9d66521
#安装redis,并测试访问redis容器服务,这里还可以设置一个redis的数据库密码,我这里就没设了,设不设问题不大,不过为了安全建议设
# 客户端验证:
[root@jumpserver-no ~]# wget -O /etc/yum.repos.d/aliyun.epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@jumpserver-no ~]# yum install redis -y
[root@jumpserver-no ~]# redis-cli -h 192.168.10.2
172.31.242.80:6379> info
# Server
redis_version:4.0.14
redis_git_sha1:00000000
.......
4.生成随机加密秘钥和初始化token
代码语言:javascript复制#我这里通过脚本直接生成。
[root@jumpserver-no ~]# vim random_encryption.sh
#/bin/bash
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
[root@jumpserver-no ~]# bash random_encryption.sh
Ty79C2b0CUgYHVDI6nog9hx0Mx55skIXP4piiSHtY1KKtD8Vt6
tFG4SfQae8L0Fzwn
五.部署jumpserver容器服务
代码语言:javascript复制#从网上直接拉取最新的jumpserver镜像
[root@jumpserver-no ~]# docker pull jumpserver/jms_all:latest
[root@jumpserver-no ~]# docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 718a6da099d8 2 days ago 448MB
jumpserver/jms_all latest 6e51b94ef54d 2 days ago 1.48GB
redis 4.0.14 191c4017dcdd 3 months ago 89.3MB
centos/mysql-57-centos7 latest f83a2938370c 10 months ago 452MB
#通过镜像,启动jumpserver
[root@jumpserver-no ~]# docker run --name PL_jumpserver -d
> -v /iflytek/jumpserver:/opt/jumpserver/data/media
> -p 80:80
> -p 2222:2222
> -e SECRET_KEY=Ty79C2b0CUgYHVDI6nog9hx0Mx55skIXP4piiSHtY1KKtD8Vt6 #这里填的是上面生成的秘钥
> -e BOOTSTRAP_TOKEN=tFG4SfQae8L0Fzwn #这里上面生成的Token
> -e DB_HOST=192.168.10.2 #指定mysql服务的地址,因为我这里是本机,所以直接填本机地址就可以了,如果是在别的机器部署的mysql,就填mysql所在地址就可以了
> -e DB_PORT=3306 #mysql开发的端口号
> -e DB_USER=jumpserver #对数据库上的jumpserver数据库有权限的用户
> -e DB_PASSWORD=ming1128 #上面用户的密码
> -e DB_NAME=jumpserver #指定在mysql上的数据库名。
> -e REDIS_HOST=192.168.10.2 #redis服务的地址
> -e REDIS_PORT=6379 #redis开放的端口号
> -e REDIS_PASSWORD= #redis数据库密码,因为我上面没有设密码,所以我这里直接为空就可以了,如果设了密码,就输入密码就行了
> jumpserver/jms_all:latest
docker run --name PL_jumpserver -d -v /iflytek/jumpserver:/opt/jumpserver/data/media -p 80:80 -p 2222:2222 -e SECRET_KEY=T0mjL57kIWfQ80FAvNnwAxDwuylsQCVHlGz3JdihktJYU7CasJ -e BOOTSTRAP_TOKEN=KPOCNe9vNaJhR903 -e DB_HOST=192.168.10.2 -e DB_PORT=3306 -e DB_USER=jumpserver -e DB_PASSWORD=ming1128 -e DB_NAME=jumpserver -e REDIS_HOST=192.168.10.2 -e REDIS_PORT=6379 -e REDIS_PASSWORD= jumpserver/jms_all:latest
启动完之后。我们进入数据库,验证数据库内容,看jumpserver数据是否写入到数据库中的。
代码语言:javascript复制[root@jumpserver-no ~]# mysql -uroot -pming1128 -h 192.168.10.2
mysql> use jumpserver;
mysql> show tables;
至此,服务部署完成,如果想看容器日志信息的话可以执行下面的命令
代码语言:javascript复制进入容器命令 docker exec -it jms_all /bin/bash
下面我们可以访问web界面进行使用了
6.Jumpserver管理员的使用
1.Jumpserver的登录
3.创建相关用户,资产并进行相关授权操作
创建jumpserver登录用户
创建管理员用户
创建系统用户
创建资产
资产授权