mirror of https://github.com/jumpserver/jumpserver
Merge remote-tracking branch 'github/docs' into docs
commit
ea18727bdb
|
@ -9,15 +9,15 @@
|
|||
=================
|
||||
|
||||
Jumpserver
|
||||
```````````
|
||||
现指Jumpserver管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持Restful API。
|
||||
`````````````
|
||||
现指 Jumpserver 管理后台,是核心组件(Core), 使用 Django Class Based View 风格开发,支持 Restful API。
|
||||
|
||||
`Github <https://github.com/jumpserver/jumpserver.git>`_
|
||||
|
||||
|
||||
Coco
|
||||
````````
|
||||
实现了SSH Server 和 Web Terminal Server的组件,提供ssh和websocket接口, 使用 Paramiko 和 Flask 开发。
|
||||
实现了 SSH Server 和 Web Terminal Server 的组件,提供 SSH 和 WebSocket 接口, 使用 Paramiko 和 Flask 开发。
|
||||
|
||||
|
||||
`Github <https://github.com/jumpserver/coco.git>`__
|
||||
|
@ -25,19 +25,19 @@ Coco
|
|||
|
||||
Luna
|
||||
````````
|
||||
现在是Web Terminal前端,计划前端页面都由该项目提供,Jumpserver只提供API,不再负责后台渲染html等。
|
||||
现在是 Web Terminal 前端,计划前端页面都由该项目提供,Jumpserver 只提供 API,不再负责后台渲染html等。
|
||||
|
||||
`Github <https://github.com/jumpserver/luna.git>`__
|
||||
|
||||
|
||||
Guacamole
|
||||
```````````
|
||||
Apache 跳板机项目,Jumpserver使用其组件实现RDP功能,Jumpserver并没有修改其代码而是添加了额外的插件,支持Jumpserver调用
|
||||
Apache 跳板机项目,Jumpserver 使用其组件实现 RDP 功能,Jumpserver 并没有修改其代码而是添加了额外的插件,支持 Jumpserver 调用。
|
||||
|
||||
|
||||
Jumpserver-python-sdk
|
||||
Jumpserver-Python-SDK
|
||||
```````````````````````
|
||||
Jumpserver API Python SDK,Coco目前使用该SDK与Jumpserver API交互
|
||||
Jumpserver API Python SDK,Coco 目前使用该 SDK 与 Jumpserver API 交互。
|
||||
|
||||
`Github <https://github.com/jumpserver/jumpserver-python-sdk.git>`__
|
||||
|
||||
|
|
|
@ -17,21 +17,21 @@
|
|||
基本设置
|
||||
`````````
|
||||
|
||||
点击页面上边的“基本设置“ TAB ,进入基本设置页面,编辑当前站点 URL、用户想到 URL、Email 主题前缀等信息,点击“提交”按钮,基本设置完成。
|
||||
点击页面上边的"基本设置" TAB ,进入基本设置页面,编辑当前站点 URL、用户想到 URL、Email 主题前缀等信息,点击“提交”按钮,基本设置完成。
|
||||
|
||||
.. _email_settings:
|
||||
|
||||
邮件设置
|
||||
`````````
|
||||
|
||||
点击页面上边的“邮件设置” TAB ,进入邮件设置页面,编辑 SMTP 主机、SMTP 端口、SMTP 账号、SMTP 密码和使用 SSL 或者 TSL 等信息,点击“测试连接”按钮,测试是否正确设置,点击“提交”按钮,邮件设置完成。
|
||||
点击页面上边的"邮件设置" TAB ,进入邮件设置页面,编辑 SMTP 主机、SMTP 端口、SMTP 账号、SMTP 密码和使用 SSL 或者 TSL 等信息,点击“测试连接”按钮,测试是否正确设置,点击“提交”按钮,邮件设置完成。
|
||||
|
||||
.. _ladp_settings:
|
||||
|
||||
LDAP 设置
|
||||
````````````
|
||||
|
||||
点击页面上边的“ LDAP 设置” TAB ,进入 LDAP 设置页面,编辑 LDAP 地址、DN、用户 OU、用户过滤器、LDAP 属性映射和是否使用 SSL、是否启用 LDAP 认证等信息,点击“测试连接”按钮,测试是否正确设置,点击“提交”按钮,完成 LDAP 设置。
|
||||
点击页面上边的" LDAP 设置" TAB ,进入 LDAP 设置页面,编辑 LDAP 地址、DN、用户 OU、用户过滤器、LDAP 属性映射和是否使用 SSL、是否启用 LDAP 认证等信息,点击“测试连接”按钮,测试是否正确设置,点击“提交”按钮,完成 LDAP 设置。
|
||||
|
||||
.. _terminal_settings:
|
||||
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
REST API规范约定
|
||||
----------------
|
||||
|
||||
这里仅考虑REST API的基本情况。参考
|
||||
这里仅考虑 REST API 的基本情况。参考
|
||||
|
||||
`RESTful API 设计指南`_
|
||||
|
||||
`github api文档`_
|
||||
`Github API 文档`_
|
||||
|
||||
协议
|
||||
~~~~
|
||||
|
||||
API与用户的通信协议,总是使用HTTPs协议。
|
||||
API 与用户的通信协议,总是使用 HTTPS 协议。
|
||||
|
||||
域名
|
||||
~~~~
|
||||
|
||||
这版api相对简单, 没有前后端分离, 没有独立app, 所以放在主域名下
|
||||
这版 API 相对简单, 没有前后端分离, 没有独立 APP, 所以放在主域名下
|
||||
|
||||
::
|
||||
|
||||
|
@ -24,8 +24,7 @@ API与用户的通信协议,总是使用HTTPs协议。
|
|||
版本
|
||||
~~~~
|
||||
|
||||
将API的版本号放入URL中, 由于一个项目多个app所以Jumpserver使用以下风格,
|
||||
将版本号放到app后面
|
||||
将 API 的版本号放入 URL 中,由于一个项目多个 APP 所以 Jumpserver 使用以下风格,将版本号放到 APP 后面
|
||||
|
||||
::
|
||||
|
||||
|
@ -36,9 +35,9 @@ API与用户的通信协议,总是使用HTTPs协议。
|
|||
路径
|
||||
~~~~
|
||||
|
||||
路径又称“终点”(endpoint),表示API的具体网址。
|
||||
在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的“集合”(collection),所以API中的名词也应该使用复数。
|
||||
举例来说 cmdb中的assets列表, idc列表
|
||||
路径又称“终点”(endpoint),表示 API 的具体网址。
|
||||
在 RESTful 架构中,每个网址代表一种资源(Resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的“集合”(Collection),所以 API 中的名词也应该使用复数。
|
||||
举例来说 Cmdb 中的 Assets 列表, IDC 列表。
|
||||
|
||||
::
|
||||
|
||||
|
@ -48,18 +47,14 @@ API与用户的通信协议,总是使用HTTPs协议。
|
|||
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方法请使用请求体传递参数。
|
||||
一般性的增删查改(CRUD)API,完全使用 HTTP Method 加上 URL 提供的语义,URL 中的可变部分(比如上面提到的),一般用来传递该API操作的核心实体对象的唯一 ID,如果有更多的参数需要提供,GET 方法请使用 URL Parameter(例如:“?client_id=xxxxx&app_id=xxxxxx”),PUT/POST/DELETE 方法请使用请求体传递参数。
|
||||
|
||||
HTTP Method
|
||||
~~~~~~~~~~~
|
||||
|
||||
对于资源的具体操作类型,由HTTP动词表示。
|
||||
对于资源的具体操作类型,由 HTTP 动词表示。
|
||||
|
||||
常用的HTTP动词有下面五个(括号里是对应的SQL命令)。
|
||||
常用的HTTP动词有下面五个(括号里是对应的 SQL 命令)。
|
||||
|
||||
- GET(SELECT):从服务器取出资源(一项或多项)。
|
||||
- POST(CREATE):在服务器新建一个资源。
|
||||
|
@ -68,7 +63,7 @@ HTTP Method
|
|||
- DELETE(DELETE):从服务器删除资源。
|
||||
|
||||
.. _RESTful API 设计指南: http://www.ruanyifeng.com/blog/2014/05/restful_api.html
|
||||
.. _github api文档: https://developer.github.com/v3/
|
||||
.. _Github API 文档: https://developer.github.com/v3/
|
||||
|
||||
|
||||
过滤信息
|
||||
|
@ -90,8 +85,7 @@ HTTP Method
|
|||
|
||||
服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。
|
||||
|
||||
- 200 OK -
|
||||
[GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
|
||||
- 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
|
||||
- 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
|
||||
- 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
|
||||
- 204 NO CONTENT - [DELETE]:用户删除数据成功。
|
||||
|
@ -113,7 +107,7 @@ HTTP Method
|
|||
错误处理
|
||||
~~~~~~~~
|
||||
|
||||
如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。
|
||||
如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将 error 作为键名,出错信息作为键值即可。
|
||||
|
||||
::
|
||||
|
||||
|
@ -140,8 +134,8 @@ Hypermedia API
|
|||
~~~~~~~~~~~~~~
|
||||
|
||||
RESTful
|
||||
API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。
|
||||
比如,当用户向api.example.com的根目录发出请求,会得到这样一个文档。
|
||||
API 最好做到 Hypermedia,即返回结果中提供链接,连向其他 API 方法,使得用户不查文档,也知道下一步应该做什么。
|
||||
比如,当用户向 api.example.com 的根目录发出请求,会得到这样一个文档。
|
||||
|
||||
::
|
||||
|
||||
|
@ -152,15 +146,18 @@ API最好做到Hypermedia,即返回结果中提供链接,连向其他API方
|
|||
"type": "application/vnd.yourformat+json"
|
||||
}}
|
||||
|
||||
上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。
|
||||
上面代码表示,文档中有一个 Link 属性,用户读取这个属性就知道下一步该调用什么 API 了。
|
||||
|
||||
rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),
|
||||
- rel 表示这个 API 与当前网址的关系(Collection 关系,并给出该 Collection 的网址)
|
||||
- href 表示 API 的路径
|
||||
- title 表示 API 的标题
|
||||
- type 表示返回类型
|
||||
|
||||
href表示API的路径,title表示API的标题,type表示返回类型。 Hypermedia
|
||||
API的设计被称为HATEOAS。 Github的API就是这种设计.
|
||||
Hypermedia API 的设计被称为 HATEOAS。 Github API 就是这种设计.
|
||||
|
||||
其它
|
||||
~~~~
|
||||
|
||||
(1)API的身份认证应该使用OAuth 2.0框架。
|
||||
(2)服务器返回的数据格式,应该尽量使用JSON
|
||||
(1)API 的身份认证应该使用 OAuth 2.0 框架。
|
||||
|
||||
(2)服务器返回的数据格式,应该尽量使用 JSON。
|
|
@ -1,16 +1,16 @@
|
|||
贡献者
|
||||
=============
|
||||
|
||||
感谢一下朋友为Jumpserver做出的贡献,世界因你们而不同,排名不分先后
|
||||
感谢以下朋友为 Jumpserver 做出的贡献,世界因你们而不同,排名不分先后
|
||||
|
||||
|
||||
- **小彧 <李磊>** Django 资深开发者,为用户模块贡献了很多代码
|
||||
- **sofia <周小侠>** 资深前端工程师, 前端代码贡献者
|
||||
- **liuz <刘正> 全栈工程师** 编写了 Web Terminal 大部分代码
|
||||
- **jiaxiangkong <陈尚委>** Jumpserver测试运营
|
||||
- **jiaxiangkong <陈尚委>** Jumpserver 测试运营
|
||||
- **halcyon <王墉>** DevOps 资深开发者, 0.3.2 核心开发者之一
|
||||
- **yumaojun03 <喻茂峻>** DevOps 资深开发者,擅长Python, Go以及 PaaS 平台开发
|
||||
- **kelianchun <柯连春>** DevOps 资产开发者,fix了很多bug
|
||||
- **yumaojun03 <喻茂峻>** DevOps 资深开发者,擅长 Python、Go 以及 PaaS 平台开发
|
||||
- **kelianchun <柯连春>** DevOps 资产开发者,修复了很多 Bugs
|
||||
- **q4speed <莫鹍>** 架构师,贡献了 0.5.0 Windows 远程桌面登录大部分代码
|
||||
- **ZhangFengyi <张峰毅>** 贡献了 0.5.0 新版文档
|
||||
- **Aaron3S <沈晨阳>** 贡献了 0.5.0 新版文档
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
|
||||
欢迎来到 Jumpserver 文档。
|
||||
|
||||
Jumpserver是全球首款完全开源的堡垒机,使用GNU GPL v2.0开源协议,是符合 4A 的专业运维审计系统。
|
||||
Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的专业运维审计系统。
|
||||
|
||||
Jumpserver使用Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。
|
||||
Jumpserver 使用 Python / Django 进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好。
|
||||
|
||||
Jumpserver采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发访问限制。
|
||||
Jumpserver 采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发访问限制。
|
||||
|
||||
改变世界,从一点点开始。
|
|
@ -7,34 +7,34 @@
|
|||
|
||||
.
|
||||
├── config-example.py // 配置文件样例
|
||||
├── docs // 所有doc文件放到该目录
|
||||
├── docs // 所有 DOC 文件放到该目录
|
||||
│ └── README.md
|
||||
├── LICENSE
|
||||
├── README.md
|
||||
├── install // 安装说明
|
||||
├── logs // 日志目录
|
||||
├── apps // 管理后台目录,也是各app所在目录
|
||||
│ └── assets // app目录
|
||||
├── apps // 管理后台目录,也是各 APP 所在目录
|
||||
│ └── assets // APP 目录
|
||||
│ │ ├── admin.py
|
||||
│ │ ├── apps.py // 新版本django app设置文件
|
||||
│ │ ├── api.py // api文件
|
||||
│ │ ├── __init__.py // 对外暴露的接口,放到该文件中,方便别的app引用
|
||||
│ │ ├── migrations // models Migrations版本控制目录
|
||||
│ │ ├── apps.py // 新版本 Django APP 设置文件
|
||||
│ │ ├── api.py // API 文件
|
||||
│ │ ├── __init__.py // 对外暴露的接口,放到该文件中,方便别的 APP 引用
|
||||
│ │ ├── migrations // Models Migrations 版本控制目录
|
||||
│ │ │ └── __init__.py
|
||||
│ │ ├── models.py // 数据模型目录
|
||||
│ │ ├── static // app下静态资源目录,如果需要
|
||||
│ │ ├── static // APP 下静态资源目录,如果需要
|
||||
│ │ │ └── assets // 多一层目录,防止资源重名
|
||||
│ │ │ └── some_image.png
|
||||
│ │ ├── templates // app下模板目录
|
||||
│ │ ├── templates // APP 下模板目录
|
||||
│ │ │ └── assets // 多一层目录,防止资源重名
|
||||
│ │ │ └── asset_list.html
|
||||
│ │ ├── templatetags // 模板标签目录
|
||||
│ │ ├── tests.py // 测试用例文件
|
||||
│ │ ├── urls.py // urlconf文件
|
||||
│ │ ├── utils.py // 将views和api可复用的代码放在这里, api和views只是请求和返回不同
|
||||
│ │ └── views.py // views文件
|
||||
│ │ ├── urls.py // Urlconf 文件
|
||||
│ │ ├── utils.py // 将 Views 和 API 可复用的代码放在这里, API 和 Views 只是请求和返回不同
|
||||
│ │ └── views.py // Views 文件
|
||||
│ ├── common
|
||||
│ │ ├── templatetags // 通用template tag
|
||||
│ │ ├── templatetags // 通用 Template Tag
|
||||
│ │ ├── utils.py // 通用的函数方法
|
||||
│ │ └── views.py
|
||||
│ ├── fixtures // 初始化数据目录
|
||||
|
@ -43,7 +43,7 @@
|
|||
│ ├── jumpserver // 项目设置目录
|
||||
│ │ ├── __init__.py
|
||||
│ │ ├── settings.py // 项目设置文件
|
||||
│ │ ├── urls.py // 项目入口urlconf
|
||||
│ │ ├── urls.py // 项目入口 Urlconf
|
||||
│ │ └── wsgi.py
|
||||
│ ├── manage.py
|
||||
│ ├── static // 项目静态资源目录
|
||||
|
|
|
@ -2,55 +2,54 @@ Jumpserver 项目规范(Draft)
|
|||
============================
|
||||
|
||||
语言框架
|
||||
--------
|
||||
----------
|
||||
|
||||
1. Python 3.6.1 (当前最新)
|
||||
2. Django 1.11 (当前最新)
|
||||
3. Flask 0.12 Luna (当前最新)
|
||||
4. Paramiko 2.12 Coco (当前最新)
|
||||
|
||||
Django规范
|
||||
----------
|
||||
Django 规范
|
||||
--------------
|
||||
|
||||
1. 尽量使用Class Base View编程,更少代码
|
||||
2. 使用Django Form
|
||||
3. 每个url独立命名,不要硬编码,同理static也是
|
||||
1. 尽量使用 Class Base View 编程,更少代码
|
||||
2. 使用 Django Form
|
||||
3. 每个 URL 独立命名,不要硬编码,同理 Static 也是
|
||||
4. 数据库表名手动指定,不要使用默认
|
||||
5. 代码优雅简洁
|
||||
6. 注释明确优美
|
||||
7. 测试案例尽可能完整
|
||||
8. 尽可能利用Django造好的轮子
|
||||
8. 尽可能利用 Django 造好的轮子
|
||||
|
||||
代码风格
|
||||
--------
|
||||
-----------
|
||||
|
||||
Python方面大致的风格,我们采用pocoo的\ `Style
|
||||
Python 方面大致的风格,我们采用 pocoo 的\ `Style
|
||||
Guidance`_\ ,但是有些细节部分会尽量放开 参考国内翻译
|
||||
|
||||
基本的代码布局
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
缩进
|
||||
^^^^
|
||||
^^^^^^^^
|
||||
|
||||
1. Python严格采用4个空格的缩进,任何python代码都都必须遵守此规定。
|
||||
2. web部分代码(HTML, CSS,JavaScript),Node.js采用2空格缩进,同样不使用tab。
|
||||
之所以与Python不同,是因为js中有大量回调式的写法,2空格可以显著降低视觉上的负担。
|
||||
1. Python 严格采用4个空格的缩进,任何 Python 代码都都必须遵守此规定。
|
||||
2. Web 部分代码(HTML、CSS、JavaScript),Node.js 采用2空格缩进,同样不使用 TAB。
|
||||
之所以与 Python 不同,是因为 JS 中有大量回调式的写法,2空格可以显著降低视觉上的负担。
|
||||
|
||||
最大行长度
|
||||
^^^^^^^^^^
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
按PEP8规范,Python一般限制最大79个字符,
|
||||
但是Django的命名,url等通常比较长,
|
||||
而且21世纪都是宽屏了,所以我们限制最大120字符
|
||||
按 PEP8 规范,Python 一般限制最大79个字符,
|
||||
但是 Django 的命名,URL 等通常比较长,
|
||||
而且21世纪都是宽屏了,所以我们限制最大120字符
|
||||
|
||||
**补充说明:HTML代码不受此规范约束。**
|
||||
**补充说明:HTML 代码不受此规范约束。**
|
||||
|
||||
长语句缩进
|
||||
^^^^^^^^^^
|
||||
^^^^^^^^^^^^
|
||||
|
||||
编写长语句时,可以使用换行符()换行。在这种情况下,下一行应该与上一行的最后
|
||||
一个“.”句点或“=”对齐,或者是缩进4个空格符
|
||||
编写长语句时,可以使用换行符"\"换行。在这种情况下,下一行应该与上一行的最后一个“.”句点或“=”对齐,或者是缩进4个空格符。
|
||||
|
||||
::
|
||||
|
||||
|
@ -81,7 +80,7 @@ Guidance`_\ ,但是有些细节部分会尽量放开 参考国内翻译
|
|||
|
||||
|
||||
空行
|
||||
^^^^
|
||||
^^^^^^
|
||||
|
||||
顶层函数与类之间空两行,此外都只空一行。不要在代码中使用太多的空行来区分不同的逻辑模块。
|
||||
|
||||
|
@ -124,48 +123,45 @@ Guidance`_\ ,但是有些细节部分会尽量放开 参考国内翻译
|
|||
^^^^
|
||||
|
||||
1. 任意类型之间的比较,使用“==”和“!=”。
|
||||
2. 与单例(singletons)进行比较时,使用is和is not。
|
||||
2. 与单例(singletons)进行比较时,使用 is 和 is not。
|
||||
3. 永远不要与True或False进行比较(例如,不要这样写:foo ==
|
||||
False,而应该这样写:not foo)。
|
||||
|
||||
否定成员关系检查
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
使用foo not in bar,而不是not foo in bar。
|
||||
使用 foo not in bar,而不是 not foo in bar。
|
||||
|
||||
命名约定
|
||||
~~~~~~~~
|
||||
|
||||
1. 类名称:采用骆驼拼写法(CamelCase),首字母缩略词保持大写不变(HTTPWriter,而不是HttpWriter)。
|
||||
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)。
|
||||
6. 受保护的元素以一个下划线为前缀。双下划线前缀只有定义混入类(mixin classes)时才使用。
|
||||
7. 如果使用关键词(keywords)作为类名称,应在名称后添加后置下划线(trailing underscore)。
|
||||
允许与内建变量重名,不要在变量名后添加下划线进行区分。如果函数需要访问重名的内建变量,请将内建变量重新绑定为其他名称。
|
||||
8. 命名要有寓意, 不使用拼音,不使用无意义简单字母命名 (循环中计数例外 for
|
||||
i in)
|
||||
8. 命名要有寓意, 不使用拼音,不使用无意义简单字母命名 (循环中计数例外 for i in)
|
||||
9. 命名缩写要谨慎, 尽量是大家认可的缩写
|
||||
|
||||
函数和方法的参数:
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
1. 类方法:cls为第一个参数。
|
||||
2. 实例方法:self为第一个参数。
|
||||
3. property函数中使用匿名函数(lambdas)时,匿名函数的第一个参数可以用x替代,
|
||||
1. 类方法:cls 为第一个参数。
|
||||
2. 实例方法:self 为第一个参数。
|
||||
3. property函数中使用匿名函数(lambdas)时,匿名函数的第一个参数可以用 x 替代,
|
||||
例如:display_name = property(lambda x: x.real_name or x.username)。
|
||||
|
||||
|
||||
文档注释(Docstring,即各方法,类的说明文档注释)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
文档注释(Docstring,即各方法,类的说明文档注释)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
所有文档字符串均以reStructuredText格式编写,方便Sphinx处理。文档字符串的行数不同,布局也不一样。
|
||||
所有文档字符串均以 reStructuredText 格式编写,方便 Sphinx 处理。文档字符串的行数不同,布局也不一样。
|
||||
如果只有一行,代表字符串结束的三个引号与代表字符串开始的三个引号在同一行。
|
||||
如果为多行,文档字符串中的文本紧接着代表字符串开始的三个引号编写,代表字符串结束的三个引号则自己独立成一行。
|
||||
(有能力尽可能用英文, 否则请中文优雅注释)
|
||||
(有能力尽可能用英文, 否则请中文优雅注释)
|
||||
|
||||
::
|
||||
|
||||
|
@ -184,7 +180,7 @@ Guidance`_\ ,但是有些细节部分会尽量放开 参考国内翻译
|
|||
模块头部
|
||||
~~~~~~~~
|
||||
|
||||
模块文件的头部包含有utf-8编码声明(如果模块中使用了非ASCII编码的字符,建议进行声明),以及标准的文档字符串。
|
||||
模块文件的头部包含有 utf-8 编码声明(如果模块中使用了非 ASCII 编码的字符,建议进行声明),以及标准的文档字符串。
|
||||
|
||||
::
|
||||
|
||||
|
@ -199,10 +195,10 @@ Guidance`_\ ,但是有些细节部分会尽量放开 参考国内翻译
|
|||
:license: LICENSE_NAME, see LICENSE_FILE for more details.
|
||||
"""
|
||||
|
||||
注释(comment)
|
||||
~~~~~~~~~~~~~
|
||||
注释(Comment)
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
注释的规范与文档字符串编写规范类似。二者均以reStructuredText格式编写。
|
||||
注释的规范与文档字符串编写规范类似。二者均以 reStructuredText 格式编写。
|
||||
如果使用注释来编写类属性的文档,请在#符号后添加一个冒号“:”。
|
||||
(有能力尽可能用英文, 否则请中文优雅注释)
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
快速安装
|
||||
==========================
|
||||
|
||||
Jumpserver 封装了一个All in one Docker,可以快速启动。该镜像集成了所有需要的组件,可以使用外置db和redis
|
||||
Jumpserver 封装了一个 All in one Docker,可以快速启动。该镜像集成了所有需要的组件,可以使用外置 Database 和 Redis
|
||||
|
||||
Tips: 不建议在生产中使用
|
||||
|
||||
|
@ -11,7 +11,7 @@ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_
|
|||
|
||||
快速启动
|
||||
```````````````
|
||||
使用root命令行输入::
|
||||
使用 root 命令行输入::
|
||||
|
||||
$ docker run -d -p 8080:80 -p 2222:2222 registry.jumpserver.org/public/jumpserver:latest
|
||||
|
||||
|
@ -20,7 +20,7 @@ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_
|
|||
|
||||
浏览器访问: http://localhost:8080
|
||||
|
||||
ssh访问: ssh -p 2222 localhost
|
||||
SSH访问: ssh -p 2222 localhost
|
||||
|
||||
|
||||
额外环境变量
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
--------------------------
|
||||
|
||||
环境
|
||||
~~~~
|
||||
~~~~~~~
|
||||
|
||||
- 系统: CentOS 7
|
||||
- IP: 192.168.244.144
|
||||
- 关闭 selinux和防火墙
|
||||
- 关闭 selinux 和防火墙
|
||||
|
||||
::
|
||||
|
||||
|
@ -19,8 +19,8 @@
|
|||
$ setenforce 0
|
||||
$ service iptables stop
|
||||
|
||||
一. 准备Python3和Python虚拟环境
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
一. 准备 Python3 和 Python 虚拟环境
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**1.1 安装依赖包**
|
||||
|
||||
|
@ -36,10 +36,9 @@
|
|||
$ tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
|
||||
$ ./configure && make && make install
|
||||
|
||||
**1.3 建立python虚拟环境**
|
||||
**1.3 建立 Python 虚拟环境**
|
||||
|
||||
因为CentOS
|
||||
6/7自带的是Python2,而Yum等工具依赖原来的Python,为了不扰乱原来的环境我们来使用Python虚拟环境
|
||||
因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为了不扰乱原来的环境我们来使用 Python 虚拟环境
|
||||
|
||||
::
|
||||
|
||||
|
@ -47,45 +46,44 @@
|
|||
$ python3 -m venv py3
|
||||
$ source /opt/py3/bin/activate
|
||||
|
||||
# 看到下面的提示符代表成功,以后运行jumpserver都要先运行以上source命令,以下所有命令均在该虚拟环境中运行
|
||||
(py3) [root@localhost py3]#
|
||||
# 看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行
|
||||
(py3) [root@localhost py3]
|
||||
|
||||
二. 安装Jumpserver 0.5.0
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
二. 安装 Jumpserver 0.5.0
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**2.1 下载或clone项目**
|
||||
**2.1 下载或 Clone 项目**
|
||||
|
||||
项目提交较多git clone时较大,你可以选择去github项目页面直接下载
|
||||
zip包,我的网速好,我直接clone了
|
||||
项目提交较多 git clone 时较大,你可以选择去 Github 项目页面直接下载zip包。
|
||||
|
||||
::
|
||||
|
||||
$ cd /opt/
|
||||
$ git clone --depth=1 https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
|
||||
|
||||
**2.2 安装依赖rpm包**
|
||||
**2.2 安装依赖 RPM 包**
|
||||
|
||||
::
|
||||
|
||||
$ cd /opt/jumpserver/requirements
|
||||
$ yum -y install $(cat rpm_requirements.txt) # 如果没有任何报错请继续
|
||||
|
||||
**2.3 安装python库依赖**
|
||||
**2.3 安装 Python 库依赖**
|
||||
|
||||
::
|
||||
|
||||
$ pip install -r requirements.txt # 不要指定-i参数,因为镜像上可能没有最新的包,如果没有任何报错请继续
|
||||
|
||||
**2.4 安装Redis, jumpserver使用redis做cache和celery broker**
|
||||
**2.4 安装 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke**
|
||||
|
||||
::
|
||||
|
||||
$ yum -y install redis
|
||||
$ service redis start
|
||||
|
||||
**2.5 安装MySQL**
|
||||
**2.5 安装 MySQL**
|
||||
|
||||
本教程使用mysql作为数据库,如果不使用mysql可以跳过相关mysql安装和配置
|
||||
本教程使用 Mysql 作为数据库,如果不使用 Mysql 可以跳过相关 Mysql 安装和配置
|
||||
|
||||
::
|
||||
|
||||
|
@ -97,7 +95,7 @@ zip包,我的网速好,我直接clone了
|
|||
$ yum -y install mysql mysql-devel mysql-server
|
||||
$ service mysqld start
|
||||
|
||||
**2.6 创建数据库 jumpserver并授权**
|
||||
**2.6 创建数据库 Jumpserver 并授权**
|
||||
|
||||
::
|
||||
|
||||
|
@ -105,7 +103,7 @@ zip包,我的网速好,我直接clone了
|
|||
> create database jumpserver default charset 'utf8';
|
||||
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'somepassword';
|
||||
|
||||
**2.7 修改jumpserver配置文件**
|
||||
**2.7 修改 Jumpserver 配置文件**
|
||||
|
||||
::
|
||||
|
||||
|
@ -113,9 +111,7 @@ zip包,我的网速好,我直接clone了
|
|||
$ cp config_example.py config.py
|
||||
$ vi config.py # 我们计划修改 DevelopmentConfig中的配置,因为默认jumpserver是使用该配置,它继承自Config
|
||||
|
||||
**注意: 配置文件是python格式,不要用tab,而要用空格** **注意:
|
||||
配置文件是python格式,不要用tab,而要用空格** **注意:
|
||||
配置文件是python格式,不要用tab,而要用空格**
|
||||
**注意: 配置文件是 Python 格式,不要用 TAB,而要用空格**
|
||||
|
||||
::
|
||||
|
||||
|
@ -139,7 +135,7 @@ zip包,我的网速好,我直接clone了
|
|||
$ cd /opt/jumpserver/utils
|
||||
$ bash make_migrations.sh
|
||||
|
||||
**2.9 运行Jumpserver**
|
||||
**2.9 运行 Jumpserver**
|
||||
|
||||
::
|
||||
|
||||
|
@ -147,14 +143,14 @@ zip包,我的网速好,我直接clone了
|
|||
$ python run_server.py all
|
||||
|
||||
运行不报错,请浏览器访问 http://192.168.244.144:8080/
|
||||
(这里只是jumpserver, 没有web terminal,所以访问web terminal会报错)
|
||||
(这里只是 Jumpserver, 没有 Web Terminal,所以访问 Web Terminal 会报错)
|
||||
|
||||
账号:admin 密码: admin
|
||||
账号: admin 密码: admin
|
||||
|
||||
三. 安装 SSH Server和Web Socket Server: Coco
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
三. 安装 SSH Server 和 WebSocket Server: Coco
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**3.1 下载clone项目**
|
||||
**3.1 下载或 Clone 项目**
|
||||
|
||||
新开一个终端,连接测试机,别忘了 source /opt/py3/bin/activate
|
||||
|
||||
|
@ -167,7 +163,9 @@ zip包,我的网速好,我直接clone了
|
|||
|
||||
::
|
||||
|
||||
$ cd /opt/coco/requirements $ yum -y install $(cat rpm_requirements.txt) $ pip install requirements.txt
|
||||
$ cd /opt/coco/requirements
|
||||
$ yum -y install $(cat rpm_requirements.txt)
|
||||
$ pip install requirements.txt
|
||||
|
||||
|
||||
**3.2 安装依赖**
|
||||
|
@ -186,8 +184,7 @@ zip包,我的网速好,我直接clone了
|
|||
$ cp conf_example.py conf.py
|
||||
$ python run_server.py
|
||||
|
||||
这时需要去
|
||||
jumpserver管理后台-会话管理-终端管理(http://192.168.244.144:8080/terminal/terminal/)接受coco的注册
|
||||
这时需要去 Jumpserver 管理后台-会话管理-终端管理(http://192.168.244.144:8080/terminal/terminal/)接受 Coco 的注册
|
||||
|
||||
::
|
||||
|
||||
|
@ -202,21 +199,19 @@ jumpserver管理后台-会话管理-终端管理(http://192.168.244.144:8080/ter
|
|||
$ ssh -p2222 admin@192.168.244.144
|
||||
密码: admin
|
||||
|
||||
如果是用在windows下,Xshell terminal登录语法如下
|
||||
如果是用在 Windows 下,Xshell Terminal 登录语法如下
|
||||
$ssh admin@192.168.244.144 2222
|
||||
密码: admin
|
||||
如果能登陆代表部署成功
|
||||
|
||||
四. 安装 Web Terminal 前端: Luna
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Luna已改为纯前端,需要nginx来运行访问
|
||||
Luna 已改为纯前端,需要 Nginx 来运行访问
|
||||
|
||||
下载 release包,直接解压,不需要编译
|
||||
访问(https://github.com/jumpserver/luna/releases)下载对应 release 包,直接解压,不需要编译
|
||||
|
||||
访问 https://github.com/jumpserver/luna/releases,下载对应release包
|
||||
|
||||
4.1 解压luna
|
||||
4.1 解压 Luna
|
||||
|
||||
::
|
||||
|
||||
|
@ -227,10 +222,10 @@ Luna已改为纯前端,需要nginx来运行访问
|
|||
$ ls /opt/luna
|
||||
...
|
||||
|
||||
五. 安装Windows支持组件
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
五. 安装 Windows 支持组件
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
因为手动安装 guacamole 组件比较复杂,这里提供打包好的docker使用, 启动 guacamole
|
||||
因为手动安装 guacamole 组件比较复杂,这里提供打包好的 docker 使用, 启动 guacamole
|
||||
|
||||
.. code:: shell
|
||||
|
||||
|
@ -239,16 +234,16 @@ Luna已改为纯前端,需要nginx来运行访问
|
|||
docker run -d \
|
||||
-p 8081:8080 \
|
||||
-e JUMPSERVER_SERVER=http://<填写本机的IP地址>:8080 \
|
||||
jumpserver/guacamole
|
||||
registry.jumpserver.org/public/guacamole:latest
|
||||
|
||||
这里所需要注意的是guacamole暴露出来的端口是8081,若与主机上其他端口冲突请自定义一下。
|
||||
这里所需要注意的是 guacamole 暴露出来的端口是 8081,若与主机上其他端口冲突请自定义一下。
|
||||
|
||||
修改JUMPSERVER_SERVER的配置,填上jumpserver的内网地址
|
||||
修改 JUMPSERVER SERVER 的配置,填上 Jumpserver 的内网地址
|
||||
|
||||
六. 配置 nginx 整合各组件
|
||||
六. 配置 Nginx 整合各组件
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
6.1 安装nginx 根据喜好选择安装方式和版本
|
||||
6.1 安装 Nginx 根据喜好选择安装方式和版本
|
||||
|
||||
6.2 配置文件
|
||||
|
||||
|
@ -298,6 +293,6 @@ Luna已改为纯前端,需要nginx来运行访问
|
|||
}
|
||||
}
|
||||
|
||||
6.3 运行 nginx
|
||||
6.3 运行 Nginx
|
||||
|
||||
6.4 访问 http://192.168.244.144
|
|
@ -1,18 +1,18 @@
|
|||
升级
|
||||
----
|
||||
|
||||
1. 升级 jumpserver
|
||||
1. 升级 Jumpserver
|
||||
|
||||
::
|
||||
|
||||
$ git pull && pip install -r requirements/requirements.txt && cd utils && sh make_migrations.sh
|
||||
|
||||
2. 升级 coco
|
||||
2. 升级 Coco
|
||||
|
||||
::
|
||||
|
||||
$ git pull && cd requirements && pip install -r requirements.txt # 不要指定 -i参数
|
||||
|
||||
3. 升级 luna
|
||||
3. 升级 Luna
|
||||
|
||||
重新下载release包
|
||||
重新下载 release 包(https://github.com/jumpserver/luna/releases)
|
Loading…
Reference in New Issue