Commit 634b36c7 authored by ibuler's avatar ibuler

[Update] 修改文档

parent 13abd4c7
...@@ -30,3 +30,4 @@ celerybeat.pid ...@@ -30,3 +30,4 @@ celerybeat.pid
django.db django.db
celerybeat-schedule.db celerybeat-schedule.db
data/static data/static
_build/
联系方式 联系方式
+++++++++++++++++++++++++ +++++++++++++++++++++++++
QQ群
~~~~~~~~
群1: 390139816
群2: 399218702
群3: 552054376
Github
~~~~~~~~
https://github.com/jumpserver/jumpserver.git
官网
~~~~~~~~
http://www.jumpserver.org
Demo
~~~~~~~~
http://demo.jumpserver.org:8080
邮件
~~~~~~~~
ibuler#fit2cloud.com (#替换为@)
\ No newline at end of file
贡献者 贡献者
++++++++++++++++++++++++ ++++++++++++++++++++++++
感谢一下朋友为Jumpserver做出的贡献,世界因你们而不同,排名不分先后
- **小彧 <李磊>** Django资深开发者,为用户模块贡献了很多代码
- **sofia <周小侠>** 资深前端工程师, 前端代码贡献者
- **liuz <刘正> 全栈工程师** 编写了Web terminal大部分代码
- **jiaxiangkong <陈尚委>** Jumpserver测试运营
- **halcyon <王墉>** DevOps 资深开发者, 0.3.2 核心开发者之一
- **yumaojun03 <喻茂峻>** DevOps 资深开发者,擅长Python, Go以及PAAS平台开发
- **kelianchun <柯连春>** DevOps 资产开发者,fix了很多bug
\ No newline at end of file
开发指南 开发文档
------------------- ======================================
\ No newline at end of file
.. toctree::
:maxdepth: 1
:caption: 开发文档
api_style_guide
python_style_guide
project_structure
...@@ -28,7 +28,7 @@ Jumpserver 支持容器化部署,windows,LDAP, s3, elasticsearch存储等功 ...@@ -28,7 +28,7 @@ Jumpserver 支持容器化部署,windows,LDAP, s3, elasticsearch存储等功
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 2
:caption: 文档: :caption: 文档:
installation installation
......
...@@ -6,3 +6,4 @@ ...@@ -6,3 +6,4 @@
quickstart quickstart
step_by_step step_by_step
upgrade
快速安装 快速安装
========================== ==========================
Jumpserver 封装了一个All in one Docker,可以快速启动。 Jumpserver 封装了一个All in one Docker,可以快速启动。该镜像集成了所有需要的组件,可以使用外置db和redis
Tips: 不建议在生产中使用
Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_
...@@ -18,3 +21,28 @@ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_ ...@@ -18,3 +21,28 @@ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_
浏览器访问: http://localhost:8080 浏览器访问: http://localhost:8080
ssh访问: ssh -p 2222 localhost ssh访问: ssh -p 2222 localhost
额外环境变量
```````````````
- DB_ENGINE = mysql
- DB_HOST = mysql_host
- DB_PORT = 3306
- DB_USER = xxx
- DB_PASSWORD = xxxx
- DB_NAME = jumpserver
- REDIS_HOST = ''
- REDIS_PORT = ''
- REDIS_PASSWORD = ''
::
docker run -p 8080:80 -p 2222:2222 -e DB_ENGINE=mysql -e DB_HOST=192.168.1.1 -e DB_PORT=3306 -e DB_USER=root -e DB_PASSWORD=xxx -e DB_NAME=jumpserver jumpserver/jumpserver:0.5.0-beta2
仓库地址
```````````````
https://github.com/jumpserver/Dockerfile
一步一步安装 一步一步安装
-------------------------- --------------------------
环境
~~~~
- 系统: CentOS 7
- IP: 192.168.244.144
- 关闭 selinux和防火墙
::
# CentOS 7
$ setenforce 0 # 可以设置配置文件永久关闭
$ systemctl stop iptables.service
$ systemctl stop firewalld.service
# CentOS6
$ setenforce 0
$ service iptables stop
一. 准备Python3和Python虚拟环境
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**1.1 安装依赖包**
::
$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release
**1.2 编译安装**
::
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
$ ./configure && make && make install
**1.3 建立python虚拟环境**
因为CentOS
6/7自带的是Python2,而Yum等工具依赖原来的Python,为了不扰乱原来的环境我们来使用Python虚拟环境
::
$ cd /opt
$ python3 -m venv py3
$ source /opt/py3/bin/activate
# 看到下面的提示符代表成功,以后运行jumpserver都要先运行以上source命令,以下所有命令均在该虚拟环境中运行
(py3) [root@localhost py3]#
二. 安装Jumpserver 0.5.0
~~~~~~~~~~~~~~~~~~~~~~~~
**2.1 下载或clone项目**
项目提交较多git clone时较大,你可以选择去github项目页面直接下载
zip包,我的网速好,我直接clone了
::
$ cd /opt/
$ git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout dev
**2.2 安装依赖rpm包**
::
$ cd /opt/jumpserver/requirements
$ yum -y install $(cat rpm_requirements.txt) # 如果没有任何报错请继续
**2.3 安装python库依赖**
::
$ pip install -r requirements.txt # 不要指定-i参数,因为镜像上可能没有最新的包,如果没有任何报错请继续
**2.4 安装Redis, jumpserver使用redis做cache和celery broker**
::
$ yum -y install redis
$ service redis start
**2.5 安装MySQL**
本教程使用mysql作为数据库,如果不使用mysql可以跳过相关mysql安装和配置
::
# centos7
$ yum -y install mariadb mariadb-devel mariadb-server # centos7下安装的是mariadb
$ service mariadb start
# centos6
$ yum -y install mysql mysql-devel mysql-server
$ service mysqld start
**2.6 创建数据库 jumpserver并授权**
::
$ mysql
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'somepassword';
**2.7 修改jumpserver配置文件**
::
$ cd /opt/jumpserver
$ cp config_example.py config.py
$ vi config.py # 我们计划修改 DevelopmentConfig中的配置,因为默认jumpserver是使用该配置,它继承自Config
**注意: 配置文件是python格式,不要用tab,而要用空格** **注意:
配置文件是python格式,不要用tab,而要用空格** **注意:
配置文件是python格式,不要用tab,而要用空格**
::
class DevelopmentConfig(Config):
DEBUG = True
DB_ENGINE = 'mysql'
DB_HOST = '127.0.0.1'
DB_PORT = 3306
DB_USER = 'jumpserver'
DB_PASSWORD = 'somepassword'
DB_NAME = 'jumpserver'
...
config = DevelopmentConfig() # 确保使用的是刚才设置的配置文件
**2.8 生成数据库表结构和初始化数据**
::
$ cd /opt/jumpserver/utils
$ bash make_migrations.sh
**2.9 运行Jumpserver**
::
$ cd /opt/jumpserver
$ python run_server.py all
运行不报错,请浏览器访问 http://192.168.244.144:8080/
(这里只是jumpserver, 没有web terminal,所以访问web terminal会报错)
账号:admin 密码: admin
三. 安装 SSH Server和Web Socket Server: Coco
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**3.1 下载clone项目**
新开一个终端,连接测试机,别忘了 source /opt/py3/bin/activate
::
$ cd /opt
$ git clone https://github.com/jumpserver/coco.git && cd coco && git checkout dev
**3.2 安装依赖**
::
$ cd /opt/coco/requirements $ yum -y install $(cat rpm_requirements.txt) $ pip install requirements.txt
**3.2 安装依赖**
::
$ cd /opt/coco/requirements
$ yum -y install $(cat rpm_requirements.txt)
$ pip install -r requirements.txt
**3.3 查看配置文件并运行**
::
$ cd /opt/coco
$ cp conf_example.py conf.py
$ python run_server.py
这时需要去
jumpserver管理后台-终端-终端(http://192.168.244.144:8080/terminal/terminal/)接受coco的注册
::
Coco version 0.4.0, more see https://www.jumpserver.org
Starting ssh server at 0.0.0.0:2222
Quit the server with CONTROL-C.
**3.4 测试连接**
::
$ ssh -p2222 admin@192.168.244.144
密码: admin
如果是用在windows下,Xshell terminal登录语法如下
$ssh admin@192.168.244.144 2222
密码: admin
如果能登陆代表部署成功
四. 安装 Web Terminal 前端: Luna
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Luna已改为纯前端,需要nginx来运行访问
下载 release包,直接解压,不需要编译
访问 https://github.com/jumpserver/luna/releases,下载对应release包
4.1 解压luna
::
$ pwd
/opt/
$ tar xvf luna.tar.gz
$ ls /opt/luna
...
五. 安装Windows支持组件
~~~~~~~~~~~~~~~~~~~~~~~
使用docker启动 guacamole
.. code:: shell
docker run \
-p 8080:8080 \
-e JUMPSERVER_SERVER=http://<jumpserver>:8080 \
jumpserver/guacamole
这里所需要注意的是guacamole暴露出来的端口是8080,若与jumpserver部署在同一主机上自定义一下。
修改JUMPSERVER_SERVER的配置,填上jumpserver的内网地址
六. 配置 nginx 整合各组件
~~~~~~~~~~~~~~~~~~~~~~~~~
6.1 安装nginx 根据喜好选择安装方式和版本
6.2 配置文件
::
server {
listen 80;
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 /luna/ {
try_files $uri / /index.html;
alias /opt/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/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /guacamole/ {
proxy_pass http://<guacamole>:8080/;
}
location / {
proxy_pass http://localhost:8080;
}
}
6.3 运行 nginx
6.4 访问 http://192.168.244.144
\ No newline at end of file
...@@ -96,7 +96,6 @@ ...@@ -96,7 +96,6 @@
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
......
...@@ -95,7 +95,6 @@ ...@@ -95,7 +95,6 @@
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
......
...@@ -96,7 +96,6 @@ ...@@ -96,7 +96,6 @@
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
......
...@@ -91,9 +91,16 @@ ...@@ -91,9 +91,16 @@
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">联系方式</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">联系方式</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#qq">QQ群</a></li>
<li class="toctree-l2"><a class="reference internal" href="#github">Github</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">官网</a></li>
<li class="toctree-l2"><a class="reference internal" href="#demo">Demo</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id3">邮件</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
</ul> </ul>
...@@ -160,6 +167,28 @@ ...@@ -160,6 +167,28 @@
<div class="section" id="id1"> <div class="section" id="id1">
<h1>联系方式<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1> <h1>联系方式<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1>
<div class="section" id="qq">
<h2>QQ群<a class="headerlink" href="#qq" title="永久链接至标题"></a></h2>
<p>群1: 390139816
群2: 399218702
群3: 552054376</p>
</div>
<div class="section" id="github">
<h2>Github<a class="headerlink" href="#github" title="永久链接至标题"></a></h2>
<p><a class="reference external" href="https://github.com/jumpserver/jumpserver.git">https://github.com/jumpserver/jumpserver.git</a></p>
</div>
<div class="section" id="id2">
<h2>官网<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<p><a class="reference external" href="http://www.jumpserver.org">http://www.jumpserver.org</a></p>
</div>
<div class="section" id="demo">
<h2>Demo<a class="headerlink" href="#demo" title="永久链接至标题"></a></h2>
<p><a class="reference external" href="http://demo.jumpserver.org:8080">http://demo.jumpserver.org:8080</a></p>
</div>
<div class="section" id="id3">
<h2>邮件<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<p>ibuler#fit2cloud.com (#替换为&#64;)</p>
</div>
</div> </div>
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<link rel="search" title="搜索" href="search.html"/> <link rel="search" title="搜索" href="search.html"/>
<link rel="top" title="jumpserver 0.5.0 文档" href="index.html"/> <link rel="top" title="jumpserver 0.5.0 文档" href="index.html"/>
<link rel="next" title="联系方式" href="contact.html"/> <link rel="next" title="联系方式" href="contact.html"/>
<link rel="prev" title="开发指南" href="development.html"/> <link rel="prev" title="项目骨架" href="project_structure.html"/>
<script src="_static/js/modernizr.min.js"></script> <script src="_static/js/modernizr.min.js"></script>
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">贡献者</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
...@@ -160,6 +160,16 @@ ...@@ -160,6 +160,16 @@
<div class="section" id="id1"> <div class="section" id="id1">
<h1>贡献者<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1> <h1>贡献者<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1>
<p>感谢一下朋友为Jumpserver做出的贡献,世界因你们而不同,排名不分先后</p>
<ul class="simple">
<li><strong>小彧 &lt;李磊&gt;</strong> Django资深开发者,为用户模块贡献了很多代码</li>
<li><strong>sofia &lt;周小侠&gt;</strong> 资深前端工程师, 前端代码贡献者</li>
<li><strong>liuz &lt;刘正&gt; 全栈工程师</strong> 编写了Web terminal大部分代码</li>
<li><strong>jiaxiangkong &lt;陈尚委&gt;</strong> Jumpserver测试运营</li>
<li><strong>halcyon &lt;王墉&gt;</strong> DevOps 资深开发者, 0.3.2 核心开发者之一</li>
<li><strong>yumaojun03 &lt;喻茂峻&gt;</strong> DevOps 资深开发者,擅长Python, Go以及PAAS平台开发</li>
<li><strong>kelianchun &lt;柯连春&gt;</strong> DevOps 资产开发者,fix了很多bug</li>
</ul>
</div> </div>
...@@ -175,7 +185,7 @@ ...@@ -175,7 +185,7 @@
<a href="contact.html" class="btn btn-neutral float-right" title="联系方式" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="contact.html" class="btn btn-neutral float-right" title="联系方式" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="development.html" class="btn btn-neutral" title="开发指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> <a href="project_structure.html" class="btn btn-neutral" title="项目骨架" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div> </div>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>开发指南 &mdash; jumpserver 0.5.0 文档</title> <title>开发文档 &mdash; jumpserver 0.5.0 文档</title>
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
href="genindex.html"/> href="genindex.html"/>
<link rel="search" title="搜索" href="search.html"/> <link rel="search" title="搜索" href="search.html"/>
<link rel="top" title="jumpserver 0.5.0 文档" href="index.html"/> <link rel="top" title="jumpserver 0.5.0 文档" href="index.html"/>
<link rel="next" title="贡献者" href="contributor.html"/> <link rel="next" title="REST API规范约定" href="api_style_guide.html"/>
<link rel="prev" title="用户使用文档" href="user_guide.html"/> <link rel="prev" title="用户使用文档" href="user_guide.html"/>
...@@ -91,7 +91,12 @@ ...@@ -91,7 +91,12 @@
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">开发指南</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">开发文档</a><ul>
<li class="toctree-l2"><a class="reference internal" href="api_style_guide.html">REST API规范约定</a></li>
<li class="toctree-l2"><a class="reference internal" href="python_style_guide.html">Jumpserver 项目规范(Draft)</a></li>
<li class="toctree-l2"><a class="reference internal" href="project_structure.html">项目骨架</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
...@@ -139,7 +144,7 @@ ...@@ -139,7 +144,7 @@
<li><a href="index.html">Docs</a> &raquo;</li> <li><a href="index.html">Docs</a> &raquo;</li>
<li>开发指南</li> <li>开发文档</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
...@@ -159,7 +164,15 @@ ...@@ -159,7 +164,15 @@
<div itemprop="articleBody"> <div itemprop="articleBody">
<div class="section" id="id1"> <div class="section" id="id1">
<h1>开发指南<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1> <h1>开发文档<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">开发文档</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="api_style_guide.html">REST API规范约定</a></li>
<li class="toctree-l1"><a class="reference internal" href="python_style_guide.html">Jumpserver 项目规范(Draft)</a></li>
<li class="toctree-l1"><a class="reference internal" href="project_structure.html">项目骨架</a></li>
</ul>
</div>
</div> </div>
...@@ -172,7 +185,7 @@ ...@@ -172,7 +185,7 @@
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="contributor.html" class="btn btn-neutral float-right" title="贡献者" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="api_style_guide.html" class="btn btn-neutral float-right" title="REST API规范约定" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="user_guide.html" class="btn btn-neutral" title="用户使用文档" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> <a href="user_guide.html" class="btn btn-neutral" title="用户使用文档" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
......
...@@ -90,7 +90,6 @@ ...@@ -90,7 +90,6 @@
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">FAQ</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">FAQ</a></li>
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
...@@ -171,12 +171,33 @@ ...@@ -171,12 +171,33 @@
<div class="toctree-wrapper compound"> <div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">文档:</span></p> <p class="caption"><span class="caption-text">文档:</span></p>
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a><ul>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart.html">快速安装</a></li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step.html">一步一步安装</a></li>
<li class="toctree-l2"><a class="reference internal" href="upgrade.html">升级</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a><ul>
<li class="toctree-l2"><a class="reference internal" href="admin_user.html">用户模块</a></li>
<li class="toctree-l2"><a class="reference internal" href="admin_asset.html">资产管理模块</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a><ul>
<li class="toctree-l2"><a class="reference internal" href="api_style_guide.html">REST API规范约定</a></li>
<li class="toctree-l2"><a class="reference internal" href="python_style_guide.html">Jumpserver 项目规范(Draft)</a></li>
<li class="toctree-l2"><a class="reference internal" href="project_structure.html">项目骨架</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a><ul>
<li class="toctree-l2"><a class="reference internal" href="contact.html#qq">QQ群</a></li>
<li class="toctree-l2"><a class="reference internal" href="contact.html#github">Github</a></li>
<li class="toctree-l2"><a class="reference internal" href="contact.html#id2">官网</a></li>
<li class="toctree-l2"><a class="reference internal" href="contact.html#demo">Demo</a></li>
<li class="toctree-l2"><a class="reference internal" href="contact.html#id3">邮件</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
</ul> </ul>
</div> </div>
......
...@@ -91,11 +91,12 @@ ...@@ -91,11 +91,12 @@
<li class="toctree-l1 current"><a class="current reference internal" href="#">安装文档</a><ul> <li class="toctree-l1 current"><a class="current reference internal" href="#">安装文档</a><ul>
<li class="toctree-l2"><a class="reference internal" href="quickstart.html">快速安装</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart.html">快速安装</a></li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step.html">一步一步安装</a></li> <li class="toctree-l2"><a class="reference internal" href="step_by_step.html">一步一步安装</a></li>
<li class="toctree-l2"><a class="reference internal" href="upgrade.html">升级</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
...@@ -168,6 +169,7 @@ ...@@ -168,6 +169,7 @@
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="quickstart.html">快速安装</a></li> <li class="toctree-l1"><a class="reference internal" href="quickstart.html">快速安装</a></li>
<li class="toctree-l1"><a class="reference internal" href="step_by_step.html">一步一步安装</a></li> <li class="toctree-l1"><a class="reference internal" href="step_by_step.html">一步一步安装</a></li>
<li class="toctree-l1"><a class="reference internal" href="upgrade.html">升级</a></li>
</ul> </ul>
</div> </div>
</div> </div>
......
...@@ -93,6 +93,8 @@ ...@@ -93,6 +93,8 @@
<li class="toctree-l2 current"><a class="current reference internal" href="#">快速安装</a><ul> <li class="toctree-l2 current"><a class="current reference internal" href="#">快速安装</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id2">快速启动</a></li> <li class="toctree-l3"><a class="reference internal" href="#id2">快速启动</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">访问</a></li> <li class="toctree-l3"><a class="reference internal" href="#id3">访问</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">额外环境变量</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">仓库地址</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step.html">一步一步安装</a></li> <li class="toctree-l2"><a class="reference internal" href="step_by_step.html">一步一步安装</a></li>
...@@ -100,7 +102,7 @@ ...@@ -100,7 +102,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
...@@ -171,7 +173,8 @@ ...@@ -171,7 +173,8 @@
<div class="section" id="id1"> <div class="section" id="id1">
<h1>快速安装<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1> <h1>快速安装<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1>
<p>Jumpserver 封装了一个All in one Docker,可以快速启动。</p> <p>Jumpserver 封装了一个All in one Docker,可以快速启动。该镜像集成了所有需要的组件,可以使用外置db和redis</p>
<p>Tips: 不建议在生产中使用</p>
<p>Docker 安装见: <a class="reference external" href="https://docs.docker.com/install/">Docker官方安装文档</a></p> <p>Docker 安装见: <a class="reference external" href="https://docs.docker.com/install/">Docker官方安装文档</a></p>
<div class="section" id="id2"> <div class="section" id="id2">
<h2>快速启动<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2> <h2>快速启动<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
...@@ -185,6 +188,29 @@ ...@@ -185,6 +188,29 @@
<p>浏览器访问: <a class="reference external" href="http://localhost:8080">http://localhost:8080</a></p> <p>浏览器访问: <a class="reference external" href="http://localhost:8080">http://localhost:8080</a></p>
<p>ssh访问: ssh -p 2222 localhost</p> <p>ssh访问: ssh -p 2222 localhost</p>
</div> </div>
<div class="section" id="id4">
<h2>额外环境变量<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<ul class="simple">
<li>DB_ENGINE = mysql</li>
<li>DB_HOST = mysql_host</li>
<li>DB_PORT = 3306</li>
<li>DB_USER = xxx</li>
<li>DB_PASSWORD = xxxx</li>
<li>DB_NAME = jumpserver</li>
<li>REDIS_HOST = ‘’</li>
<li>REDIS_PORT = ‘’</li>
<li>REDIS_PASSWORD = ‘’</li>
</ul>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">docker</span> <span class="n">run</span> <span class="o">-</span><span class="n">p</span> <span class="mi">8080</span><span class="p">:</span><span class="mi">80</span> <span class="o">-</span><span class="n">p</span> <span class="mi">2222</span><span class="p">:</span><span class="mi">2222</span> <span class="o">-</span><span class="n">e</span> <span class="n">DB_ENGINE</span><span class="o">=</span><span class="n">mysql</span> <span class="o">-</span><span class="n">e</span> <span class="n">DB_HOST</span><span class="o">=</span><span class="mf">192.168</span><span class="o">.</span><span class="mf">1.1</span> <span class="o">-</span><span class="n">e</span> <span class="n">DB_PORT</span><span class="o">=</span><span class="mi">3306</span> <span class="o">-</span><span class="n">e</span> <span class="n">DB_USER</span><span class="o">=</span><span class="n">root</span> <span class="o">-</span><span class="n">e</span> <span class="n">DB_PASSWORD</span><span class="o">=</span><span class="n">xxx</span> <span class="o">-</span><span class="n">e</span> <span class="n">DB_NAME</span><span class="o">=</span><span class="n">jumpserver</span> <span class="n">jumpserver</span><span class="o">/</span><span class="n">jumpserver</span><span class="p">:</span><span class="mf">0.5</span><span class="o">.</span><span class="mi">0</span><span class="o">-</span><span class="n">beta2</span>
</pre></div>
</div>
</div></blockquote>
</div>
<div class="section" id="id5">
<h2>仓库地址<a class="headerlink" href="#id5" title="永久链接至标题"></a></h2>
<p><a class="reference external" href="https://github.com/jumpserver/Dockerfile">https://github.com/jumpserver/Dockerfile</a></p>
</div>
</div> </div>
......
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
......
Search.setIndex({docnames:["admin_asset","admin_guide","admin_user","contact","contributor","development","faq","index","installation","quickstart","step_by_step","user_guide"],envversion:53,filenames:["admin_asset.rst","admin_guide.rst","admin_user.rst","contact.rst","contributor.rst","development.rst","faq.rst","index.rst","installation.rst","quickstart.rst","step_by_step.rst","user_guide.rst"],objects:{},objnames:{},objtypes:{},terms:{"\u4e00\u4e2a\u4e2d\u5fc3":7,"\u4e00\u6b65\u4e00\u6b65\u5b89\u88c5":8,"\u4e0d\u540cregion\u4e0d\u540c\u767b\u5f55\u70b9":7,"\u4ece\u8bbe\u8ba1\u65f6\u8003\u8651\u5206\u5e03\u5f0f":7,"\u4f7f\u7528python":7,"\u4f7f\u7528root\u547d\u4ee4\u884c\u8f93\u5165":9,"\u5185\u5bb9":[],"\u53ef\u4ee5\u5feb\u901f\u542f\u52a8":9,"\u5821\u5792\u673a":7,"\u5b89\u88c5\u6587\u6863":7,"\u5b89\u88c5\u89c1":9,"\u5ba1\u8ba1audit":7,"\u5c01\u88c5\u4e86\u4e00\u4e2aall":9,"\u5e76\u63d0\u4f9b\u4e86\u5f3a\u5927api\u65b9\u4fbf\u5bf9\u63a5\u5176\u5b83\u7cfb\u7edf":7,"\u5e76\u6709\u9886\u5148\u7684web":7,"\u5f00\u53d1\u6307\u5357":7,"\u5feb\u901f\u542f\u52a8":[],"\u5feb\u901f\u5b89\u88c5":8,"\u6388\u6743author":7,"\u641c\u7d22\u9875\u9762":7,"\u652f\u6301\u5bb9\u5668\u5316\u90e8\u7f72":7,"\u652f\u6301\u81ea\u52a8\u5316\u8fd0\u7ef4\u4efb\u52a1":7,"\u662f\u4e00\u6b3e\u5b8c\u5168\u5f00\u6e90\u7684\u8df3\u677f\u673a":7,"\u662f\u7b26\u54084a":7,"\u6a21\u5757\u7d22\u5f15":7,"\u6b22\u8fce\u6765\u5230":7,"\u6ca1\u6709\u6027\u80fd\u74f6\u9888":7,"\u6d4f\u89c8\u5668\u8bbf\u95ee":9,"\u6df1\u5ea6\u96c6\u6210\u4e86ansibl":7,"\u6ee1\u8db3\u6df7\u5408\u4e91\u67b6\u6784":7,"\u7528\u6237\u4f7f\u7528\u6587\u6863":7,"\u7528\u6237\u6a21\u5757":1,"\u754c\u9762\u6f02\u4eae":7,"\u7684\u4e13\u4e1a\u8fd0\u7ef4\u5ba1\u8ba1\u7cfb\u7edf":7,"\u7b80\u5355\u6613\u7528":7,"\u7ba1\u7406\u5458\u6587\u6863":[],"\u7ba1\u7406\u6587\u6863":7,"\u7cfb\u7edf":7,"\u7d22\u5f15":[],"\u8054\u7cfb\u65b9\u5f0f":7,"\u8ba4\u8bc1authent":7,"\u8d21\u732e\u8005":7,"\u8d26\u53f7account":7,"\u8d44\u4ea7\u7ba1\u7406\u6a21\u5757":1,"\u9075\u5faagpl":7,"django\u5f00\u53d1":7,"docker\u5b98\u65b9\u5b89\u88c5\u6587\u6863":9,"docker\u5b98\u65b9\u5b89\u88c5\u6587\u6863http":[],"elasticsearch\u5b58\u50a8\u7b49\u529f\u80fd":7,"ssh\u8bbf\u95ee":9,"terminal\u89e3\u51b3\u65b9\u6848":7,"v2\u534f\u8bae":7,beta2:9,com:[],content:[],doc:[],docker:9,faq:7,http:9,instal:[],jumpserv:9,ldap:7,localhost:9,one:9,run:9,ssh:9,window:7},titles:["\u8d44\u4ea7\u7ba1\u7406\u6a21\u5757","\u7ba1\u7406\u6587\u6863","\u7528\u6237\u6a21\u5757","\u8054\u7cfb\u65b9\u5f0f","\u8d21\u732e\u8005","\u5f00\u53d1\u6307\u5357","FAQ","Jumpserver \u6587\u6863","\u5b89\u88c5\u6587\u6863","\u5feb\u901f\u5b89\u88c5","\u4e00\u6b65\u4e00\u6b65\u5b89\u88c5","\u7528\u6237\u4f7f\u7528\u6587\u6863"],titleterms:{"\u4e00\u6b65\u4e00\u6b65\u5b89\u88c5":10,"\u5b89\u88c5\u6587\u6863":8,"\u5f00\u53d1\u6307\u5357":5,"\u5feb\u901f\u542f\u52a8":9,"\u5feb\u901f\u5b89\u88c5":9,"\u6587\u6863":7,"\u6709\u5173jumpserv":7,"\u7528\u6237\u4f7f\u7528\u6587\u6863":11,"\u7528\u6237\u6587\u6863":[],"\u7528\u6237\u6a21\u5757":2,"\u7ba1\u7406\u6587\u6863":1,"\u7d22\u5f15":7,"\u8054\u7cfb\u65b9\u5f0f":3,"\u8bbf\u95ee":9,"\u8d21\u732e\u8005":4,"\u8d44\u4ea7\u7ba1\u7406\u6a21\u5757":0,faq:6,indic:[],jumpserv:7,tabl:[]}}) Search.setIndex({docnames:["admin_asset","admin_guide","admin_user","api_style_guide","contact","contributor","development","faq","index","installation","project_structure","python_style_guide","quickstart","step_by_step","upgrade","user_guide"],envversion:53,filenames:["admin_asset.rst","admin_guide.rst","admin_user.rst","api_style_guide.rst","contact.rst","contributor.rst","development.rst","faq.rst","index.rst","installation.rst","project_structure.rst","python_style_guide.rst","quickstart.rst","step_by_step.rst","upgrade.rst","user_guide.rst"],objects:{},objnames:{},objtypes:{},terms:{"0\u6846\u67b6":3,"2\u7a7a\u683c\u53ef\u4ee5\u663e\u8457\u964d\u4f4e\u89c6\u89c9\u4e0a\u7684\u8d1f\u62c5":11,"7\u81ea\u5e26\u7684\u662fpython2":13,"8\u7f16\u7801\u58f0\u660e":11,"\u4e00\u4e2a":11,"\u4e00\u4e2a\u4e2d\u5fc3":8,"\u4e00\u6b65\u4e00\u6b65\u5b89\u88c5":[8,9],"\u4e00\u822c\u6027\u7684\u589e\u5220\u67e5\u6539":3,"\u4e00\u822c\u6765\u8bf4":3,"\u4e00\u822c\u7528\u6765\u4f20\u9012\u8be5api\u64cd\u4f5c\u7684\u6838\u5fc3\u5b9e\u4f53\u5bf9\u8c61\u7684\u552f\u4e00id":3,"\u4e00\u9879\u6216\u591a\u9879":3,"\u4e0a\u9762\u4ee3\u7801\u8868\u793a":3,"\u4e0b\u4e00\u884c\u5e94\u8be5\u4e0e\u4e0a\u4e00\u884c\u7684\u6700\u540e":11,"\u4e0b\u8f7d":13,"\u4e0b\u8f7d\u5bf9\u5e94release\u5305":13,"\u4e0b\u8f7d\u6216clone\u9879\u76ee":13,"\u4e0b\u8f7dclone\u9879\u76ee":13,"\u4e0d\u4f7f\u7528\u62fc\u97f3":11,"\u4e0d\u4f7f\u7528\u65e0\u610f\u4e49\u7b80\u5355\u5b57\u6bcd\u547d\u540d":11,"\u4e0d\u540cregion\u4e0d\u540c\u767b\u5f55\u70b9":8,"\u4e0d\u5efa\u8bae\u5728\u751f\u4ea7\u4e2d\u4f7f\u7528":12,"\u4e0d\u8981\u4f7f\u7528\u9ed8\u8ba4":11,"\u4e0d\u8981\u5728\u4ee3\u7801\u4e2d\u4f7f\u7528\u592a\u591a\u7684\u7a7a\u884c\u6765\u533a\u5206\u4e0d\u540c\u7684\u903b\u8f91\u6a21\u5757":11,"\u4e0d\u8981\u5728\u53d8\u91cf\u540d\u540e\u6dfb\u52a0\u4e0b\u5212\u7ebf\u8fdb\u884c\u533a\u5206":11,"\u4e0d\u8981\u6307\u5b9a":[13,14],"\u4e0d\u8981\u7528tab":13,"\u4e0d\u8981\u786c\u7f16\u7801":11,"\u4e0d\u8981\u8fd9\u6837\u5199":11,"\u4e0d\u9700\u8981\u7f16\u8bd1":13,"\u4e0e401\u9519\u8bef\u76f8\u5bf9":3,"\u4e0e\u5355\u4f8b":11,"\u4e14\u4e0d\u4f1a\u518d\u5f97\u5230\u7684":3,"\u4e16\u754c\u56e0\u4f60\u4eec\u800c\u4e0d\u540c":5,"\u4e3a\u4e86\u4e0d\u6270\u4e71\u539f\u6765\u7684\u73af\u5883\u6211\u4eec\u6765\u4f7f\u7528python\u865a\u62df\u73af\u5883":13,"\u4e3a\u7528\u6237\u6a21\u5757\u8d21\u732e\u4e86\u5f88\u591a\u4ee3\u7801":5,"\u4e3a\u957f\u8bed\u53e5\u6362\u884c":11,"\u4e3e\u4f8b\u6765\u8bf4":3,"\u4e4b\u540e\u9a6c\u4e0a\u6362\u884c":11,"\u4e4b\u6240\u4ee5\u4e0epython\u4e0d\u540c":11,"\u4e5f\u662f\u5404app\u6240\u5728\u76ee\u5f55":10,"\u4e5f\u77e5\u9053\u4e0b\u4e00\u6b65\u5e94\u8be5\u505a\u4ec0\u4e48":3,"\u4e8c\u8005\u5747\u4ee5restructuredtext\u683c\u5f0f\u7f16\u5199":11,"\u4ece\u670d\u52a1\u5668\u5220\u9664\u8d44\u6e90":3,"\u4ece\u670d\u52a1\u5668\u53d6\u51fa\u8d44\u6e90":3,"\u4ece\u8bbe\u8ba1\u65f6\u8003\u8651\u5206\u5e03\u5f0f":8,"\u4ee3\u7801\u4f18\u96c5\u7b80\u6d01":11,"\u4ee3\u8868\u5b57\u7b26\u4e32\u7ed3\u675f\u7684\u4e09\u4e2a\u5f15\u53f7\u4e0e\u4ee3\u8868\u5b57\u7b26\u4e32\u5f00\u59cb\u7684\u4e09\u4e2a\u5f15\u53f7\u5728\u540c\u4e00\u884c":11,"\u4ee3\u8868\u5b57\u7b26\u4e32\u7ed3\u675f\u7684\u4e09\u4e2a\u5f15\u53f7\u5219\u81ea\u5df1\u72ec\u7acb\u6210\u4e00\u884c":11,"\u4ee4\u724c":3,"\u4ee5\u4e0b\u6240\u6709\u547d\u4ee4\u5747\u5728\u8be5\u865a\u62df\u73af\u5883\u4e2d\u8fd0\u884c":13,"\u4ee5\u53ca\u6392\u5e8f\u987a\u5e8f":3,"\u4ee5\u53ca\u6807\u51c6\u7684\u6587\u6863\u5b57\u7b26\u4e32":11,"\u4ee5\u53ca\u6bcf\u9875\u7684\u8bb0\u5f55\u6570":3,"\u4ee5\u540e\u8fd0\u884cjumpserver\u90fd\u8981\u5148\u8fd0\u884c\u4ee5\u4e0asource\u547d\u4ee4":13,"\u4efb\u4f55python\u4ee3\u7801\u90fd\u90fd\u5fc5\u987b\u9075\u5b88\u6b64\u89c4\u5b9a":11,"\u4efb\u610f\u7c7b\u578b\u4e4b\u95f4\u7684\u6bd4\u8f83":11,"\u4f1a\u5f97\u5230\u8fd9\u6837\u4e00\u4e2a\u6587\u6863":3,"\u4f46\u662f\u53ea\u6709xml\u683c\u5f0f":3,"\u4f46\u662f\u6709\u4e9b\u7ec6\u8282\u90e8\u5206\u4f1a\u5c3d\u91cf\u653e\u5f00":11,"\u4f46\u662f\u8bbf\u95ee\u662f\u88ab\u7981\u6b62\u7684":3,"\u4f46\u662fdjango\u7684\u547d\u540d":11,"\u4f5c\u4e3a\u7c7b\u540d\u79f0":11,"\u4f60\u53ef\u4ee5\u9009\u62e9\u53bbgithub\u9879\u76ee\u9875\u9762\u76f4\u63a5\u4e0b\u8f7d":13,"\u4f7f\u5f97\u7528\u6237\u4e0d\u67e5\u6587\u6863":3,"\u4f7f\u7528":11,"\u4f7f\u7528django":11,"\u4f7f\u7528docker\u542f\u52a8":13,"\u4f7f\u7528foo":11,"\u4f7f\u7528is\u548ci":11,"\u4f7f\u7528python":8,"\u4f7f\u7528root\u547d\u4ee4\u884c\u8f93\u5165":12,"\u4f8b\u5982":[3,11],"\u4fee\u6539jumpserver\u914d\u7f6e\u6587\u4ef6":13,"\u4fee\u6539jumpserver_server\u7684\u914d\u7f6e":13,"\u5141\u8bb8\u4e0e\u5185\u5efa\u53d8\u91cf\u91cd\u540d":11,"\u5168\u6808\u5de5\u7a0b\u5e08":5,"\u5173\u95ed":13,"\u5185\u5bb9":[],"\u51fa\u9519\u4fe1\u606f\u4f5c\u4e3a\u952e\u503c\u5373\u53ef":3,"\u5218\u6b63":5,"\u521b\u5efa\u6570\u636e\u5e93":13,"\u521d\u59cb\u5316\u6570\u636e\u76ee\u5f55":10,"\u521d\u59cb\u5316\u9879\u76ee\u6570\u636e\u5e93":10,"\u522b\u5fd8\u4e86":13,"\u524d\u7aef\u4ee3\u7801\u8d21\u732e\u8005":5,"\u533f\u540d\u51fd\u6570\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u53ef\u4ee5\u7528x\u66ff\u4ee3":11,"\u5347\u7ea7":[8,9],"\u5355\u76ee\u8fd0\u7b97\u7b26\u4e0e\u8fd0\u7b97\u5bf9\u8c61\u4e4b\u95f4\u4e0d\u7a7a\u683c":11,"\u5373\u4f7f\u5355\u76ee\u8fd0\u7b97\u7b26\u4f4d\u4e8e\u62ec\u53f7\u5185\u90e8\u4e5f\u4e00\u6837":11,"\u5373\u8fd4\u56de\u7ed3\u679c\u4e2d\u63d0\u4f9b\u94fe\u63a5":3,"\u53c2\u8003":3,"\u53c2\u8003\u56fd\u5185\u7ffb\u8bd1":11,"\u53cc\u4e0b\u5212\u7ebf\u524d\u7f00\u53ea\u6709\u5b9a\u4e49\u6df7\u5165\u7c7b":11,"\u53cc\u76ee\u8fd0\u7b97\u7b26\u4e0e\u8fd0\u7b97\u5bf9\u8c61\u4e4b\u95f4\u8981\u7a7a\u683c":11,"\u53d1\u751f\u4e00\u4e2a\u9a8c\u8bc1\u9519\u8bef":3,"\u53d7\u4fdd\u62a4\u7684\u5143\u7d20\u4ee5\u4e00\u4e2a\u4e0b\u5212\u7ebf\u4e3a\u524d\u7f00":11,"\u53d8\u91cf\u540d":11,"\u53e5\u70b9\u6216":11,"\u53ea\u80fd\u6709\u540d\u8bcd":3,"\u53ef\u4ee5\u4f7f\u7528\u5916\u7f6edb\u548credi":12,"\u53ef\u4ee5\u4f7f\u7528\u6362\u884c\u7b26":11,"\u53ef\u4ee5\u5feb\u901f\u542f\u52a8":12,"\u53ef\u4ee5\u8bbe\u7f6e\u914d\u7f6e\u6587\u4ef6\u6c38\u4e45\u5173\u95ed":13,"\u540c\u6837\u4e0d\u4f7f\u7528tab":11,"\u540c\u7406static\u4e5f\u662f":11,"\u5426\u5219\u8bf7\u4e2d\u6587\u4f18\u96c5\u6ce8\u91ca":11,"\u5468\u5c0f\u4fa0":5,"\u547d\u540d\u7f29\u5199\u8981\u8c28\u614e":11,"\u547d\u540d\u8981\u6709\u5bd3\u610f":11,"\u548c":11,"\u548c\u8be6\u7ec6\u4ecb\u7ecd":11,"\u55bb\u8302\u5cfb":5,"\u56e0\u4e3a\u955c\u50cf\u4e0a\u53ef\u80fd\u6ca1\u6709\u6700\u65b0\u7684\u5305":13,"\u56e0\u4e3a\u9ed8\u8ba4jumpserver\u662f\u4f7f\u7528\u8be5\u914d\u7f6e":13,"\u56e0\u4e3acento":13,"\u5728\u670d\u52a1\u5668\u65b0\u5efa\u4e00\u4e2a\u8d44\u6e90":3,"\u5728\u670d\u52a1\u5668\u66f4\u65b0\u8d44\u6e90":3,"\u5728\u7b2c\u4e00\u4e2a":11,"\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b":11,"\u5728restful\u67b6\u6784\u4e2d":3,"\u5821\u5792\u673a":8,"\u586b\u4e0ajumpserver\u7684\u5185\u7f51\u5730\u5740":13,"\u591a\u4e00\u5c42\u76ee\u5f55":10,"\u5927\u5199_\u4ee5\u53ca_\u4e0b\u5212\u7ebf":11,"\u5982\u679c\u4e0d\u4f7f\u7528mysql\u53ef\u4ee5\u8df3\u8fc7\u76f8\u5173mysql\u5b89\u88c5\u548c\u914d\u7f6e":13,"\u5982\u679c\u4e3a\u591a\u884c":11,"\u5982\u679c\u4f60\u4f7f\u7528\u62ec\u53f7":11,"\u5982\u679c\u4f7f\u7528\u5173\u952e\u8bcd":11,"\u5982\u679c\u4f7f\u7528\u6ce8\u91ca\u6765\u7f16\u5199\u7c7b\u5c5e\u6027\u7684\u6587\u6863":11,"\u5982\u679c\u51fd\u6570\u9700\u8981\u8bbf\u95ee\u91cd\u540d\u7684\u5185\u5efa\u53d8\u91cf":11,"\u5982\u679c\u53ea\u6709\u4e00\u884c":11,"\u5982\u679c\u5fc5\u8981\u7684\u8bdd":11,"\u5982\u679c\u662f\u7528\u5728windows\u4e0b":13,"\u5982\u679c\u6709\u66f4\u591a\u7684\u53c2\u6570\u9700\u8981\u63d0\u4f9b":3,"\u5982\u679c\u6a21\u5757\u4e2d\u4f7f\u7528\u4e86\u975eascii\u7f16\u7801\u7684\u5b57\u7b26":11,"\u5982\u679c\u6ca1\u6709\u4efb\u4f55\u62a5\u9519\u8bf7\u7ee7\u7eed":13,"\u5982\u679c\u72b6\u6001\u7801\u662f4xx":3,"\u5982\u679c\u80fd\u767b\u9646\u4ee3\u8868\u90e8\u7f72\u6210\u529f":13,"\u5982\u679c\u9700\u8981":10,"\u5b83\u7ee7\u627f\u81eaconfig":13,"\u5b89\u88c5\u4f9d\u8d56":13,"\u5b89\u88c5\u4f9d\u8d56\u5305":13,"\u5b89\u88c5\u4f9d\u8d56rpm\u5305":13,"\u5b89\u88c5\u6587\u6863":8,"\u5b89\u88c5\u89c1":12,"\u5b89\u88c5\u8bf4\u660e":10,"\u5b89\u88c5mysql":13,"\u5b89\u88c5nginx":13,"\u5b89\u88c5python\u5e93\u4f9d\u8d56":13,"\u5b89\u88c5redi":13,"\u5b8c\u5168\u4f7f\u7528http":3,"\u5b98\u7f51":8,"\u5b9e\u4f8b\u65b9\u6cd5":11,"\u5ba1\u8ba1audit":8,"\u5ba2\u6237\u7aef\u63d0\u4f9b\u6539\u53d8\u540e\u7684\u5b8c\u6574\u8d44\u6e90":3,"\u5ba2\u6237\u7aef\u63d0\u4f9b\u6539\u53d8\u7684\u5c5e\u6027":3,"\u5bc6\u7801":13,"\u5bc6\u7801\u9519\u8bef":3,"\u5bf9\u4e8e\u5143\u7d20\u4f17\u591a\u7684\u5217\u8868\u6216\u5143\u7ec4":11,"\u5bf9\u4e8e\u8d44\u6e90\u7684\u5177\u4f53\u64cd\u4f5c\u7c7b\u578b":3,"\u5bf9\u5916\u66b4\u9732\u7684\u63a5\u53e3":10,"\u5bf9\u9f50":11,"\u5c01\u88c5\u4e86\u4e00\u4e2aall":12,"\u5c06\u7248\u672c\u53f7\u653e\u5230app\u540e\u9762":3,"\u5c06api\u7684\u7248\u672c\u53f7\u653e\u5165url\u4e2d":3,"\u5c06views\u548capi\u53ef\u590d\u7528\u7684\u4ee3\u7801\u653e\u5728\u8fd9\u91cc":10,"\u5c0f\u5199_\u4ee5\u53ca_\u4e0b\u5212\u7ebf":11,"\u5c0f\u5f67":5,"\u5c31\u5e94\u8be5\u5411\u7528\u6237\u8fd4\u56de\u51fa\u9519\u4fe1\u606f":3,"\u5c3d\u53ef\u80fd\u5229\u7528django\u9020\u597d\u7684\u8f6e\u5b50":11,"\u5c3d\u91cf\u4e00\u884c":11,"\u5c3d\u91cf\u4f7f\u7528class":11,"\u5c3d\u91cf\u662f\u5927\u5bb6\u8ba4\u53ef\u7684\u7f29\u5199":11,"\u5e03\u5c40\u4e5f\u4e0d\u4e00\u6837":11,"\u5e38\u7528\u7684http\u52a8\u8bcd\u6709\u4e0b\u9762\u4e94\u4e2a":3,"\u5e38\u89c1\u53c2\u6570\u7ea6\u5b9a":3,"\u5e38\u89c1\u7684\u6709\u4ee5\u4e0b\u4e00\u4e9b":3,"\u5e38\u91cf":11,"\u5e42\u7b49":3,"\u5e76\u63d0\u4f9b\u4e86\u5f3a\u5927api\u65b9\u4fbf\u5bf9\u63a5\u5176\u5b83\u7cfb\u7edf":8,"\u5e76\u6709\u9886\u5148\u7684web":8,"\u5e76\u7ed9\u51fa\u8be5collection\u7684\u7f51\u5740":3,"\u5e94\u5728\u540d\u79f0\u540e\u6dfb\u52a0\u540e\u7f6e\u4e0b\u5212\u7ebf":11,"\u5e94\u8be5\u5c3d\u91cf\u4f7f\u7528json":3,"\u5efa\u7acbpython\u865a\u62df\u73af\u5883":13,"\u5efa\u8bae\u8fdb\u884c\u58f0\u660e":11,"\u5f00\u53d1\u6307\u5357":[],"\u5f00\u53d1\u6587\u6863":8,"\u5f02\u6b65\u4efb\u52a1":3,"\u5f53\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61\u65f6":3,"\u5f53\u524d\u6700\u65b0":11,"\u5f53\u7528\u6237\u5411api":3,"\u5faa\u73af\u4e2d\u8ba1\u6570\u4f8b\u5916":11,"\u5feb\u901f\u542f\u52a8":[],"\u5feb\u901f\u5b89\u88c5":[8,9],"\u603b\u662f\u4f7f\u7528https\u534f\u8bae":3,"\u611f\u8c22\u4e00\u4e0b\u670b\u53cb\u4e3ajumpserver\u505a\u51fa\u7684\u8d21\u732e":5,"\u6211\u4eec\u8ba1\u5212\u4fee\u6539":13,"\u6211\u4eec\u91c7\u7528pocoo\u7684":11,"\u6211\u7684\u7f51\u901f\u597d":13,"\u6211\u76f4\u63a5clone\u4e86":13,"\u6216":11,"\u6216\u8005\u662f\u7f29\u8fdb4\u4e2a\u7a7a\u683c\u7b26":11,"\u6216\u82b1\u62ec\u53f7":11,"\u6240\u4ee5\u6211\u4eec\u9650\u5236\u6700\u5927120\u5b57\u7b26":11,"\u6240\u4ee5\u653e\u5728\u4e3b\u57df\u540d\u4e0b":3,"\u6240\u4ee5\u7f51\u5740\u4e2d\u4e0d\u80fd\u6709\u52a8\u8bcd":3,"\u6240\u4ee5\u8bbf\u95eeweb":13,"\u6240\u4ee5api\u4e2d\u7684\u540d\u8bcd\u4e5f\u5e94\u8be5\u4f7f\u7528\u590d\u6570":3,"\u6240\u6709\u6587\u6863\u5b57\u7b26\u4e32\u5747\u4ee5restructuredtext\u683c\u5f0f\u7f16\u5199":11,"\u6240\u6709doc\u6587\u4ef6\u653e\u5230\u8be5\u76ee\u5f55":10,"\u62ec\u53f7\u91cc\u662f\u5bf9\u5e94\u7684sql\u547d\u4ee4":3,"\u6307\u5b9a\u7b2c\u51e0\u9875":3,"\u6307\u5b9a\u7b5b\u9009\u6761\u4ef6":3,"\u6307\u5b9a\u8fd4\u56de\u7ed3\u679c\u6309\u7167\u54ea\u4e2a\u5c5e\u6027\u6392\u5e8f":3,"\u6307\u5b9a\u8fd4\u56de\u8bb0\u5f55\u7684\u5f00\u59cb\u4f4d\u7f6e":3,"\u6307\u5b9a\u8fd4\u56de\u8bb0\u5f55\u7684\u6570\u91cf":3,"\u6309pep8\u89c4\u8303":11,"\u6362\u884c":11,"\u6388\u6743author":8,"\u6392\u540d\u4e0d\u5206\u5148\u540e":5,"\u63a5\u53d7coco\u7684\u6ce8\u518c":13,"\u641c\u7d22\u9875\u9762":8,"\u6458\u8981\u4e0e\u8be6\u7ec6\u4ecb\u7ecd\u4e4b\u95f4\u7a7a\u4e00\u884c":11,"\u64c5\u957fpython":5,"\u652f\u6301\u5bb9\u5668\u5316\u90e8\u7f72":8,"\u652f\u6301\u81ea\u52a8\u5316\u8fd0\u7ef4\u4efb\u52a1":8,"\u653e\u5230\u8be5\u6587\u4ef6\u4e2d":10,"\u6570\u636e\u5e93\u4e2d\u7684\u8868\u90fd\u662f\u540c\u79cd\u8bb0\u5f55\u7684":3,"\u6570\u636e\u5e93\u8868\u540d\u624b\u52a8\u6307\u5b9a":11,"\u6570\u636e\u6a21\u578b\u76ee\u5f55":10,"\u6570\u7ec4":3,"\u6587\u6863\u4e2d\u6709\u4e00\u4e2alink\u5c5e\u6027":3,"\u6587\u6863\u5b57\u7b26\u4e32\u4e2d\u7684\u6587\u672c\u7d27\u63a5\u7740\u4ee3\u8868\u5b57\u7b26\u4e32\u5f00\u59cb\u7684\u4e09\u4e2a\u5f15\u53f7\u7f16\u5199":11,"\u6587\u6863\u5b57\u7b26\u4e32\u5e94\u5206\u6210\u7b80\u77ed\u6458\u8981":11,"\u6587\u6863\u5b57\u7b26\u4e32\u7684\u884c\u6570\u4e0d\u540c":11,"\u65b0\u5f00\u4e00\u4e2a\u7ec8\u7aef":13,"\u65b0\u7248\u672cdjango":10,"\u65b9\u4fbf\u522b\u7684app\u5f15\u7528":10,"\u65b9\u4fbfsphinx\u5904\u7406":11,"\u65b9\u62ec\u53f7\u4e2d\u662f\u8be5\u72b6\u6001\u7801\u5bf9\u5e94\u7684http\u52a8\u8bcd":3,"\u65b9\u6cd5\u4e0e\u51fd\u6570\u540d":11,"\u65e5\u5fd7\u76ee\u5f55":10,"\u65f6":11,"\u65f6\u624d\u4f7f\u7528":11,"\u662f\u4e00\u6b3e\u5b8c\u5168\u5f00\u6e90\u7684\u8df3\u677f\u673a":8,"\u662f\u56e0\u4e3ajs\u4e2d\u6709\u5927\u91cf\u56de\u8c03\u5f0f\u7684\u5199\u6cd5":11,"\u662f\u7b26\u54084a":8,"\u66f4\u5c11\u4ee3\u7801":11,"\u66ff\u6362\u4e3a":4,"\u6709\u80fd\u529b\u5c3d\u53ef\u80fd\u7528\u82f1\u6587":11,"\u670d\u52a1\u5668\u53d1\u751f\u9519\u8bef":3,"\u670d\u52a1\u5668\u5411\u7528\u6237\u8fd4\u56de\u7684\u72b6\u6001\u7801\u548c\u63d0\u793a\u4fe1\u606f":3,"\u670d\u52a1\u5668\u5411\u7528\u6237\u8fd4\u56de\u7684\u7ed3\u679c\u5e94\u8be5\u7b26\u5408\u4ee5\u4e0b\u89c4\u8303":3,"\u670d\u52a1\u5668\u6210\u529f\u8fd4\u56de\u7528\u6237\u8bf7\u6c42\u7684\u6570\u636e":3,"\u670d\u52a1\u5668\u6ca1\u6709\u8fdb\u884c\u64cd\u4f5c":3,"\u670d\u52a1\u5668\u6ca1\u6709\u8fdb\u884c\u65b0\u5efa\u6216\u4fee\u6539\u6570\u636e\u7684\u64cd\u4f5c":3,"\u670d\u52a1\u5668\u8fd4\u56de\u7684\u6570\u636e\u683c\u5f0f":3,"\u672c\u6559\u7a0b\u4f7f\u7528mysql\u4f5c\u4e3a\u6570\u636e\u5e93":13,"\u674e\u78ca":5,"\u67e5\u770b\u914d\u7f6e\u6587\u4ef6\u5e76\u8fd0\u884c":13,"\u67ef\u8fde\u6625":5,"\u6838\u5fc3\u5f00\u53d1\u8005\u4e4b\u4e00":5,"\u6839\u636e\u559c\u597d\u9009\u62e9\u5b89\u88c5\u65b9\u5f0f\u548c\u7248\u672c":13,"\u6a21\u5757\u6587\u4ef6\u7684\u5934\u90e8\u5305\u542b\u6709utf":11,"\u6a21\u5757\u7d22\u5f15":8,"\u6a21\u677f\u6807\u7b7e\u76ee\u5f55":10,"\u6a21\u7cca\u641c\u7d22":3,"\u6b22\u8fce\u6765\u5230":8,"\u6b64\u5916\u90fd\u53ea\u7a7a\u4e00\u884c":11,"\u6bcf\u4e2a\u7f51\u5740\u4ee3\u8868\u4e00\u79cd\u8d44\u6e90":3,"\u6bcf\u4e2aurl\u72ec\u7acb\u547d\u540d":11,"\u6bd4\u5982":3,"\u6bd4\u5982\u4e0a\u9762\u63d0\u5230\u7684":3,"\u6bd4\u5982\u7528\u6237\u8bf7\u6c42json\u683c\u5f0f":3,"\u6c38\u8fdc\u4e0d\u8981\u4e0etrue\u6216false\u8fdb\u884c\u6bd4\u8f83":11,"\u6ca1\u6709\u524d\u540e\u7aef\u5206\u79bb":3,"\u6ca1\u6709\u6027\u80fd\u74f6\u9888":8,"\u6ca1\u6709\u72ec\u7acbapp":3,"\u6ca1\u6709web":13,"\u6ce8\u610f":13,"\u6ce8\u91ca\u660e\u786e\u4f18\u7f8e":11,"\u6ce8\u91ca\u7684\u89c4\u8303\u4e0e\u6587\u6863\u5b57\u7b26\u4e32\u7f16\u5199\u89c4\u8303\u7c7b\u4f3c":11,"\u6d4b\u8bd5\u6848\u4f8b\u5c3d\u53ef\u80fd\u5b8c\u6574":11,"\u6d4b\u8bd5\u7528\u4f8b\u6587\u4ef6":10,"\u6d4b\u8bd5\u8fde\u63a5":13,"\u6d4f\u89c8\u5668\u8bbf\u95ee":12,"\u6df1\u5ea6\u96c6\u6210\u4e86ansibl":8,"\u6ee1\u8db3\u6df7\u5408\u4e91\u67b6\u6784":8,"\u738b\u5889":5,"\u751f\u6210\u5927\u91cf\u6d4b\u8bd5\u6570\u636e":10,"\u751f\u6210\u6570\u636e\u5e93\u8868\u7ed3\u6784\u548c\u521d\u59cb\u5316\u6570\u636e":13,"\u7528\u6237\u4f7f\u7528\u6587\u6863":8,"\u7528\u6237\u5220\u9664\u6570\u636e\u6210\u529f":3,"\u7528\u6237\u53d1\u51fa\u7684\u8bf7\u6c42\u6709\u9519\u8bef":3,"\u7528\u6237\u53d1\u51fa\u7684\u8bf7\u6c42\u9488\u5bf9\u7684\u662f\u4e0d\u5b58\u5728\u7684\u8bb0\u5f55":3,"\u7528\u6237\u540d":3,"\u7528\u6237\u5c06\u65e0\u6cd5\u5224\u65ad\u53d1\u51fa\u7684\u8bf7\u6c42\u662f\u5426\u6210\u529f":3,"\u7528\u6237\u65b0\u5efa\u6216\u4fee\u6539\u6570\u636e\u6210\u529f":3,"\u7528\u6237\u6a21\u5757":[1,8],"\u7528\u6237\u8bf7\u6c42\u7684\u683c\u5f0f\u4e0d\u53ef\u5f97":3,"\u7528\u6237\u8bf7\u6c42\u7684\u8d44\u6e90\u88ab\u6c38\u4e45\u5220\u9664":3,"\u7528\u6237\u8bfb\u53d6\u8fd9\u4e2a\u5c5e\u6027\u5c31\u77e5\u9053\u4e0b\u4e00\u6b65\u8be5\u8c03\u7528\u4ec0\u4e48api\u4e86":3,"\u7531\u4e8e\u4e00\u4e2a\u9879\u76ee\u591a\u4e2aapp\u6240\u4ee5jumpserver\u4f7f\u7528\u4ee5\u4e0b\u98ce\u683c":3,"\u7531http\u52a8\u8bcd\u8868\u793a":3,"\u754c\u9762\u6f02\u4eae":8,"\u7684\u4e13\u4e1a\u8fd0\u7ef4\u5ba1\u8ba1\u7cfb\u7edf":8,"\u76f4\u63a5\u89e3\u538b":13,"\u770b\u5230\u4e0b\u9762\u7684\u63d0\u793a\u7b26\u4ee3\u8868\u6210\u529f":13,"\u786e\u4fdd\u4f7f\u7528\u7684\u662f\u521a\u624d\u8bbe\u7f6e\u7684\u914d\u7f6e\u6587\u4ef6":13,"\u7b26\u53f7\u540e\u6dfb\u52a0\u4e00\u4e2a\u5192\u53f7":11,"\u7b49":11,"\u7b80\u5355\u6613\u7528":8,"\u7ba1\u7406\u540e\u53f0\u76ee\u5f55":10,"\u7ba1\u7406\u5458\u6587\u6863":[],"\u7ba1\u7406\u6587\u6863":8,"\u7c7b\u540d\u79f0":11,"\u7c7b\u65b9\u6cd5":11,"\u7cfb\u7edf":[8,13],"\u7d22\u5f15":[],"\u7ec8\u70b9":3,"\u7ec8\u7aef":13,"\u7f16\u5199\u4e86luna\u5927\u90e8\u5206\u4ee3\u7801":[],"\u7f16\u5199\u4e86web":5,"\u7f16\u5199\u957f\u8bed\u53e5\u65f6":11,"\u7f16\u8bd1\u5b89\u88c5":13,"\u7fa41":4,"\u7fa42":4,"\u7fa43":4,"\u800c\u4e0d\u662fhttpwriter":11,"\u800c\u4e0d\u662fnot":11,"\u800c\u4e1421\u4e16\u7eaa\u90fd\u662f\u5bbd\u5c4f\u4e86":11,"\u800c\u4e14\u6240\u7528\u7684\u540d\u8bcd\u5f80\u5f80\u4e0e\u6570\u636e\u5e93\u7684\u8868\u683c\u540d\u5bf9\u5e94":3,"\u800c\u5e94\u8be5\u8fd9\u6837\u5199":11,"\u800c\u8981\u7528\u7a7a\u683c":13,"\u800cyum\u7b49\u5de5\u5177\u4f9d\u8d56\u539f\u6765\u7684python":13,"\u8054\u7cfb\u65b9\u5f0f":8,"\u82e5\u4e0ejumpserver\u90e8\u7f72\u5728\u540c\u4e00\u4e3b\u673a\u4e0a\u81ea\u5b9a\u4e49\u4e00\u4e0b":13,"\u8865\u5145\u8bf4\u660e":11,"\u8868\u793a\u4e00\u4e2a\u8bf7\u6c42\u5df2\u7ecf\u8fdb\u5165\u540e\u53f0\u6392\u961f":3,"\u8868\u793a\u7528\u6237\u5f97\u5230\u6388\u6743":3,"\u8868\u793a\u7528\u6237\u6ca1\u6709\u6743\u9650":3,"\u8868\u793aapi\u7684\u5177\u4f53\u7f51\u5740":3,"\u89e3\u538bluna":13,"\u8ba4\u8bc1authent":8,"\u8bbe\u8ba1\u6307\u5357":3,"\u8bbf\u95ee":13,"\u8be5\u64cd\u4f5c\u662f\u5e42\u7b49\u7684":3,"\u8be5\u955c\u50cf\u96c6\u6210\u4e86\u6240\u6709\u9700\u8981\u7684\u7ec4\u4ef6":12,"\u8bf4\u660e\u5982\u4e0b":10,"\u8bf7\u5728":11,"\u8bf7\u5c06\u5185\u5efa\u53d8\u91cf\u91cd\u65b0\u7ed1\u5b9a\u4e3a\u5176\u4ed6\u540d\u79f0":11,"\u8bf7\u6d4f\u89c8\u5668\u8bbf\u95ee":13,"\u8d21\u732e\u8005":8,"\u8d26\u53f7":13,"\u8d26\u53f7account":8,"\u8d44\u4ea7\u5f00\u53d1\u8005":5,"\u8d44\u4ea7\u7ba1\u7406\u6a21\u5757":[1,8],"\u8d44\u6df1\u524d\u7aef\u5de5\u7a0b\u5e08":5,"\u8d44\u6df1\u5f00\u53d1\u8005":5,"\u8def\u5f84\u53c8\u79f0":3,"\u8fd0\u884c":13,"\u8fd0\u884c\u4e0d\u62a5\u9519":13,"\u8fd0\u884cjumpserv":13,"\u8fd4\u56de\u4e00\u4e2a\u7a7a\u6587\u6863":3,"\u8fd4\u56de\u5355\u4e2a\u8d44\u6e90\u5bf9\u8c61":3,"\u8fd4\u56de\u5b8c\u6574\u7684\u8d44\u6e90\u5bf9\u8c61":3,"\u8fd4\u56de\u65b0\u751f\u6210\u7684\u8d44\u6e90\u5bf9\u8c61":3,"\u8fd4\u56de\u7684\u4fe1\u606f\u4e2d\u5c06error\u4f5c\u4e3a\u952e\u540d":3,"\u8fd4\u56de\u8d44\u6e90\u5bf9\u8c61\u7684\u5217\u8868":3,"\u8fd9\u65f6\u9700\u8981\u53bb":13,"\u8fd9\u7248api\u76f8\u5bf9\u7b80\u5355":3,"\u8fd9\u91cc\u4ec5\u8003\u8651rest":3,"\u8fd9\u91cc\u53ea\u662fjumpserv":13,"\u8fd9\u91cc\u6240\u9700\u8981\u6ce8\u610f\u7684\u662fguacamole\u66b4\u9732\u51fa\u6765\u7684\u7aef\u53e3\u662f8080":13,"\u8fdb\u884c\u6bd4\u8f83\u65f6":11,"\u8fde\u5411\u5176\u4ed6api\u65b9\u6cd5":3,"\u8fde\u63a5\u6d4b\u8bd5\u673a":13,"\u901a\u7528\u7684\u51fd\u6570\u65b9\u6cd5":10,"\u901a\u7528templat":10,"\u9075\u5faagpl":8,"\u90a3\u4e48\u4e0b\u4e00\u884c\u5e94\u4e0e\u62ec\u53f7\u6216\u82b1\u62ec\u53f7\u5bf9\u9f50":11,"\u90ae\u4ef6":8,"\u914d\u7f6e\u6587\u4ef6":13,"\u914d\u7f6e\u6587\u4ef6\u662fpython\u683c\u5f0f":13,"\u914d\u7f6e\u6587\u4ef6\u6837\u4f8b":10,"\u91c7\u7528\u9a86\u9a7c\u62fc\u5199\u6cd5":11,"\u91cd\u65b0\u4e0b\u8f7drelease\u5305":14,"\u9488\u5bf9\u4e0d\u540c\u64cd\u4f5c":3,"\u9632\u6b62\u8d44\u6e90\u91cd\u540d":10,"\u9648\u5c1a\u59d4":5,"\u96c6\u5408":3,"\u9700\u8981nginx\u6765\u8fd0\u884c\u8bbf\u95ee":13,"\u9876\u5c42\u51fd\u6570\u4e0e\u7c7b\u4e4b\u95f4\u7a7a\u4e24\u884c":11,"\u9879\u76ee\u5165\u53e3urlconf":10,"\u9879\u76ee\u591a\u8bed\u8a00\u76ee\u5f55":10,"\u9879\u76ee\u63d0\u4ea4\u8f83\u591agit":13,"\u9879\u76ee\u6a21\u677f\u76ee\u5f55":10,"\u9879\u76ee\u89c4\u8303":[6,8],"\u9879\u76ee\u8bbe\u7f6e\u6587\u4ef6":10,"\u9879\u76ee\u8bbe\u7f6e\u76ee\u5f55":10,"\u9879\u76ee\u9759\u6001\u8d44\u6e90\u76ee\u5f55":10,"\u9879\u76ee\u9aa8\u67b6":[6,8],"\u9884\u7f16\u8bd1\u7684\u6b63\u5219\u8868\u8fbe\u5f0f":11,"\u9996\u5b57\u6bcd\u7f29\u7565\u8bcd\u4fdd\u6301\u5927\u5199\u4e0d\u53d8":11,"api\u4e0e\u7528\u6237\u7684\u901a\u4fe1\u534f\u8bae":3,"api\u548cviews\u53ea\u662f\u8bf7\u6c42\u548c\u8fd4\u56de\u4e0d\u540c":10,"api\u6587\u4ef6":10,"api\u6587\u6863":3,"api\u6700\u597d\u505a\u5230hypermedia":3,"api\u7684\u57fa\u672c\u60c5\u51b5":3,"api\u7684\u8bbe\u8ba1\u88ab\u79f0\u4e3ahateoa":3,"api\u7684\u8eab\u4efd\u8ba4\u8bc1\u5e94\u8be5\u4f7f\u7528oauth":3,"api\u89c4\u8303\u7ea6\u5b9a":[6,8],"app\u4e0b\u6a21\u677f\u76ee\u5f55":10,"app\u4e0b\u9759\u6001\u8d44\u6e90\u76ee\u5f55":10,"app\u76ee\u5f55":10,"app\u8bbe\u7f6e\u6587\u4ef6":10,"case":11,"centos7\u4e0b\u5b89\u88c5\u7684\u662fmariadb":13,"class":[11,13],"clone\u65f6\u8f83\u5927":13,"cls\u4e3a\u7b2c\u4e00\u4e2a\u53c2\u6570":11,"cmdb\u4e2d\u7684assets\u5217\u8868":3,"collection\u5173\u7cfb":3,"com\u7684\u6839\u76ee\u5f55\u53d1\u51fa\u8bf7\u6c42":3,"default":13,"delete\u65b9\u6cd5\u8bf7\u4f7f\u7528\u8bf7\u6c42\u4f53\u4f20\u9012\u53c2\u6570":3,"developmentconfig\u4e2d\u7684\u914d\u7f6e":13,"django\u5f00\u53d1":8,"django\u8d44\u6df1\u5f00\u53d1\u8005":5,"docker\u5b98\u65b9\u5b89\u88c5\u6587\u6863":12,"docker\u5b98\u65b9\u5b89\u88c5\u6587\u6863http":[],"elasticsearch\u5b58\u50a8\u7b49\u529f\u80fd":8,"fix\u4e86\u5f88\u591abug":5,"get\u65b9\u6cd5\u8bf7\u4f7f\u7528url":3,"github\u7684api\u5c31\u662f\u8fd9\u79cd\u8bbe\u8ba1":3,"go\u4ee5\u53capaas\u5e73\u53f0\u5f00\u53d1":5,"href\u8868\u793aapi\u7684\u8def\u5f84":3,"html\u4ee3\u7801\u4e0d\u53d7\u6b64\u89c4\u8303\u7ea6\u675f":11,"i\u53c2\u6570":[13,14],"idc\u5217\u8868":3,"jperm\u5f00\u53d1\u8005":[],"js\u91c7\u75282\u7a7a\u683c\u7f29\u8fdb":11,"jumpserver\u4f7f\u7528redis\u505acache\u548cceleri":13,"jumpserver\u5e76\u6388\u6743":13,"jumpserver\u6d4b\u8bd5\u8fd0\u8425":5,"jumpserver\u7ba1\u7406\u540e\u53f0":13,"luna\u524d\u7aef\u4ee3\u7801\u8d21\u732e\u8005\u548c\u73b0\u5728\u7ef4\u62a4\u8005":[],"luna\u5df2\u6539\u4e3a\u7eaf\u524d\u7aef":13,"method\u52a0\u4e0aurl\u63d0\u4f9b\u7684\u8bed\u4e49":3,"migrations\u7248\u672c\u63a7\u5236\u76ee\u5f55":10,"property\u51fd\u6570\u4e2d\u4f7f\u7528\u533f\u540d\u51fd\u6570":11,"python\u4e00\u822c\u9650\u5236\u6700\u592779\u4e2a\u5b57\u7b26":11,"python\u4e25\u683c\u91c7\u75284\u4e2a\u7a7a\u683c\u7684\u7f29\u8fdb":11,"python\u65b9\u9762\u5927\u81f4\u7684\u98ce\u683c":11,"qq\u7fa4":8,"rel\u8868\u793a\u8fd9\u4e2aapi\u4e0e\u5f53\u524d\u7f51\u5740\u7684\u5173\u7cfb":3,"release\u5305":13,"return":11,"self\u4e3a\u7b2c\u4e00\u4e2a\u53c2\u6570":11,"selinux\u548c\u9632\u706b\u5899":13,"ssh\u8bbf\u95ee":12,"static":[10,13],"terminal\u4f1a\u62a5\u9519":13,"terminal\u5927\u90e8\u5206\u4ee3\u7801":5,"terminal\u767b\u5f55\u8bed\u6cd5\u5982\u4e0b":13,"terminal\u89e3\u51b3\u65b9\u6848":8,"title\u8868\u793aapi\u7684\u6807\u9898":3,"true":13,"type\u8868\u793a\u8fd4\u56de\u7c7b\u578b":3,"url\u4e2d\u7684\u53ef\u53d8\u90e8\u5206":3,"url\u7b49\u901a\u5e38\u6bd4\u8f83\u957f":11,"urlconf\u6587\u4ef6":10,"v2\u534f\u8bae":8,"view\u7f16\u7a0b":11,"views\u6587\u4ef6":10,"web\u90e8\u5206\u4ee3\u7801":11,"zip\u5305":13,For:13,NOT:3,Not:3,__init__:[10,11],accept:3,activ:13,add_head:13,admin:[10,13],alia:13,all:13,api:10,app:[3,10],app_id:3,applic:3,asc:3,asset:[3,10],asset_id:3,asset_list:10,author:11,automak:13,bar:11,base:11,bash:13,beta2:12,bin:13,brief:11,broker:13,camelcas:11,cat:13,cento:13,centos6:13,centos7:13,charset:13,checkout:13,client_id:3,clone:13,close:11,coco:[11,14],code:11,collect:3,column:11,com:[3,4,12,13],come:11,common:10,conf:13,conf_exampl:13,config:[10,13],config_exampl:13,configur:13,connect:13,content:[3,13],control:13,copyright:11,creat:[3,13],crud:3,css:11,data:13,databas:13,db_engin:[12,13],db_host:[12,13],db_name:[12,13],db_password:[12,13],db_port:[12,13],db_user:[12,13],debug:13,def:11,delet:3,demo:8,depth:13,desc:11,descript:11,detail:11,dev:13,devel:13,developmentconfig:13,devop:5,display_nam:11,django:11,doc:10,docker:[12,13],dockerfil:12,draft:[6,8],encod:13,endpoint:3,entiti:3,epel:13,error:3,even:11,exampl:[3,10],exp:11,fake:10,fals:11,faq:8,filter:11,firewalld:13,first:11,fit2cloud:4,fixtur:10,flask:11,foo:11,forbidden:3,form:11,forward:13,found:3,ftp:13,function_cal:11,gcc:13,get:3,get_annoying_nam:11,git:[4,13,14],github:[3,8,12,13],goe:11,gone:3,goodby:11,grant:13,guacamol:13,guidanc:11,gzip:13,halcyon:5,hash:11,hello:11,here:11,host:13,href:3,html:[10,11,13],http:[4,12,13],http_upgrad:13,httpwriter:11,i18n:10,ibul:4,idc:3,idempot:3,identifi:13,index:[11,13],inform:11,init:10,inlin:11,inst:[],instal:[10,13,14],intern:3,invalid:3,iptabl:13,item:11,item_count:11,item_valu:11,its:11,javascript:11,jiaxiangkong:5,json:[3,10],jumpserv:[4,6,10,12,13,14],jumpserver_serv:13,kei:[3,11],kelianchun:5,keyword:[3,11],lambda:11,latex:11,ldap:8,licens:[10,11],license_fil:11,license_nam:11,like:11,limit:[3,11],line:11,link:3,list:3,listen:13,liuz:5,localhost:[3,12,13],locat:13,log:10,longer:11,lowercase_with_underscor:11,luna:[11,14],make:13,make_migr:[13,14],manag:10,mani:11,mariadb:13,media:13,migrat:10,mixin:11,model:10,modul:11,more:[11,13],much:11,my_dict:11,my_list:11,myclass:11,mymodel:11,mysql:[12,13],mysql_host:12,mysqld:13,name:[3,11],name_r:11,node:11,object:11,offset:[3,11],one:12,openssl:13,opt:13,order:3,order_bi:11,org:[3,4,13],own:11,p2222:13,packag:11,page:3,paramet:[3,11],paramiko:11,password:11,patch:3,per_pag:3,pip:[13,14],png:10,post:3,print:11,properti:11,proxy_add_x_forwarded_for:13,proxy_http_vers:13,proxy_pass:13,proxy_set_head:13,pull:14,put:3,pw_hash:11,pwd:13,py3:13,python3:13,python:[11,13],queri:11,quit:13,quot:11,raw:11,readm:10,real:13,real_nam:11,redi:13,redis_host:12,redis_password:12,redis_port:12,rel:3,releas:13,remote_addr:13,request:3,requir:[13,14],resourc:3,rest:[6,8],root:[12,13],rpm_requir:13,run:[12,13],run_serv:13,salt:11,scalar:11,see:[11,13],select:3,self:11,server:3,servic:13,set:[10,11],setenforc:13,sha1:11,simpl:11,singleton:11,sofia:5,some_imag:10,somepassword:13,sort:3,sourc:13,span:11,sqlite:13,ssh:12,start:13,stop:13,string:11,style:11,systemctl:13,tag:10,tar:13,templat:10,templatetag:10,termin:[],test:10,that_returns_an_object_with_an_attribut:11,thi:11,this_is_a_very_long:11,three:11,tip:12,titl:3,trail:11,tripl:11,try_fil:13,txt:[13,14],type:3,unauthor:3,underscor:11,unicod:11,unproces:3,updat:3,upgrad:13,upper:11,uppercase_with_underscor:11,uri:13,url:10,user:11,usernam:11,utf8:13,utf:11,util:[10,13,14],valu:11,venv:13,version:[3,13],view:10,vnd:3,wget:13,window:8,wsgi:10,www:[3,4,13],xshell:13,xvf:13,xxx:12,xxxx:12,xxxxx:3,xxxxxx:3,year:11,you:11,yourformat:3,yum:13,yumaojun03:5,zlib:13,zoo:3},titles:["\u8d44\u4ea7\u7ba1\u7406\u6a21\u5757","\u7ba1\u7406\u6587\u6863","\u7528\u6237\u6a21\u5757","REST API\u89c4\u8303\u7ea6\u5b9a","\u8054\u7cfb\u65b9\u5f0f","\u8d21\u732e\u8005","\u5f00\u53d1\u6587\u6863","FAQ","Jumpserver \u6587\u6863","\u5b89\u88c5\u6587\u6863","\u9879\u76ee\u9aa8\u67b6","Jumpserver \u9879\u76ee\u89c4\u8303\uff08Draft\uff09","\u5feb\u901f\u5b89\u88c5","\u4e00\u6b65\u4e00\u6b65\u5b89\u88c5","\u5347\u7ea7","\u7528\u6237\u4f7f\u7528\u6587\u6863"],titleterms:{"\u4e00":13,"\u4e00\u6b65\u4e00\u6b65\u5b89\u88c5":13,"\u4e00\u822c\u7a7a\u683c\u89c4\u5219":11,"\u4e09":13,"\u4e8c":13,"\u4e94":13,"\u4ed3\u5e93\u5730\u5740":12,"\u4ee3\u7801\u98ce\u683c":11,"\u516d":13,"\u5176\u5b83":3,"\u51c6\u5907python3\u548cpython\u865a\u62df\u73af\u5883":13,"\u51fd\u6570\u548c\u65b9\u6cd5\u7684\u53c2\u6570":11,"\u524d\u7aef":13,"\u5347\u7ea7":14,"\u534f\u8bae":3,"\u5373\u5404\u65b9\u6cd5":11,"\u5426\u5b9a\u6210\u5458\u5173\u7cfb\u68c0\u67e5":11,"\u547d\u540d\u7ea6\u5b9a":11,"\u56db":13,"\u57df\u540d":3,"\u57fa\u672c\u7684\u4ee3\u7801\u5e03\u5c40":11,"\u5b89\u88c5":13,"\u5b89\u88c5\u6587\u6863":9,"\u5b89\u88c5jumpserv":13,"\u5b89\u88c5windows\u652f\u6301\u7ec4\u4ef6":13,"\u5b98\u7f51":4,"\u5f00\u53d1\u6307\u5357":[],"\u5f00\u53d1\u6587\u6863":6,"\u5feb\u901f\u542f\u52a8":12,"\u5feb\u901f\u5b89\u88c5":12,"\u6574\u5408\u5404\u7ec4\u4ef6":13,"\u6587\u6863":8,"\u6587\u6863\u6ce8\u91ca":11,"\u6700\u5927\u884c\u957f\u5ea6":11,"\u6709\u5173jumpserv":8,"\u6a21\u5757\u5934\u90e8":11,"\u6bd4\u8f83":11,"\u6ce8\u91ca":11,"\u7248\u672c":3,"\u72b6\u6001\u7801":3,"\u73af\u5883":13,"\u7528\u6237\u4f7f\u7528\u6587\u6863":15,"\u7528\u6237\u6587\u6863":[],"\u7528\u6237\u6a21\u5757":2,"\u7a7a\u884c":11,"\u7ba1\u7406\u6587\u6863":1,"\u7c7b\u7684\u8bf4\u660e\u6587\u6863\u6ce8\u91ca":11,"\u7d22\u5f15":8,"\u7f29\u8fdb":11,"\u8054\u7cfb\u65b9\u5f0f":4,"\u8bbf\u95ee":12,"\u8bed\u53e5\u548c\u8868\u8fbe\u5f0f":11,"\u8bed\u8a00\u6846\u67b6":11,"\u8d21\u732e\u8005":5,"\u8d44\u4ea7\u7ba1\u7406\u6a21\u5757":0,"\u8def\u5f84":3,"\u8fc7\u6ee4\u4fe1\u606f":3,"\u8fd4\u56de\u7ed3\u679c":3,"\u90ae\u4ef6":4,"\u914d\u7f6e":13,"\u9519\u8bef\u5904\u7406":3,"\u957f\u8bed\u53e5\u7f29\u8fdb":11,"\u9879\u76ee\u89c4\u8303":11,"\u9879\u76ee\u9aa8\u67b6":10,"\u989d\u5916\u73af\u5883\u53d8\u91cf":12,"api\u89c4\u8303\u7ea6\u5b9a":3,"django\u89c4\u8303":11,"qq\u7fa4":4,"server\u548cweb":13,api:3,coco:13,comment:11,demo:4,docstr:11,draft:11,faq:7,github:4,http:3,hypermedia:3,indic:[],jumpserv:[8,11],luna:13,method:3,nginx:13,rest:3,server:13,socket:13,ssh:13,tabl:[],termin:13,web:13}})
\ No newline at end of file \ No newline at end of file
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<link rel="search" title="搜索" href="search.html"/> <link rel="search" title="搜索" href="search.html"/>
<link rel="top" title="jumpserver 0.5.0 文档" href="index.html"/> <link rel="top" title="jumpserver 0.5.0 文档" href="index.html"/>
<link rel="up" title="安装文档" href="installation.html"/> <link rel="up" title="安装文档" href="installation.html"/>
<link rel="next" title="管理文档" href="admin_guide.html"/> <link rel="next" title="升级" href="upgrade.html"/>
<link rel="prev" title="快速安装" href="quickstart.html"/> <link rel="prev" title="快速安装" href="quickstart.html"/>
...@@ -91,12 +91,22 @@ ...@@ -91,12 +91,22 @@
<ul class="current"> <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="installation.html">安装文档</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="installation.html">安装文档</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="quickstart.html">快速安装</a></li> <li class="toctree-l2"><a class="reference internal" href="quickstart.html">快速安装</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">一步一步安装</a></li> <li class="toctree-l2 current"><a class="current reference internal" href="#">一步一步安装</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id2">环境</a></li>
<li class="toctree-l3"><a class="reference internal" href="#python3python">一. 准备Python3和Python虚拟环境</a></li>
<li class="toctree-l3"><a class="reference internal" href="#jumpserver-0-5-0">二. 安装Jumpserver 0.5.0</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ssh-serverweb-socket-server-coco">三. 安装 SSH Server和Web Socket Server: Coco</a></li>
<li class="toctree-l3"><a class="reference internal" href="#web-terminal-luna">四. 安装 Web Terminal 前端: Luna</a></li>
<li class="toctree-l3"><a class="reference internal" href="#windows">五. 安装Windows支持组件</a></li>
<li class="toctree-l3"><a class="reference internal" href="#nginx">六. 配置 nginx 整合各组件</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="upgrade.html">升级</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li> <li class="toctree-l1"><a class="reference internal" href="user_guide.html">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li> <li class="toctree-l1"><a class="reference internal" href="development.html">开发文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
...@@ -167,6 +177,239 @@ ...@@ -167,6 +177,239 @@
<div class="section" id="id1"> <div class="section" id="id1">
<h1>一步一步安装<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1> <h1>一步一步安装<a class="headerlink" href="#id1" title="永久链接至标题"></a></h1>
<div class="section" id="id2">
<h2>环境<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li>系统: CentOS 7</li>
<li>IP: 192.168.244.144</li>
<li>关闭 selinux和防火墙</li>
</ul>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span># CentOS 7
$ setenforce 0 # 可以设置配置文件永久关闭
$ systemctl stop iptables.service
$ systemctl stop firewalld.service
# CentOS6
$ setenforce 0
$ service iptables stop
</pre></div>
</div>
</div>
<div class="section" id="python3python">
<h2>一. 准备Python3和Python虚拟环境<a class="headerlink" href="#python3python" title="永久链接至标题"></a></h2>
<p><strong>1.1 安装依赖包</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release
</pre></div>
</div>
<p><strong>1.2 编译安装</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar xvf Python-3.6.1.tar.xz &amp;&amp; cd Python-3.6.1
$ ./configure &amp;&amp; make &amp;&amp; make install
</pre></div>
</div>
<p><strong>1.3 建立python虚拟环境</strong></p>
<p>因为CentOS
6/7自带的是Python2,而Yum等工具依赖原来的Python,为了不扰乱原来的环境我们来使用Python虚拟环境</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt
$ python3 -m venv py3
$ source /opt/py3/bin/activate
# 看到下面的提示符代表成功,以后运行jumpserver都要先运行以上source命令,以下所有命令均在该虚拟环境中运行
(py3) [root@localhost py3]#
</pre></div>
</div>
</div>
<div class="section" id="jumpserver-0-5-0">
<h2>二. 安装Jumpserver 0.5.0<a class="headerlink" href="#jumpserver-0-5-0" title="永久链接至标题"></a></h2>
<p><strong>2.1 下载或clone项目</strong></p>
<p>项目提交较多git clone时较大,你可以选择去github项目页面直接下载
zip包,我的网速好,我直接clone了</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt/
$ git clone --depth=1 https://github.com/jumpserver/jumpserver.git &amp;&amp; cd jumpserver &amp;&amp; git checkout dev
</pre></div>
</div>
<p><strong>2.2 安装依赖rpm包</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt/jumpserver/requirements
$ yum -y install $(cat rpm_requirements.txt) # 如果没有任何报错请继续
</pre></div>
</div>
<p><strong>2.3 安装python库依赖</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ pip install -r requirements.txt # 不要指定-i参数,因为镜像上可能没有最新的包,如果没有任何报错请继续
</pre></div>
</div>
<p><strong>2.4 安装Redis, jumpserver使用redis做cache和celery broker</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ yum -y install redis
$ service redis start
</pre></div>
</div>
<p><strong>2.5 安装MySQL</strong></p>
<p>本教程使用mysql作为数据库,如果不使用mysql可以跳过相关mysql安装和配置</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span># centos7
$ yum -y install mariadb mariadb-devel mariadb-server # centos7下安装的是mariadb
$ service mariadb start
# centos6
$ yum -y install mysql mysql-devel mysql-server
$ service mysqld start
</pre></div>
</div>
<p><strong>2.6 创建数据库 jumpserver并授权</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ mysql
&gt; create database jumpserver default charset &#39;utf8&#39;;
&gt; grant all on jumpserver.* to &#39;jumpserver&#39;@&#39;127.0.0.1&#39; identified by &#39;somepassword&#39;;
</pre></div>
</div>
<p><strong>2.7 修改jumpserver配置文件</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt/jumpserver
$ cp config_example.py config.py
$ vi config.py # 我们计划修改 DevelopmentConfig中的配置,因为默认jumpserver是使用该配置,它继承自Config
</pre></div>
</div>
<p><strong>注意: 配置文件是python格式,不要用tab,而要用空格</strong> <strong>注意:
配置文件是python格式,不要用tab,而要用空格</strong> <strong>注意:
配置文件是python格式,不要用tab,而要用空格</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">DevelopmentConfig</span><span class="p">(</span><span class="n">Config</span><span class="p">):</span>
<span class="n">DEBUG</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">DB_ENGINE</span> <span class="o">=</span> <span class="s1">&#39;mysql&#39;</span>
<span class="n">DB_HOST</span> <span class="o">=</span> <span class="s1">&#39;127.0.0.1&#39;</span>
<span class="n">DB_PORT</span> <span class="o">=</span> <span class="mi">3306</span>
<span class="n">DB_USER</span> <span class="o">=</span> <span class="s1">&#39;jumpserver&#39;</span>
<span class="n">DB_PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;somepassword&#39;</span>
<span class="n">DB_NAME</span> <span class="o">=</span> <span class="s1">&#39;jumpserver&#39;</span>
<span class="o">...</span>
<span class="n">config</span> <span class="o">=</span> <span class="n">DevelopmentConfig</span><span class="p">()</span> <span class="c1"># 确保使用的是刚才设置的配置文件</span>
</pre></div>
</div>
<p><strong>2.8 生成数据库表结构和初始化数据</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt/jumpserver/utils
$ bash make_migrations.sh
</pre></div>
</div>
<p><strong>2.9 运行Jumpserver</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt/jumpserver
$ python run_server.py all
</pre></div>
</div>
<p>运行不报错,请浏览器访问 <a class="reference external" href="http://192.168.244.144:8080/">http://192.168.244.144:8080/</a>
(这里只是jumpserver, 没有web terminal,所以访问web terminal会报错)</p>
<p>账号:admin 密码: admin</p>
</div>
<div class="section" id="ssh-serverweb-socket-server-coco">
<h2>三. 安装 SSH Server和Web Socket Server: Coco<a class="headerlink" href="#ssh-serverweb-socket-server-coco" title="永久链接至标题"></a></h2>
<p><strong>3.1 下载clone项目</strong></p>
<p>新开一个终端,连接测试机,别忘了 source /opt/py3/bin/activate</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt
$ git clone https://github.com/jumpserver/coco.git &amp;&amp; cd coco &amp;&amp; git checkout dev
</pre></div>
</div>
<p><strong>3.2 安装依赖</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt/coco/requirements $ yum -y install $(cat rpm_requirements.txt) $ pip install requirements.txt
</pre></div>
</div>
<p><strong>3.2 安装依赖</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt/coco/requirements
$ yum -y install $(cat rpm_requirements.txt)
$ pip install -r requirements.txt
</pre></div>
</div>
<p><strong>3.3 查看配置文件并运行</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ cd /opt/coco
$ cp conf_example.py conf.py
$ python run_server.py
</pre></div>
</div>
<p>这时需要去
jumpserver管理后台-终端-终端(<a class="reference external" href="http://192.168.244.144:8080/terminal/terminal/">http://192.168.244.144:8080/terminal/terminal/</a>)接受coco的注册</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Coco</span> <span class="n">version</span> <span class="mf">0.4</span><span class="o">.</span><span class="mi">0</span><span class="p">,</span> <span class="n">more</span> <span class="n">see</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="o">.</span><span class="n">jumpserver</span><span class="o">.</span><span class="n">org</span>
<span class="n">Starting</span> <span class="n">ssh</span> <span class="n">server</span> <span class="n">at</span> <span class="mf">0.0</span><span class="o">.</span><span class="mf">0.0</span><span class="p">:</span><span class="mi">2222</span>
<span class="n">Quit</span> <span class="n">the</span> <span class="n">server</span> <span class="k">with</span> <span class="n">CONTROL</span><span class="o">-</span><span class="n">C</span><span class="o">.</span>
</pre></div>
</div>
<p><strong>3.4 测试连接</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ ssh -p2222 admin@192.168.244.144
密码: admin
如果是用在windows下,Xshell terminal登录语法如下
$ssh admin@192.168.244.144 2222
密码: admin
如果能登陆代表部署成功
</pre></div>
</div>
</div>
<div class="section" id="web-terminal-luna">
<h2>四. 安装 Web Terminal 前端: Luna<a class="headerlink" href="#web-terminal-luna" title="永久链接至标题"></a></h2>
<p>Luna已改为纯前端,需要nginx来运行访问</p>
<p>下载 release包,直接解压,不需要编译</p>
<p>访问 <a class="reference external" href="https://github.com/jumpserver/luna/releases">https://github.com/jumpserver/luna/releases</a>,下载对应release包</p>
<p>4.1 解压luna</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ pwd
/opt/
$ tar xvf luna.tar.gz
$ ls /opt/luna
...
</pre></div>
</div>
</div>
<div class="section" id="windows">
<h2>五. 安装Windows支持组件<a class="headerlink" href="#windows" title="永久链接至标题"></a></h2>
<p>使用docker启动 guacamole</p>
<div class="code shell highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">docker</span> <span class="n">run</span> \
<span class="o">-</span><span class="n">p</span> <span class="mi">8080</span><span class="p">:</span><span class="mi">8080</span> \
<span class="o">-</span><span class="n">e</span> <span class="n">JUMPSERVER_SERVER</span><span class="o">=</span><span class="n">http</span><span class="p">:</span><span class="o">//&lt;</span><span class="n">jumpserver</span><span class="o">&gt;</span><span class="p">:</span><span class="mi">8080</span> \
<span class="n">jumpserver</span><span class="o">/</span><span class="n">guacamole</span>
</pre></div>
</div>
<p>这里所需要注意的是guacamole暴露出来的端口是8080,若与jumpserver部署在同一主机上自定义一下。</p>
<p>修改JUMPSERVER_SERVER的配置,填上jumpserver的内网地址</p>
</div>
<div class="section" id="nginx">
<h2>六. 配置 nginx 整合各组件<a class="headerlink" href="#nginx" title="永久链接至标题"></a></h2>
<p>6.1 安装nginx 根据喜好选择安装方式和版本</p>
<p>6.2 配置文件</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>server {
listen 80;
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 /luna/ {
try_files $uri / /index.html;
alias /opt/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/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection &quot;upgrade&quot;;
}
location /guacamole/ {
proxy_pass http://&lt;guacamole&gt;:8080/;
}
location / {
proxy_pass http://localhost:8080;
}
}
</pre></div>
</div>
<p>6.3 运行 nginx</p>
<p>6.4 访问 <a class="reference external" href="http://192.168.244.144">http://192.168.244.144</a></p>
</div>
</div> </div>
...@@ -179,7 +422,7 @@ ...@@ -179,7 +422,7 @@
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="admin_guide.html" class="btn btn-neutral float-right" title="管理文档" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="upgrade.html" class="btn btn-neutral float-right" title="升级" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="quickstart.html" class="btn btn-neutral" title="快速安装" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> <a href="quickstart.html" class="btn btn-neutral" title="快速安装" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
href="genindex.html"/> href="genindex.html"/>
<link rel="search" title="搜索" href="search.html"/> <link rel="search" title="搜索" href="search.html"/>
<link rel="top" title="jumpserver 0.5.0 文档" href="index.html"/> <link rel="top" title="jumpserver 0.5.0 文档" href="index.html"/>
<link rel="next" title="开发指南" href="development.html"/> <link rel="next" title="贡献者" href="contributor.html"/>
<link rel="prev" title="资产管理模块" href="admin_asset.html"/> <link rel="prev" title="资产管理模块" href="admin_asset.html"/>
...@@ -91,7 +91,6 @@ ...@@ -91,7 +91,6 @@
<li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">安装文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li> <li class="toctree-l1"><a class="reference internal" href="admin_guide.html">管理文档</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">用户使用文档</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">用户使用文档</a></li>
<li class="toctree-l1"><a class="reference internal" href="development.html">开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li> <li class="toctree-l1"><a class="reference internal" href="contributor.html">贡献者</a></li>
<li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li> <li class="toctree-l1"><a class="reference internal" href="contact.html">联系方式</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li> <li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
...@@ -172,7 +171,7 @@ ...@@ -172,7 +171,7 @@
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="development.html" class="btn btn-neutral float-right" title="开发指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> <a href="contributor.html" class="btn btn-neutral float-right" title="贡献者" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="admin_asset.html" class="btn btn-neutral" title="资产管理模块" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> <a href="admin_asset.html" class="btn btn-neutral" title="资产管理模块" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
......
REST API规范约定
----------------
这里仅考虑REST API的基本情况。参考
`RESTful API 设计指南`_
`github api文档`_
协议
~~~~
API与用户的通信协议,总是使用HTTPs协议。
域名
~~~~
这版api相对简单, 没有前后端分离, 没有独立app, 所以放在主域名下
::
https://example.org/api/
版本
~~~~
将API的版本号放入URL中, 由于一个项目多个app所以Jumpserver使用以下风格,
将版本号放到app后面
::
https://example.com/api/:app:/:version:/:resource:
https://example.com/api/assets/v1.0/assets [GET, POST]
https://example.com/api/assets/v1.0/assets/1 [GET, PUT, DELETE]
路径
~~~~
路径又称“终点”(endpoint),表示API的具体网址。
在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的“集合”(collection),所以API中的名词也应该使用复数。
举例来说 cmdb中的assets列表, idc列表
::
https://example.com/api/:app:/:version:/:resource:
https://example.com/api/assets/v1.0/assets [GET, POST]
https://example.com/api/assets/v1.0/assets/1 [GET, PUT, DELETE]
https://example.com/api/assets/v1.0/idcs [GET, POST]
一般性的增删查改(CRUD)API,完全使用HTTP
method加上url提供的语义,url中的可变部分(比如上面提到的)
一般用来传递该API操作的核心实体对象的唯一ID,如果有更多的参数需要提供,GET方法请使用url
parameter
(例如:“?client_id=xxxxx&app_id=xxxxxx”),PUT/POST/DELETE方法请使用请求体传递参数。
HTTP Method
~~~~~~~~~~~
对于资源的具体操作类型,由HTTP动词表示。
常用的HTTP动词有下面五个(括号里是对应的SQL命令)。
- GET(SELECT):从服务器取出资源(一项或多项)。
- POST(CREATE):在服务器新建一个资源。
- PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源, 幂等
- PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
- DELETE(DELETE):从服务器删除资源。
.. _RESTful API 设计指南: http://www.ruanyifeng.com/blog/2014/05/restful_api.html
.. _github api文档: https://developer.github.com/v3/
过滤信息
~~~~~~~~
常见参数约定
::
?keyword=localhost 模糊搜索
?limit=10:指定返回记录的数量
?offset=10:指定返回记录的开始位置。
?page=2&per_page=100:指定第几页,以及每页的记录数。
?sort=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
?asset_id=1:指定筛选条件
状态码
~~~~~~
服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。
- 200 OK -
[GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
- 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
- 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
- 204 NO CONTENT - [DELETE]:用户删除数据成功。
- 400 INVALID REQUEST -
[POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
- 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
- 403 Forbidden - [*]
表示用户得到授权(与401错误相对),但是访问是被禁止的。
- 404 NOT FOUND -
[*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
- 406 Not Acceptable -
[GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
- 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
- 422 Unprocesable entity - [POST/PUT/PATCH]
当创建一个对象时,发生一个验证错误。
- 500 INTERNAL SERVER ERROR -
[*]:服务器发生错误,用户将无法判断发出的请求是否成功。
错误处理
~~~~~~~~
如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。
::
{
error: "Invalid API key"
}
返回结果
~~~~~~~~
针对不同操作,服务器向用户返回的结果应该符合以下规范。
::
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档
Hypermedia API
~~~~~~~~~~~~~~
RESTful
API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
比如,当用户向api.example.com的根目录发出请求,会得到这样一个文档。
::
{"link": {
"rel": "collection https://www.example.com/zoos",
"href": "https://api.example.com/zoos",
"title": "List of zoos",
"type": "application/vnd.yourformat+json"
}}
上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。
rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),
href表示API的路径,title表示API的标题,type表示返回类型。 Hypermedia
API的设计被称为HATEOAS。 Github的API就是这种设计.
其它
~~~~
(1)API的身份认证应该使用OAuth 2.0框架。
(2)服务器返回的数据格式,应该尽量使用JSON
\ No newline at end of file
...@@ -70,6 +70,7 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] ...@@ -70,6 +70,7 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# The name of the Pygments (syntax highlighting) style to use. # The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx' pygments_style = 'sphinx'
html_show_sourcelink = True
# -- Options for HTML output ------------------------------------------------- # -- Options for HTML output -------------------------------------------------
......
联系方式 联系方式
+++++++++++++++++++++++++ +++++++++++++++++++++++++
QQ群
~~~~~~~~
群1: 390139816
群2: 399218702
群3: 552054376
Github
~~~~~~~~
https://github.com/jumpserver/jumpserver.git
官网
~~~~~~~~
http://www.jumpserver.org
Demo
~~~~~~~~
http://demo.jumpserver.org:8080
邮件
~~~~~~~~
ibuler#fit2cloud.com (#替换为@)
\ No newline at end of file
贡献者 贡献者
++++++++++++++++++++++++ ++++++++++++++++++++++++
感谢一下朋友为Jumpserver做出的贡献,世界因你们而不同,排名不分先后
- **小彧 <李磊>** Django资深开发者,为用户模块贡献了很多代码
- **sofia <周小侠>** 资深前端工程师, 前端代码贡献者
- **liuz <刘正> 全栈工程师** 编写了Web terminal大部分代码
- **jiaxiangkong <陈尚委>** Jumpserver测试运营
- **halcyon <王墉>** DevOps 资深开发者, 0.3.2 核心开发者之一
- **yumaojun03 <喻茂峻>** DevOps 资深开发者,擅长Python, Go以及PAAS平台开发
- **kelianchun <柯连春>** DevOps 资产开发者,fix了很多bug
\ No newline at end of file
开发指南 开发文档
------------------- ======================================
\ No newline at end of file
.. toctree::
:maxdepth: 1
:caption: 开发文档
api_style_guide
python_style_guide
project_structure
...@@ -28,7 +28,7 @@ Jumpserver 支持容器化部署,windows,LDAP, s3, elasticsearch存储等功 ...@@ -28,7 +28,7 @@ Jumpserver 支持容器化部署,windows,LDAP, s3, elasticsearch存储等功
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 2
:caption: 文档: :caption: 文档:
installation installation
......
...@@ -6,3 +6,4 @@ ...@@ -6,3 +6,4 @@
quickstart quickstart
step_by_step step_by_step
upgrade
项目骨架
--------
说明如下:
::
.
├── config-example.py // 配置文件样例
├── docs // 所有doc文件放到该目录
│ └── README.md
├── LICENSE
├── README.md
├── install // 安装说明
├── logs // 日志目录
├── apps // 管理后台目录,也是各app所在目录
│ └── assets // app目录
│ │ ├── admin.py
│ │ ├── apps.py // 新版本django app设置文件
│ │ ├── api.py // api文件
│ │ ├── __init__.py // 对外暴露的接口,放到该文件中,方便别的app引用
│ │ ├── migrations // models Migrations版本控制目录
│ │ │ └── __init__.py
│ │ ├── models.py // 数据模型目录
│ │ ├── static // app下静态资源目录,如果需要
│ │ │ └── assets // 多一层目录,防止资源重名
│ │ │ └── some_image.png
│ │ ├── templates // app下模板目录
│ │ │ └── assets // 多一层目录,防止资源重名
│ │ │ └── asset_list.html
│ │ ├── templatetags // 模板标签目录
│ │ ├── tests.py // 测试用例文件
│ │ ├── urls.py // urlconf文件
│ │ ├── utils.py // 将views和api可复用的代码放在这里, api和views只是请求和返回不同
│ │ └── views.py // views文件
│ ├── common
│ │ ├── templatetags // 通用template tag
│ │ ├── utils.py // 通用的函数方法
│ │ └── views.py
│ ├── fixtures // 初始化数据目录
│ │ ├── init.json // 初始化项目数据库
│ │ └── fake.json // 生成大量测试数据
│ ├── jumpserver // 项目设置目录
│ │ ├── __init__.py
│ │ ├── settings.py // 项目设置文件
│ │ ├── urls.py // 项目入口urlconf
│ │ └── wsgi.py
│ ├── manage.py
│ ├── static // 项目静态资源目录
│ ├── i18n // 项目多语言目录
│ └── templates // 项目模板目录
\ No newline at end of file
Jumpserver 项目规范(Draft)
============================
语言框架
--------
1. Python 3.6.1 (当前最新)
2. Django 1.11 (当前最新)
3. Flask 0.12 Luna (当前最新)
4. Paramiko 2.12 Coco (当前最新)
Django规范
----------
1. 尽量使用Class Base View编程,更少代码
2. 使用Django Form
3. 每个url独立命名,不要硬编码,同理static也是
4. 数据库表名手动指定,不要使用默认
5. 代码优雅简洁
6. 注释明确优美
7. 测试案例尽可能完整
8. 尽可能利用Django造好的轮子
代码风格
--------
Python方面大致的风格,我们采用pocoo的\ `Style
Guidance`_\ ,但是有些细节部分会尽量放开 参考国内翻译
基本的代码布局
~~~~~~~~~~~~~~
缩进
^^^^
1. Python严格采用4个空格的缩进,任何python代码都都必须遵守此规定。
2. web部分代码(HTML, CSS,
JavaScript),Node.js采用2空格缩进,同样不使用tab (:raw-latex:`\t`)。
之所以与Python不同,是因为js中有大量回调式的写法,2空格可以显著降低视觉上的负担。
最大行长度
^^^^^^^^^^
按PEP8规范,Python一般限制最大79个字符,
但是Django的命名,url等通常比较长,
而且21世纪都是宽屏了,所以我们限制最大120字符
**补充说明:HTML代码不受此规范约束。**
长语句缩进
^^^^^^^^^^
编写长语句时,可以使用换行符()换行。在这种情况下,下一行应该与上一行的最后
一个“.”句点或“=”对齐,或者是缩进4个空格符
::
this_is_a_very_long(function_call, 'with many parameters') \
.that_returns_an_object_with_an_attribute
MyModel.query.filter(MyModel.scalar > 120) \
.order_by(MyModel.name.desc()) \
.limit(10)
如果你使用括号“()”或花括号“{}”为长语句换行,那么下一行应与括号或花括号对齐:
::
this_is_a_very_long(function_call, 'with many parameters',
23, 42, 'and even more')
对于元素众多的列表或元组,在第一个“[”或“(”之后马上换行:
::
items = [
'this is the first', 'set of items', 'with more items',
'to come in this line', 'like this'
]
.. _Style Guidance: http://www.pocoo.org/internal/styleguide/
空行
^^^^
顶层函数与类之间空两行,此外都只空一行。不要在代码中使用太多的空行来区分不同的逻辑模块。
::
def hello(name):
print 'Hello %s!' % name
def goodbye(name):
print 'See you %s.' % name
class MyClass(object):
"""This is a simple docstring."""
def __init__(self, name):
self.name = name
def get_annoying_name(self):
return self.name.upper() + '!!!!111'
语句和表达式
~~~~~~~~~~~~
一般空格规则
^^^^^^^^^^^^
1. 单目运算符与运算对象之间不空格(例如,-,~等),即使单目运算符位于括号内部也一样。
2. 双目运算符与运算对象之间要空格。
::
exp = -1.05
value = (item_value / item_count) * offset / exp
value = my_list[index]
value = my_dict['key']
比较
^^^^
1. 任意类型之间的比较,使用“==”和“!=”。
2. 与单例(singletons)进行比较时,使用is和is not。
3. 永远不要与True或False进行比较(例如,不要这样写:foo ==
False,而应该这样写:not foo)。
否定成员关系检查
^^^^^^^^^^^^^^^^
使用foo not in bar,而不是not foo in bar。
命名约定
~~~~~~~~
1. 类名称:采用骆驼拼写法(CamelCase),首字母缩略词保持大写不变(HTTPWriter,而不是HttpWriter)。
2. 变量名:小写_以及_下划线(lowercase_with_underscores)。
3. 方法与函数名:小写_以及_下划线(lowercase_with_underscores)。
4. 常量:大写_以及_下划线(UPPERCASE_WITH_UNDERSCORES)。
5. 预编译的正则表达式:name_re。
6. 受保护的元素以一个下划线为前缀。双下划线前缀只有定义混入类(mixin
classes)时才使用。
7. 如果使用关键词(keywords)作为类名称,应在名称后添加后置下划线(trailing
underscore)。
允许与内建变量重名,不要在变量名后添加下划线进行区分。如果函数需要访问重名的内建变量,请将内建变量重新绑定为其他名称。
8. 命名要有寓意, 不使用拼音,不使用无意义简单字母命名 (循环中计数例外 for
i in)
9. 命名缩写要谨慎, 尽量是大家认可的缩写
函数和方法的参数:
^^^^^^^^^^^^^^^^^^
1. 类方法:cls为第一个参数。
2. 实例方法:self为第一个参数。
3. property函数中使用匿名函数(lambdas)时,匿名函数的第一个参数可以用x替代,
例如:display_name = property(lambda x: x.real_name or x.username)。
文档注释(Docstring,即各方法,类的说明文档注释)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
所有文档字符串均以reStructuredText格式编写,方便Sphinx处理。文档字符串的行数不同,布局也不一样。
如果只有一行,代表字符串结束的三个引号与代表字符串开始的三个引号在同一行。
如果为多行,文档字符串中的文本紧接着代表字符串开始的三个引号编写,代表字符串结束的三个引号则自己独立成一行。
(有能力尽可能用英文, 否则请中文优雅注释)
::
def foo():
"""This is a simple docstring."""
def bar():
"""This is a longer docstring with so much information in there
that it spans three lines. In this case, the closing triple quote
is on its own line.
"""
文档字符串应分成简短摘要(尽量一行)和详细介绍。如果必要的话,摘要与详细介绍之间空一行。
模块头部
~~~~~~~~
模块文件的头部包含有utf-8编码声明(如果模块中使用了非ASCII编码的字符,建议进行声明),以及标准的文档字符串。
::
# -*- coding: utf-8 -*-
"""
package.module
~~~~~~~~~~~~~~
A brief description goes here.
:copyright: (c) YEAR by AUTHOR.
:license: LICENSE_NAME, see LICENSE_FILE for more details.
"""
注释(comment)
~~~~~~~~~~~~~
注释的规范与文档字符串编写规范类似。二者均以reStructuredText格式编写。
如果使用注释来编写类属性的文档,请在#符号后添加一个冒号“:”。
(有能力尽可能用英文, 否则请中文优雅注释)
::
class User(object):
#: the name of the user as unicode string
name = Column(String)
#: the sha1 hash of the password + inline salt
pw_hash = Column(String)
\ No newline at end of file
...@@ -21,3 +21,28 @@ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_ ...@@ -21,3 +21,28 @@ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_
浏览器访问: http://localhost:8080 浏览器访问: http://localhost:8080
ssh访问: ssh -p 2222 localhost ssh访问: ssh -p 2222 localhost
额外环境变量
```````````````
- DB_ENGINE = mysql
- DB_HOST = mysql_host
- DB_PORT = 3306
- DB_USER = xxx
- DB_PASSWORD = xxxx
- DB_NAME = jumpserver
- REDIS_HOST = ''
- REDIS_PORT = ''
- REDIS_PASSWORD = ''
::
docker run -p 8080:80 -p 2222:2222 -e DB_ENGINE=mysql -e DB_HOST=192.168.1.1 -e DB_PORT=3306 -e DB_USER=root -e DB_PASSWORD=xxx -e DB_NAME=jumpserver jumpserver/jumpserver:0.5.0-beta2
仓库地址
```````````````
https://github.com/jumpserver/Dockerfile
一步一步安装 一步一步安装
-------------------------- --------------------------
环境
~~~~
- 系统: CentOS 7
- IP: 192.168.244.144
- 关闭 selinux和防火墙
::
# CentOS 7
$ setenforce 0 # 可以设置配置文件永久关闭
$ systemctl stop iptables.service
$ systemctl stop firewalld.service
# CentOS6
$ setenforce 0
$ service iptables stop
一. 准备Python3和Python虚拟环境
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**1.1 安装依赖包**
::
$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release
**1.2 编译安装**
::
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
$ ./configure && make && make install
**1.3 建立python虚拟环境**
因为CentOS
6/7自带的是Python2,而Yum等工具依赖原来的Python,为了不扰乱原来的环境我们来使用Python虚拟环境
::
$ cd /opt
$ python3 -m venv py3
$ source /opt/py3/bin/activate
# 看到下面的提示符代表成功,以后运行jumpserver都要先运行以上source命令,以下所有命令均在该虚拟环境中运行
(py3) [root@localhost py3]#
二. 安装Jumpserver 0.5.0
~~~~~~~~~~~~~~~~~~~~~~~~
**2.1 下载或clone项目**
项目提交较多git clone时较大,你可以选择去github项目页面直接下载
zip包,我的网速好,我直接clone了
::
$ cd /opt/
$ git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout dev
**2.2 安装依赖rpm包**
::
$ cd /opt/jumpserver/requirements
$ yum -y install $(cat rpm_requirements.txt) # 如果没有任何报错请继续
**2.3 安装python库依赖**
::
$ pip install -r requirements.txt # 不要指定-i参数,因为镜像上可能没有最新的包,如果没有任何报错请继续
**2.4 安装Redis, jumpserver使用redis做cache和celery broker**
::
$ yum -y install redis
$ service redis start
**2.5 安装MySQL**
本教程使用mysql作为数据库,如果不使用mysql可以跳过相关mysql安装和配置
::
# centos7
$ yum -y install mariadb mariadb-devel mariadb-server # centos7下安装的是mariadb
$ service mariadb start
# centos6
$ yum -y install mysql mysql-devel mysql-server
$ service mysqld start
**2.6 创建数据库 jumpserver并授权**
::
$ mysql
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'somepassword';
**2.7 修改jumpserver配置文件**
::
$ cd /opt/jumpserver
$ cp config_example.py config.py
$ vi config.py # 我们计划修改 DevelopmentConfig中的配置,因为默认jumpserver是使用该配置,它继承自Config
**注意: 配置文件是python格式,不要用tab,而要用空格** **注意:
配置文件是python格式,不要用tab,而要用空格** **注意:
配置文件是python格式,不要用tab,而要用空格**
::
class DevelopmentConfig(Config):
DEBUG = True
DB_ENGINE = 'mysql'
DB_HOST = '127.0.0.1'
DB_PORT = 3306
DB_USER = 'jumpserver'
DB_PASSWORD = 'somepassword'
DB_NAME = 'jumpserver'
...
config = DevelopmentConfig() # 确保使用的是刚才设置的配置文件
**2.8 生成数据库表结构和初始化数据**
::
$ cd /opt/jumpserver/utils
$ bash make_migrations.sh
**2.9 运行Jumpserver**
::
$ cd /opt/jumpserver
$ python run_server.py all
运行不报错,请浏览器访问 http://192.168.244.144:8080/
(这里只是jumpserver, 没有web terminal,所以访问web terminal会报错)
账号:admin 密码: admin
三. 安装 SSH Server和Web Socket Server: Coco
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**3.1 下载clone项目**
新开一个终端,连接测试机,别忘了 source /opt/py3/bin/activate
::
$ cd /opt
$ git clone https://github.com/jumpserver/coco.git && cd coco && git checkout dev
**3.2 安装依赖**
::
$ cd /opt/coco/requirements $ yum -y install $(cat rpm_requirements.txt) $ pip install requirements.txt
**3.2 安装依赖**
::
$ cd /opt/coco/requirements
$ yum -y install $(cat rpm_requirements.txt)
$ pip install -r requirements.txt
**3.3 查看配置文件并运行**
::
$ cd /opt/coco
$ cp conf_example.py conf.py
$ python run_server.py
这时需要去
jumpserver管理后台-终端-终端(http://192.168.244.144:8080/terminal/terminal/)接受coco的注册
::
Coco version 0.4.0, more see https://www.jumpserver.org
Starting ssh server at 0.0.0.0:2222
Quit the server with CONTROL-C.
**3.4 测试连接**
::
$ ssh -p2222 admin@192.168.244.144
密码: admin
如果是用在windows下,Xshell terminal登录语法如下
$ssh admin@192.168.244.144 2222
密码: admin
如果能登陆代表部署成功
四. 安装 Web Terminal 前端: Luna
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Luna已改为纯前端,需要nginx来运行访问
下载 release包,直接解压,不需要编译
访问 https://github.com/jumpserver/luna/releases,下载对应release包
4.1 解压luna
::
$ pwd
/opt/
$ tar xvf luna.tar.gz
$ ls /opt/luna
...
五. 安装Windows支持组件
~~~~~~~~~~~~~~~~~~~~~~~
使用docker启动 guacamole
.. code:: shell
docker run \
-p 8080:8080 \
-e JUMPSERVER_SERVER=http://<jumpserver>:8080 \
jumpserver/guacamole
这里所需要注意的是guacamole暴露出来的端口是8080,若与jumpserver部署在同一主机上自定义一下。
修改JUMPSERVER_SERVER的配置,填上jumpserver的内网地址
六. 配置 nginx 整合各组件
~~~~~~~~~~~~~~~~~~~~~~~~~
6.1 安装nginx 根据喜好选择安装方式和版本
6.2 配置文件
::
server {
listen 80;
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 /luna/ {
try_files $uri / /index.html;
alias /opt/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/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /guacamole/ {
proxy_pass http://<guacamole>:8080/;
}
location / {
proxy_pass http://localhost:8080;
}
}
6.3 运行 nginx
6.4 访问 http://192.168.244.144
\ No newline at end of file
升级
----
1. 升级 jumpserver
::
$ git pull && pip install -r requirements/requirements.txt && cd utils && sh make_migrations.sh
2. 升级 coco
::
$ git pull && cd requirements && pip install -r requirements.txt # 不要指定 -i参数
3. 升级 luna
重新下载release包
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment