测试推荐环境

  • CPU: 64位双核处理器
  • 内存: 4G DDR3
  • 数据库:mysql 版本大于等于 5.6 mariadb 版本大于等于 5.5.6

环境

  • 系统: CentOS 7.2
  • IP: 192.168.12.183
  • 设置 selinux 和防火墙
  1. $ firewall-cmd --zone=public --add-port=/tcp --permanent # nginx 端口
  2. $ firewall-cmd --zone=public --add-port=/tcp --permanent # 用户SSH登录端口 coco
  3.  
  4. $ firewall-cmd --reload # 重新载入规则
  5.  
  6. $ setenforce
  7. $ sed -i "s/enforcing/disabled/g" /etc/selinux/config
  1. # 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文
  2. $ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
  3. $ export LC_ALL=zh_CN.UTF-8
  4. $ echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
  1.  

一. 准备 Python3 和 Python 虚拟环境

1.1 安装依赖包

  1. $ yum -y install wget gcc epel-release git

1.2 安装 Python3.6

  1. $ yum -y install python36 python36-devel

1.3 建立 Python 虚拟环境

因为 CentOS 7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为了不扰乱原来的环境我们来使用 Python 虚拟环境

  1. $ cd /opt
  2. $ python3.6 -m venv py3
  3. $ source /opt/py3/bin/activate
  4.  
  5. # 看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行
  6. (py3) [root@localhost py3]

1.4 自动载入 Python 虚拟环境配置

此项仅为懒癌晚期的人员使用,防止运行 Jumpserver 时忘记载入 Python 虚拟环境导致程序无法运行。使用autoenv

  1. $ cd /opt
  2. $ git clone https://github.com/kennethreitz/autoenv.git
  3. $ echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc
  4. $ source ~/.bashrc

二. 安装 Jumpserver

2.1 下载或 Clone 项目

项目提交较多 git clone 时较大,你可以选择去 Github 项目页面直接下载zip包。

  1. $ cd /opt/
  2. $ git clone https://github.com/jumpserver/jumpserver.git
  3. $ echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env # 进入 jumpserver 目录时将自动载入 python 虚拟环境
  4.  
  5. # 首次进入 jumpserver 文件夹会有提示,按 y 即可
  6. # Are you sure you want to allow this? (y/N) y

2.2 安装依赖 RPM 包

  1. $ cd /opt/jumpserver/requirements
  2. $ yum -y install $(cat rpm_requirements.txt) # 如果没有任何报错请继续

2.3 安装 Python 库依赖

  1. $ pip install --upgrade pip setuptools
  2. $ pip install -r requirements.txt

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

  1. $ yum -y install redis
  2. $ systemctl enable redis
  3. $ systemctl start redis

2.5 安装 MySQL

本教程使用 Mysql 作为数据库,如果不使用 Mysql 可以跳过相关 Mysql 安装和配置

  1. $ yum -y install mariadb mariadb-devel mariadb-server # centos7下安装的是mariadb
  2. $ systemctl enable mariadb
  3. $ systemctl start mariadb

2.6 创建数据库 Jumpserver 并授权

  1. $ mysql -uroot
  2. > create database jumpserver default charset 'utf8';
  3. > grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'weakPassword';
  4. > flush privileges;
  5. > quit

2.7 修改 Jumpserver 配置文件

  1. $ cd /opt/jumpserver
  2. $ cp config_example.py config.py
  3. $ vi config.py
  4.  
  5. # 注意对齐,不要直接复制本文档的内容,实际内容以文件为准,本文仅供参考

注意: 配置文件是 Python 格式,不要用 TAB,而要用空格

  1. """
  2. jumpserver.config
  3. ~~~~~~~~~~~~~~~~~
  4.  
  5. Jumpserver project setting file
  6.  
  7. :copyright: (c) 2014-2017 by Jumpserver Team
  8. :license: GPL v2, see LICENSE for more details.
  9. """
  10. import os
  11.  
  12. BASE_DIR = os.path.dirname(os.path.abspath(__file__))
  13.  
  14. class Config:
  15. """
  16. Jumpserver Config File
  17. Jumpserver 配置文件
  18.  
  19. Jumpserver use this config for drive django framework running,
  20. You can set is value or set the same envirment value,
  21. Jumpserver look for config order: file => env => default
  22.  
  23. Jumpserver使用配置来驱动Django框架的运行,
  24. 你可以在该文件中设置,或者设置同样名称的环境变量,
  25. Jumpserver使用配置的顺序: 文件 => 环境变量 => 默认值
  26. """
  27. # SECURITY WARNING: keep the secret key used in production secret!
  28. # 加密秘钥 生产环境中请修改为随机字符串,请勿外泄
  29. SECRET_KEY = '2vym+ky!997d5kkcc64mnz06y1mmui3lut#(^wd=%s_qj$1%x'
  30.  
  31. # Django security setting, if your disable debug model, you should setting that
  32. ALLOWED_HOSTS = ['*']
  33.  
  34. # SECURITY WARNING: keep the bootstrap token used in production secret!
  35. # 预共享Token coco和guacamole用来注册服务账号,不在使用原来的注册接受机制
  36. BOOTSTRAP_TOKEN = 'nwv4RdXpM82LtSvmV'
  37.  
  38. # Development env open this, when error occur display the full process track, Production disable it
  39. # DEBUG 模式 开启DEBUG后遇到错误时可以看到更多日志
  40. # DEBUG = True
  41. DEBUG = False
  42.  
  43. # DEBUG, INFO, WARNING, ERROR, CRITICAL can set. See https://docs.djangoproject.com/en/1.10/topics/logging/
  44. # 日志级别
  45. # LOG_LEVEL = 'DEBUG'
  46. # LOG_DIR = os.path.join(BASE_DIR, 'logs')
  47. LOG_LEVEL = 'ERROR'
  48. LOG_DIR = os.path.join(BASE_DIR, 'logs')
  49.  
  50. # Session expiration setting, Default 24 hour, Also set expired on on browser close
  51. # 浏览器Session过期时间,默认24小时, 也可以设置浏览器关闭则过期
  52. # SESSION_COOKIE_AGE = 3600 * 24
  53. # SESSION_EXPIRE_AT_BROWSER_CLOSE = False
  54. SESSION_EXPIRE_AT_BROWSER_CLOSE = True
  55.  
  56. # Database setting, Support sqlite3, mysql, postgres ....
  57. # 数据库设置
  58. # See https://docs.djangoproject.com/en/1.10/ref/settings/#databases
  59.  
  60. # SQLite setting:
  61. # 使用单文件sqlite数据库
  62. # DB_ENGINE = 'sqlite3'
  63. # DB_NAME = os.path.join(BASE_DIR, 'data', 'db.sqlite3')
  64.  
  65. # MySQL or postgres setting like:
  66. # 使用Mysql作为数据库
  67. DB_ENGINE = 'mysql'
  68. DB_HOST = '127.0.0.1'
  69. DB_PORT = 3306
  70. DB_USER = 'jumpserver'
  71. DB_PASSWORD = 'weakPassword'
  72. DB_NAME = 'jumpserver'
  73.  
  74. # When Django start it will bind this host and port
  75. # ./manage.py runserver 127.0.0.1:8080
  76. # 运行时绑定端口
  77. HTTP_BIND_HOST = '0.0.0.0'
  78. HTTP_LISTEN_PORT = 8080
  79.  
  80. # Use Redis as broker for celery and web socket
  81. # Redis配置
  82. REDIS_HOST = '127.0.0.1'
  83. REDIS_PORT = 6379
  84. # REDIS_PASSWORD = ''
  85. # REDIS_DB_CELERY_BROKER = 3
  86. # REDIS_DB_CACHE = 4
  87.  
  88. # Use OpenID authorization
  89. # 使用OpenID 来进行认证设置
  90. # BASE_SITE_URL = 'http://localhost:8080'
  91. # AUTH_OPENID = False # True or False
  92. # AUTH_OPENID_SERVER_URL = 'https://openid-auth-server.com/'
  93. # AUTH_OPENID_REALM_NAME = 'realm-name'
  94. # AUTH_OPENID_CLIENT_ID = 'client-id'
  95. # AUTH_OPENID_CLIENT_SECRET = 'client-secret'
  96.  
  97. def __init__(self):
  98. pass
  99.  
  100. def __getattr__(self, item):
  101. return None
  102.  
  103. class DevelopmentConfig(Config):
  104. pass
  105.  
  106. class TestConfig(Config):
  107. pass
  108.  
  109. class ProductionConfig(Config):
  110. pass
  111.  
  112. # Default using Config settings, you can write if/else for different env
  113. config = DevelopmentConfig()

  

2.8 运行 Jumpserver

  1. $ cd /opt/jumpserver
  2. $ ./jms start all # 后台运行使用 -d 参数./jms start all -d
  3.  
  4. # 新版本更新了运行脚本,使用方式./jms start|stop|status|restart all 后台运行请添加 -d 参数

运行不报错, 请继续往下操作

三. 安装 SSH Server 和 WebSocket Server: Coco

3.1 下载或 Clone 项目

新开一个终端,别忘了 source /opt/py3/bin/activate

  1. $ cd /opt
  2. $ source /opt/py3/bin/activate
  3. $ git clone https://github.com/jumpserver/coco.git
  4. $ echo "source /opt/py3/bin/activate" > /opt/coco/.env # 进入 coco 目录时将自动载入 python 虚拟环境
  5.  
  6. # 首次进入 coco 文件夹会有提示,按 y 即可
  7. # Are you sure you want to allow this? (y/N) y

3.2 安装依赖

  1. $ cd /opt/coco/requirements
  2. $ yum -y install $(cat rpm_requirements.txt)
  3. $ pip install -r requirements.txt

3.3 修改配置文件并运行

  1. $ cd /opt/coco
  2. $ mkdir keys logs
  3. $ cp conf_example.py conf.py # 如果 coco 与 jumpserver 分开部署,请手动修改 conf.py
  4. $ vi conf.py
  5.  
  6. # 注意对齐,不要直接复制本文档的内容

注意: 配置文件是 Python 格式,不要用 TAB,而要用空格

  1. #!/usr/bin/env python3
  2. # -*- coding: utf- -*-
  3. #
  4.  
  5. import os
  6.  
  7. BASE_DIR = os.path.dirname(__file__)
  8.  
  9. class Config:
  10. """
  11. Coco config file, coco also load config from server update setting below
  12. """
  13. # 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
  14. # NAME = "localhost"
  15.  
  16. # Jumpserver项目的url, api请求注册会使用, 如果Jumpserver没有运行在127.0.0.:,请修改此处
  17. # CORE_HOST = os.environ.get("CORE_HOST") or 'http://127.0.0.1:8080'
  18. CORE_HOST = 'http://127.0.0.1:8080'
  19.  
  20. # Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
  21. # 请和jumpserver 配置文件中保持一致,注册完成后可以删除
  22. # BOOTSTRAP_TOKEN = "PleaseChangeMe"
  23. BOOTSTRAP_TOKEN = "nwv4RdXpM82LtSvmV"
  24.  
  25. # 启动时绑定的ip, 默认 0.0.0.0
  26. # BIND_HOST = '0.0.0.0'
  27.  
  28. # 监听的SSH端口号, 默认2222
  29. # SSHD_PORT =
  30.  
  31. # 监听的HTTP/WS端口号,默认5000
  32. # HTTPD_PORT =
  33.  
  34. # 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
  35. # 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
  36. # ACCESS_KEY = None
  37.  
  38. # ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
  39. # ACCESS_KEY_STORE = os.path.join(BASE_DIR, 'keys', '.access_key')
  40.  
  41. # 加密密钥
  42. # SECRET_KEY = None
  43.  
  44. # 设置日志级别 ['DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', 'CRITICAL']
  45. # LOG_LEVEL = 'INFO'
  46. LOG_LEVEL = 'ERROR'
  47.  
  48. # 日志存放的目录
  49. # LOG_DIR = os.path.join(BASE_DIR, 'logs')
  50.  
  51. # Session录像存放目录
  52. # SESSION_DIR = os.path.join(BASE_DIR, 'sessions')
  53.  
  54. # 资产显示排序方式, ['ip', 'hostname']
  55. # ASSET_LIST_SORT_BY = 'ip'
  56.  
  57. # 登录是否支持密码认证
  58. # PASSWORD_AUTH = True
  59.  
  60. # 登录是否支持秘钥认证
  61. # PUBLIC_KEY_AUTH = True
  62.  
  63. # SSH白名单
  64. # ALLOW_SSH_USER = 'all' # ['test', 'test2']
  65.  
  66. # SSH黑名单, 如果用户同时在白名单和黑名单,黑名单优先生效
  67. # BLOCK_SSH_USER = []
  68.  
  69. # 和Jumpserver 保持心跳时间间隔
  70. # HEARTBEAT_INTERVAL =
  71.  
  72. # Admin的名字,出问题会提示给用户
  73. # ADMINS = ''
  74. COMMAND_STORAGE = {
  75. "TYPE": "server"
  76. }
  77. REPLAY_STORAGE = {
  78. "TYPE": "server"
  79. }
  80.  
  81. # SSH连接超时时间 (default seconds)
  82. # SSH_TIMEOUT =
  83.  
  84. # 语言 = en
  85. LANGUAGE_CODE = 'zh'
  86.  
  87. config = Config()
  88. $ ./cocod start # 后台运行使用 -d 参数./cocod start -d
  89.  
  90. # 新版本更新了运行脚本,使用方式./cocod start|stop|status|restart 后台运行请添加 -d 参数

四. 安装 Web Terminal 前端: Luna

Luna 已改为纯前端,需要 Nginx 来运行访问

访问(https://github.com/jumpserver/luna/releases)下载对应版本的 release 包,直接解压,不需要编译

4.1 解压 Luna

  1. $ cd /opt
  2. $ wget https://github.com/jumpserver/luna/releases/download/1.4.6/luna.tar.gz
  3. $ tar xf luna.tar.gz
  4. $ chown -R root:root luna

五. 安装 Windows 支持组件(如果不需要管理 windows 资产,可以直接跳过这一步)

Guacamole 需要 Tomcat 来运行

5.1 安装依赖

  1. $ mkdir /usr/local/lib/freerdp/
  2. $ ln -s /usr/local/lib/freerdp /usr/lib64/freerdp
  3. $ rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
  4. $ rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
  5. $ yum -y localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
  6.  
  7. $ yum install -y java-1.8.0-openjdk libtool
  8. $ yum install -y cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel
  9. $ yum install -y ffmpeg-devel freerdp-devel freerdp-plugins pango-devel libssh2-devel libtelnet-devel libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel ghostscript

5.2 编译安装 guacamole 服务

  1. $ cd /opt
  2. $ git clone https://github.com/jumpserver/docker-guacamole.git
  3. $ cd /opt/docker-guacamole/
  4. $ tar -xf guacamole-server-0.9.14.tar.gz
  5. $ cd guacamole-server-0.9.14
  6. $ autoreconf -fi
  7. $ ./configure --with-init-dir=/etc/init.d
  8. $ make && make install
  9. $ cd ..
  10. $ rm -rf guacamole-server-0.9.14
  11. $ ldconfig

5.3 配置 Tomcat

  1. $ mkdir -p /config/guacamole /config/guacamole/lib /config/guacamole/extensions # 创建 guacamole 目录
  2. $ ln -sf /opt/docker-guacamole/guacamole-auth-jumpserver-0.9.14.jar /config/guacamole/extensions/guacamole-auth-jumpserver-0.9.14.jar
  3. $ ln -sf /opt/docker-guacamole/root/app/guacamole/guacamole.properties /config/guacamole/guacamole.properties # guacamole 配置文件
  4.  
  5. $ cd /config
  6. $ wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
  7. $ tar xf apache-tomcat-8.5.35.tar.gz
  8. $ rm -rf apache-tomcat-8.5.35.tar.gz
  9. $ mv apache-tomcat-8.5.35 tomcat8
  10. $ rm -rf /config/tomcat8/webapps/*
  11. $ ln -sf /opt/docker-guacamole/guacamole-0.9.14.war /config/tomcat8/webapps/ROOT.war # guacamole client
  12. $ sed -i 's/Connector port="8080"/Connector port="8081"/g' /config/tomcat8/conf/server.xml # 修改默认端口为 8081
  13. $ sed -i 's/FINE/WARNING/g' /config/tomcat8/conf/logging.properties # 修改 log 等级为 WARNING
  14.  
  15. $ cd /config
  16. $ wget https://github.com/ibuler/ssh-forward/releases/download/v0.0.5/linux-amd64.tar.gz
  17. $ tar xf linux-amd64.tar.gz -C /bin/
  18. $ chmod +x /bin/ssh-forward

5.4 配置环境变量

  1. $ export JUMPSERVER_SERVER=http://127.0.0.1:8080 # http://127.0.0.1:8080 指 jumpserver 访问地址
  2. $ echo "export JUMPSERVER_SERVER=http://127.0.0.1:8080" >> ~/.bashrc
  3.  
  4. # BOOTSTRAP_TOKEN 为 Jumpserver/config.py 里面的 BOOTSTRAP_TOKEN
  5. $ export BOOTSTRAP_TOKEN=nwv4RdXpM82LtSvmV
  6. $ echo "export BOOTSTRAP_TOKEN=nwv4RdXpM82LtSvmV" >> ~/.bashrc
  7. $ export JUMPSERVER_KEY_DIR=/config/guacamole/keys
  8. $ echo "export JUMPSERVER_KEY_DIR=/config/guacamole/keys" >> ~/.bashrc
  9. $ export GUACAMOLE_HOME=/config/guacamole
  10. $ echo "export GUACAMOLE_HOME=/config/guacamole" >> ~/.bashrc

5.5 启动 Guacamole

  1. $ /etc/init.d/guacd start
  2. $ sh /config/tomcat8/bin/startup.sh

六. 配置 Nginx 整合各组件

6.1 安装 Nginx

  1. $ vi /etc/yum.repos.d/nginx.repo
  2.  
  3. [nginx]
  4. name=nginx repo
  5. baseurl=http://nginx.org/packages/centos/7/$basearch/
  6. gpgcheck=0
  7. enabled=1
  8.  
  9. $ yum install -y nginx
  10. $ rm -rf /etc/nginx/conf.d/default.conf
  11. $ systemctl enable nginx

6.3 准备配置文件 修改 /etc/nginx/conf.d/jumpserver.conf

  1. $ vi /etc/nginx/conf.d/jumpserver.conf
  2.  
  3. server {
  4. listen 80; # 代理端口,以后将通过此端口进行访问,不再通过8080端口
  5. # server_name demo.jumpserver.org; # 修改成你的域名或者注释掉
  6.  
  7. client_max_body_size 100m; # 录像及文件上传大小限制
  8.  
  9. location /luna/ {
  10. try_files $uri / /index.html;
  11. alias /opt/luna/; # luna 路径,如果修改安装目录,此处需要修改
  12. }
  13.  
  14. location /media/ {
  15. add_header Content-Encoding gzip;
  16. root /opt/jumpserver/data/; # 录像位置,如果修改安装目录,此处需要修改
  17. }
  18.  
  19. location /static/ {
  20. root /opt/jumpserver/data/; # 静态资源,如果修改安装目录,此处需要修改
  21. }
  22.  
  23. location /socket.io/ {
  24. proxy_pass http://localhost:5000/socket.io/; # 如果coco安装在别的服务器,请填写它的ip
  25. proxy_buffering off;
  26. proxy_http_version 1.1;
  27. proxy_set_header Upgrade $http_upgrade;
  28. proxy_set_header Connection "upgrade";
  29. proxy_set_header X-Real-IP $remote_addr;
  30. proxy_set_header Host $host;
  31. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  32. access_log off;
  33. }
  34.  
  35. location /coco/ {
  36. proxy_pass http://localhost:5000/coco/; # 如果coco安装在别的服务器,请填写它的ip
  37. proxy_set_header X-Real-IP $remote_addr;
  38. proxy_set_header Host $host;
  39. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  40. access_log off;
  41. }
  42.  
  43. location /guacamole/ {
  44. proxy_pass http://localhost:8081/; # 如果guacamole安装在别的服务器,请填写它的ip
  45. proxy_buffering off;
  46. proxy_http_version 1.1;
  47. proxy_set_header Upgrade $http_upgrade;
  48. proxy_set_header Connection $http_connection;
  49. proxy_set_header X-Real-IP $remote_addr;
  50. proxy_set_header Host $host;
  51. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  52. access_log off;
  53. }
  54.  
  55. location / {
  56. proxy_pass http://localhost:8080; # 如果jumpserver安装在别的服务器,请填写它的ip
  57. proxy_set_header X-Real-IP $remote_addr;
  58. proxy_set_header Host $host;
  59. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  60. }
  61. }

6.3 运行 Nginx

  1. nginx -t # 确保配置没有问题, 有问题请先解决
  2.  
  3. # CentOS 7
  4. $ systemctl start nginx
  5. $ systemctl enable nginx

6.4 开始使用 Jumpserver

检查应用是否已经正常运行

服务全部启动后,访问 192.168.12.183,访问nginx代理的端口,不要再通过8080端口访问

默认账号: admin 密码: admin

到Jumpserver 会话管理-终端管理 检查 Coco Guacamole 等应用的注册。

centos7 jumpserver 部署和使用手册(一)的更多相关文章

  1. centos7 jumpserver 部署和使用手册(二)

    前面已经介绍了jumpserver的部署,基于这篇部署文档,下面介绍下部署完成后的的功能使用: 一.系统设置 1.1根据提供的帐号密码(admin/admin)登录jumpserver 修改 url ...

  2. 堡垒机环境-jumpserver部署

    1:安装数据库 这里是提前安装,也可以不安装,在安装jumpserver主程序的时候,他会询问你是否安装 yum -y install ncurses-devel cmake echo 'export ...

  3. CentOS7中部署Showdoc

    目录 CentOS7中部署Showdoc 前置环境 部署 配置文件 解压安装包 添加启动服务 设置权限 运行安装 界面 CentOS7中部署Showdoc 文:铁乐与猫 前置环境 因为showdoc其 ...

  4. jumpserverv0.5.0 基于 CentOS7安装部署

    基于 CentOS 7 一步一步安装 Jumpserver 0.5.0 环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux和防火墙 # CentOS 7 $ ...

  5. jumpserver部署0.3版本 =====( ̄▽ ̄*)b

    jumpserver概述 跳板机概述: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作: 跳板机缺点:没有实现对运维人员操作行为的控制和 ...

  6. JumpServer部署与管理

    一.JumpServer 堡垒机概述 JumpServer由Python/Django进行开发.使用GNU GPL v2.0开源协议.也是全球首款完全开源的堡垒机.同时配备了业界领先的Web Term ...

  7. 在 CentOS7 上部署 MySQL 主从

    在 CentOS7 上部署 MySQL 主从 通过 SecureCRT 连接至 MySQL 主服务器: 找到 my.cnf 文件所在的目录: mysql --help | grep my.cnf 一般 ...

  8. 在 CentOS7 上部署 zookeeper 服务

    在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...

  9. GIT-Linux(CentOS7)系统部署git服务器

    GIT-Linux(CentOS7)系统部署git服务器 root账号登录 一. 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget ...

随机推荐

  1. 第六章 Python之迭代器与生成器

    迭代器 迭代:迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果是下一次重复的初始值 l=['a','b','c'] count=0 while count < len(l): pri ...

  2. luogu P3387 【模板】缩点_拓扑排序

    还是很好些的. Code: #include <stack> #include <cstdio> #include <algorithm> #include < ...

  3. Coding for Speed 技术分享

    上周和公司技术同事们作了次<Coding for Speed>技术分享,本来这只是再普通不过的技术探讨和交流(虽然挂了个颇有噱头的名称),但分享的时候逻辑没理好,语速很快,时间也太紧,因此 ...

  4. 《Exception》第八次团队作业:Alpha冲刺(第一天)

    一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...

  5. 2019-03-28 SQL Server Table

    -- table 是实际表 view是虚表.你可以认为view是一个查询的结果 -- 声明@tbBonds table declare @tbBonds table(TrustBondId int n ...

  6. spring mvc 下载

    1.代码: response.setContentType("application/msword;charset=GBK"); try { response.setHeader( ...

  7. 紫书 习题7-14 UVa 307(暴搜+剪枝)

    这道题一开始我想的是在排序之后只在头和尾往中间靠近来找木块, 然后就WA, 事实证明这种方法是错误的. 然后参考了别人的博客.发现别人是直接暴搜, 但是加了很多剪枝, 所以不会超时. 我也想过这个做法 ...

  8. 在对Activity基类的封装中,我做了什么

    在开发实践中,不同Activity有很多代码是反复冗余的.因此非常有必要将这部分抽取出来.封装一个继承自Activity的类,命名为BaseActivity. 翻看之前写过的代码,起初,BaseAct ...

  9. HDU 4333 Contest 4

    一开始就想到了扩展KMP,因为只有扩展KMP才是处理后缀的.但忽然短路以为扩展KMP求的是最长公共后缀,囧....又浪费了很多时间,都是对这个算法练得不多 再看那个扩展KMP算法之后,就很确定要的就是 ...

  10. ZOJ 3688

    做出这题,小有成就感 本来已打算要用那个禁位的排列公式,可是,问题在于,每个阶乘前的系数r的求法是一个难点. 随便翻了翻那本美国教材<组合数学>,在容斥原理一章的习题里竟有一道类似,虽然并 ...