Core 环境部署

1 Core 组件简述

1.1 环境要求

NameCorePython
Versionv3.10.13.9

1.2 下载源代码

  • 可以从 Github 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照,从项目网站下载的源将采用 .tar.gz 存档的形式,通过命令行中提取该存档:
  1. cd /opt
  2. mkdir /opt/jumpserver-v3.10.1
  3. wget -O /opt/jumpserver-v3.10.1.tar.gz https://github.com/jumpserver/jumpserver/archive/refs/tags/v3.10.1.tar.gz
  4. tar -xf jumpserver-v3.10.1.tar.gz -C /opt/jumpserver-v3.10.1 --strip-components 1
  5. cd jumpserver-v3.10.1
  6. rm -f apps/common/utils/ip/geoip/GeoLite2-City.mmdb apps/common/utils/ip/ipip/ipipfree.ipdb
  7. wget https://download.jumpserver.org/files/ip/GeoLite2-City.mmdb -O apps/common/utils/ip/geoip/GeoLite2-City.mmdb
  8. wget https://download.jumpserver.org/files/ip/ipipfree.ipdb -O apps/common/utils/ip/ipip/ipipfree.ipdb
  1. ls -l requirements/
  1. requirements/ # 对应操作系统需要的依赖包
  2. ├── apk_pkg.sh # Alpine
  3. ├── deb_pkg.sh # 基于 Debian 的发行版(如: Ubuntu)
  4. ├── issues.txt # macOS 一些问题及解决方案
  5. ├── mac_pkg.sh # macOS
  6. ├── requirements.txt # python
  7. └── rpm_pkg.sh # 基于 RedHat 的发行版(如: CentOS)

Ubuntu 20.04

  1. apt-get install -y pkg-config libxmlsec1-dev libpq-dev libffi-dev libxml2 libxslt-dev libldap2-dev libsasl2-dev sshpass mariadb-client bash-completion g++ make sshpass

如果你安装的是 MySQL, 将 mariadb 开发包自行替换成 mysql, 或者不要将 数据库 和 Core 部署在一起

  1. apt-get install -y libmariadb-dev

1.3 安装 Python3

  • Python 网站获取部署 Python3 的方法,请根据 环境要求,通过命令行中判断是否安装完成:
  1. apt-get install -y python3.9 python3.9-dev python3.9-venv
  1. python3.9
  1. Python 3.9.5 (default, Nov 23 2021, 15:27:38)
  2. [GCC 9.3.0] on linux
  3. Type "help", "copyright", "credits" or "license" for more information.
  4. >>>

1.4 安装 Python 依赖

  • 为 JumpServer 项目单独创建 python3 虚拟环境。
  1. python3.9 -m venv /opt/py3
  2. source /opt/py3/bin/activate
  • 每次运行项目都需要先执行 source /opt/py3/bin/activate 载入此环境。
  1. poetry install
  • 修改配置文件。
  1. cp config_example.yml config.yml
  2. vi config.yml
  1. # SECURITY WARNING: keep the secret key used in production secret!
  2. # 加密秘钥 生产环境中请修改为随机字符串,请勿外泄, 可使用命令生成
  3. # $ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 48;echo
  4. SECRET_KEY: **************** # 必填项, 长度推荐 50 位以上
  5. # SECURITY WARNING: keep the bootstrap token used in production secret!
  6. # 预共享Token koko 和 lion 用来注册服务账号,不在使用原来的注册接受机制
  7. # $ cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24;echo
  8. BOOTSTRAP_TOKEN: *********** # 必填项, 长度推荐 20 位以上
  9. # Development env open this, when error occur display the full process track, Production disable it
  10. # DEBUG 模式 开启DEBUG后遇到错误时可以看到更多日志
  11. DEBUG: true # 开发建议打开 DEBUG, 生产环境应该关闭
  12. # DEBUG, INFO, WARNING, ERROR, CRITICAL can set. See https://docs.djangoproject.com/en/1.10/topics/logging/
  13. # 日志级别
  14. LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
  15. # LOG_DIR:
  16. # Session expiration setting, Default 24 hour, Also set expired on on browser close
  17. # 浏览器Session过期时间,默认24小时, 也可以设置浏览器关闭则过期
  18. # SESSION_COOKIE_AGE: 86400
  19. SESSION_EXPIRE_AT_BROWSER_CLOSE: true # 浏览器关闭 session 过期
  20. # Database setting, Support sqlite3, mysql, postgres ....
  21. # 数据库设置
  22. # See https://docs.djangoproject.com/en/1.10/ref/settings/#databases
  23. # SQLite setting:
  24. # 使用单文件sqlite数据库
  25. # DB_ENGINE: sqlite3
  26. # DB_NAME:
  27. # MySQL or postgres setting like:
  28. # 使用Mysql作为数据库
  29. DB_ENGINE: mysql
  30. DB_HOST: 127.0.0.1 # 自行配置 数据库相关
  31. DB_PORT: 3306
  32. DB_USER: jumpserver
  33. DB_PASSWORD: ********
  34. DB_NAME: jumpserver
  35. # When Django start it will bind this host and port
  36. # ./manage.py runserver 127.0.0.1:8080
  37. # 运行时绑定端口, 将会使用 0.0.0.0:8080 0.0.0.0:8070 端口
  38. HTTP_BIND_HOST: 0.0.0.0
  39. HTTP_LISTEN_PORT: 8080
  40. WS_LISTEN_PORT: 8070
  41. # Use Redis as broker for celery and web socket
  42. # Redis配置
  43. REDIS_HOST: 127.0.0.1 # 自行配置 Redis 相关
  44. REDIS_PORT: 6379
  45. REDIS_PASSWORD: ********
  46. # REDIS_DB_CELERY: 3
  47. # REDIS_DB_CACHE: 4
  48. # Use OpenID Authorization
  49. # 使用 OpenID 进行认证设置
  50. # AUTH_OPENID: False # True or False
  51. # BASE_SITE_URL: None
  52. # AUTH_OPENID_CLIENT_ID: client-id
  53. # AUTH_OPENID_CLIENT_SECRET: client-secret
  54. # AUTH_OPENID_PROVIDER_ENDPOINT: https://op-example.com/
  55. # AUTH_OPENID_PROVIDER_AUTHORIZATION_ENDPOINT: https://op-example.com/authorize
  56. # AUTH_OPENID_PROVIDER_TOKEN_ENDPOINT: https://op-example.com/token
  57. # AUTH_OPENID_PROVIDER_JWKS_ENDPOINT: https://op-example.com/jwks
  58. # AUTH_OPENID_PROVIDER_USERINFO_ENDPOINT: https://op-example.com/userinfo
  59. # AUTH_OPENID_PROVIDER_END_SESSION_ENDPOINT: https://op-example.com/logout
  60. # AUTH_OPENID_PROVIDER_SIGNATURE_ALG: HS256
  61. # AUTH_OPENID_PROVIDER_SIGNATURE_KEY: None
  62. # AUTH_OPENID_SCOPES: "openid profile email"
  63. # AUTH_OPENID_ID_TOKEN_MAX_AGE: 60
  64. # AUTH_OPENID_ID_TOKEN_INCLUDE_CLAIMS: True
  65. # AUTH_OPENID_USE_STATE: True
  66. # AUTH_OPENID_USE_NONCE: True
  67. # AUTH_OPENID_SHARE_SESSION: True
  68. # AUTH_OPENID_IGNORE_SSL_VERIFICATION: True
  69. # AUTH_OPENID_ALWAYS_UPDATE_USER: True
  70. # Use Radius authorization
  71. # 使用Radius来认证
  72. # AUTH_RADIUS: false
  73. # RADIUS_SERVER: localhost
  74. # RADIUS_PORT: 1812
  75. # RADIUS_SECRET:
  76. # CAS 配置
  77. # AUTH_CAS': False,
  78. # CAS_SERVER_URL': "http://host/cas/",
  79. # CAS_ROOT_PROXIED_AS': 'http://jumpserver-host:port',
  80. # CAS_LOGOUT_COMPLETELY': True,
  81. # CAS_VERSION': 3,
  82. # LDAP/AD settings
  83. # LDAP 搜索分页数量
  84. # AUTH_LDAP_SEARCH_PAGED_SIZE: 1000
  85. #
  86. # 定时同步用户
  87. # 启用 / 禁用
  88. # AUTH_LDAP_SYNC_IS_PERIODIC: True
  89. # 同步间隔 (单位: 时) (优先)
  90. # AUTH_LDAP_SYNC_INTERVAL: 12
  91. # Crontab 表达式
  92. # AUTH_LDAP_SYNC_CRONTAB: * 6 * * *
  93. #
  94. # LDAP 用户登录时仅允许在用户列表中的用户执行 LDAP Server 认证
  95. # AUTH_LDAP_USER_LOGIN_ONLY_IN_USERS: False
  96. #
  97. # LDAP 认证时如果日志中出现以下信息将参数设置为 0 (详情参见:https://www.python-ldap.org/en/latest/faq.html)
  98. # In order to perform this operation a successful bind must be completed on the connection
  99. # AUTH_LDAP_OPTIONS_OPT_REFERRALS: -1
  100. # OTP settings
  101. # OTP/MFA 配置
  102. # OTP_VALID_WINDOW: 0
  103. # OTP_ISSUER_NAME: Jumpserver
  104. # Perm show single asset to ungrouped node
  105. # 是否把未授权节点资产放入到 未分组 节点中
  106. # PERM_SINGLE_ASSET_TO_UNGROUP_NODE: False
  107. #
  108. # 同一账号仅允许在一台设备登录
  109. # USER_LOGIN_SINGLE_MACHINE_ENABLED: False
  110. #
  111. # 启用定时任务
  112. # PERIOD_TASK_ENABLE: True
  113. #
  114. # 启用二次复合认证配置
  115. # LOGIN_CONFIRM_ENABLE: False
  116. #
  117. # Windows 登录跳过手动输入密码
  118. # WINDOWS_SKIP_ALL_MANUAL_PASSWORD: False
  • 处理国际化。
  1. rm -f apps/locale/zh/LC_MESSAGES/django.mo apps/locale/zh/LC_MESSAGES/djangojs.mo
  2. python apps/manage.py compilemessages

1.5 启动 Core

  • 后台运行可以加 -d,./jms start -d
  1. ./jms start