2.8 生成数据库表结构和初始化数据
如何报pymysql错误:
方法一:
(py3) [root@node9 jumpserver]# pip install pymysql
(py3)[root@node9 jumpserver]# pwd
/opt/jumpserver/apps/jumpserver
(py3) [root@node9 jumpserver]# ls
context_processor.py __init__.py middleware.py __pycache__ settings.py urls.py utils.py views.py wsgi.py
(py3) [root@node9 jumpserver]# cat__init__.py
import pymysql
pymysql.install_as_MySQLdb()
方法二:
如果数据库版本是MySQL5.7.x的话,请安装以下包就可以了。
yum install mysql-communite-devel
$ cd/opt/jumpserver/utils
$ bash make_migrations.sh
如果执行以上命令提示缺少模块请安装以下模块:
pip install python-ldap
pip install Django
2.9 运行 Jumpserver
$ cd /opt/jumpserver
$ ./jms start all -d # 后台运行使用 -d 参数./jms start all
# 新版本更新了运行脚本,使用方式./jmsstart|stop|status|restart all 后台运行请添加 -d 参数
运行不报错,请浏览器访问 http://192.168.244.144:8080/ 默认账号: admin 密码: admin 页面显示不正常先不用处理,继续往下操作,后面搭建 nginx 代理后即可正常访问,原因是因为 django 无法在非 debug 模式下加载静态资源
三. 安装 SSH Server 和 WebSocket Server: Coco
3.1 下载或 Clone 项目
新开一个终端,别忘了 source/opt/py3/bin/activate
$ cd /opt
$ source /opt/py3/bin/activate
$ git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
$ echo "source/opt/py3/bin/activate" > /opt/coco/.env # 进入 coco 目录时将自动载入 python虚拟环境
# 首次进入 coco 文件夹会有提示,按 y 即可
(py3) [root@node9coco]# cd /opt/coco/
autoenv:
autoenv: WARNING:
autoenv: This isthe first time you are about to source /opt/coco/.env:
autoenv:
autoenv: --- (begin contents)---------------------------------------
autoenv: source /opt/py3/bin/activate$
autoenv:
autoenv: --- (end contents)-----------------------------------------
autoenv:
autoenv: Are yousure you want to allow this? (y/N) y
# Are you sure you want to allow this?(y/N) y
3.2 安装依赖
$ cd /opt/coco/requirements
$ yum -y install $(cat rpm_requirements.txt)
$ pip install -r requirements.txt -i https://pypi.python.org/simple
3.3 修改配置文件并运行
$ cd /opt/coco
$ cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
$ vi conf.py
# 注意对齐,不要直接复制本文档的内容
注意: 配置文件是 Python 格式,不要用 TAB,而要用空格
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
importos
BASE_DIR = os.path.dirname(__file__)
classConfig:
"""
Coco config file, coco also load config from server update setting below
"""
# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# NAME = "localhost"
NAME ="coco"
# Jumpserver项目的url,api请求注册会使用, 如果Jumpserver没有运行在127.0.0.1:8080,请修改此处
# CORE_HOST =os.environ.get("CORE_HOST") or 'http://127.0.0.1:8080'
CORE_HOST ='http://127.0.0.1:8080'
# 启动时绑定的ip, 默认0.0.0.0
# BIND_HOST = '0.0.0.0'
# 监听的SSH端口号, 默认2222
# SSHD_PORT = 2222
# 监听的HTTP/WS端口号,默认5000
# HTTPD_PORT = 5000
# 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
# 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
# ACCESS_KEY = None
# ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
# ACCESS_KEY_STORE =os.path.join(BASE_DIR, 'keys', '.access_key')
# 加密密钥
# SECRET_KEY = None
# 设置日志级别 ['DEBUG', 'INFO', 'WARN', 'ERROR','FATAL', 'CRITICAL']
# LOG_LEVEL = 'INFO'
LOG_LEVEL ='WARN'
# 日志存放的目录
# LOG_DIR = os.path.join(BASE_DIR,'logs')
# Session录像存放目录
# SESSION_DIR = os.path.join(BASE_DIR,'sessions')
# 资产显示排序方式, ['ip', 'hostname']
# ASSET_LIST_SORT_BY = 'ip'
# 登录是否支持密码认证
# PASSWORD_AUTH = True
# 登录是否支持秘钥认证
# PUBLIC_KEY_AUTH = True
# SSH白名单
# ALLOW_SSH_USER = 'all' # ['test', 'test2']
# SSH黑名单, 如果用户同时在白名单和黑名单,黑名单优先生效
# BLOCK_SSH_USER = []
# 和Jumpserver 保持心跳时间间隔
# HEARTBEAT_INTERVAL = 5
# Admin的名字,出问题会提示给用户
# ADMINS = ''
COMMAND_STORAGE = {
"TYPE": "server"
}
REPLAY_STORAGE = {
"TYPE": "server"
}
# SSH连接超时时间(default 15 seconds)
# SSH_TIMEOUT = 15
# 语言 = en
LANGUAGE_CODE ='zh'
config = Config()
$ ./cocod start # 后台运行使用 -d 参数./cocod start -d
# 新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数
启动成功后去Jumpserver 会话管理-终端管理(http://192.168.244.144:8080/terminal/terminal/)接受coco的注册
四. 安装 Web Terminal 前端: Luna
Luna 已改为纯前端,需要 Nginx 来运行访问
访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译
4.1 解压 Luna
$ cd /opt
$ wget https://github.com/jumpserver/luna/releases/download/1.4.1/luna.tar.gz
$ tar xvf luna.tar.gz
$ chown -R root:root luna
五. 安装 Windows 支持组件(如果不需要管理 windows 资产,可以直接跳过这一步)
因为手动安装 guacamole 组件比较复杂,这里提供打包好的 docker 使用, 启动 guacamole
5.1 Docker安装 (仅针对CentOS7,CentOS6安装Docker相对比较复杂)
$ yum remove docker-latest-logrotatedocker-logrotate docker-selinux dockdocker-engine
$ yum install -y yum-utilsdevice-mapper-persistent-data lvm2
# 添加docker官方源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum makecache fast
$ yum install docker-ce
# 国内部分用户可能无法连接docker官网提供的源,这里提供阿里云的镜像节点供测试使用
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg
$ yum makecache fast
$ yum -y install docker-ce
$ systemctl start docker
$ systemctl status docker
5.2 启动 Guacamole
这里所需要注意的是 guacamole 暴露出来的端口是 8081,若与主机上其他端口冲突请自定义
# 注意:这里需要修改下http://<填写jumpserver的url地址> 例: http://192.168.244.144, 否则会出错, 带宽有限, 下载时间可能有点长,可以喝杯咖啡,撩撩对面的妹子
# 不能使用 127.0.0.1 ,可以更换registry.jumpserver.org/public/guacamole:latest
$ docker run --name jms_guacamole -d \
-p8081:8080 -v /opt/guacamole/key:/config/guacamole/key \
-eJUMPSERVER_KEY_DIR=/config/guacamole/key \
-eJUMPSERVER_SERVER=http://<填写jumpserver的url地址> \
jumpserver/guacamole:latest
启动成功后去Jumpserver 会话管理-终端管理(http://192.168.244.144:8080/terminal/terminal/)接受[Gua]开头的一个注册
六. 配置 Nginx 整合各组件
6.1 安装 Nginx 根据喜好选择安装方式和版本
CentOS7.x
$ yum -y install nginx
6.2 准备配置文件修改 /etc/nginx/nginx.conf
内容如下:
$ vim /etc/nginx/nginx.conf
# CentOS 6.x
需要修改文件 /etc/nginx/conf.d/default.conf
# 把默认server配置块改成这样,原有的内容全部删除
server {
listen 80; # 代理端口,以后将通过此端口进行访问,不再通过8080端口
client_max_body_size 100m; # 录像上传大小限制
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/; # luna 路径,如果修改安装目录,此处需要修改
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/; # 录像位置,如果修改安装目录,此处需要修改
}
location /static/ {
root /opt/jumpserver/data/; # 静态资源,如果修改安装目录,此处需要修改
}
location /socket.io/ {
proxy_pass http://localhost:5000/socket.io/; # 如果coco安装在别的服务器,请填写它的ip
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location /guacamole/ {
proxy_pass http://localhost:8081/; # 如果guacamole安装在别的服务器,请填写它的ip
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}