mirror of https://github.com/jumpserver/jumpserver
[Update] 修改文档
parent
13abd4c751
commit
634b36c74b
|
@ -30,3 +30,4 @@ celerybeat.pid
|
|||
django.db
|
||||
celerybeat-schedule.db
|
||||
data/static
|
||||
_build/
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,3 +1,33 @@
|
|||
联系方式
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
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 (#替换为@)
|
|
@ -1,2 +1,13 @@
|
|||
贡献者
|
||||
++++++++++++++++++++++++
|
||||
++++++++++++++++++++++++
|
||||
|
||||
感谢一下朋友为Jumpserver做出的贡献,世界因你们而不同,排名不分先后
|
||||
|
||||
|
||||
- **小彧 <李磊>** Django资深开发者,为用户模块贡献了很多代码
|
||||
- **sofia <周小侠>** 资深前端工程师, 前端代码贡献者
|
||||
- **liuz <刘正> 全栈工程师** 编写了Web terminal大部分代码
|
||||
- **jiaxiangkong <陈尚委>** Jumpserver测试运营
|
||||
- **halcyon <王墉>** DevOps 资深开发者, 0.3.2 核心开发者之一
|
||||
- **yumaojun03 <喻茂峻>** DevOps 资深开发者,擅长Python, Go以及PAAS平台开发
|
||||
- **kelianchun <柯连春>** DevOps 资产开发者,fix了很多bug
|
|
@ -1,2 +1,12 @@
|
|||
开发指南
|
||||
-------------------
|
||||
开发文档
|
||||
======================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: 开发文档
|
||||
|
||||
api_style_guide
|
||||
python_style_guide
|
||||
project_structure
|
||||
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ Jumpserver 支持容器化部署,windows,LDAP, s3, elasticsearch存储等功
|
|||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:maxdepth: 2
|
||||
:caption: 文档:
|
||||
|
||||
installation
|
||||
|
|
|
@ -6,3 +6,4 @@
|
|||
|
||||
quickstart
|
||||
step_by_step
|
||||
upgrade
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
快速安装
|
||||
==========================
|
||||
|
||||
Jumpserver 封装了一个All in one Docker,可以快速启动。
|
||||
Jumpserver 封装了一个All in one Docker,可以快速启动。该镜像集成了所有需要的组件,可以使用外置db和redis
|
||||
|
||||
Tips: 不建议在生产中使用
|
||||
|
||||
|
||||
Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_
|
||||
|
||||
|
@ -17,4 +20,29 @@ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_
|
|||
|
||||
浏览器访问: 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
|
||||
|
|
|
@ -1,2 +1,294 @@
|
|||
一步一步安装
|
||||
--------------------------
|
||||
|
||||
环境
|
||||
~~~~
|
||||
|
||||
- 系统: 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
|
|
@ -96,7 +96,6 @@
|
|||
</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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
|
|
@ -95,7 +95,6 @@
|
|||
</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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
|
|
@ -96,7 +96,6 @@
|
|||
</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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
|
|
@ -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="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="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 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>
|
||||
</ul>
|
||||
|
||||
|
@ -160,6 +167,28 @@
|
|||
|
||||
<div class="section" id="id1">
|
||||
<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 (#替换为@)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
<link rel="search" title="搜索" href="search.html"/>
|
||||
<link rel="top" title="jumpserver 0.5.0 文档" href="index.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>
|
||||
|
@ -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="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="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"><a class="reference internal" href="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
@ -160,6 +160,16 @@
|
|||
|
||||
<div class="section" id="id1">
|
||||
<h1>贡献者<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h1>
|
||||
<p>感谢一下朋友为Jumpserver做出的贡献,世界因你们而不同,排名不分先后</p>
|
||||
<ul class="simple">
|
||||
<li><strong>小彧 <李磊></strong> Django资深开发者,为用户模块贡献了很多代码</li>
|
||||
<li><strong>sofia <周小侠></strong> 资深前端工程师, 前端代码贡献者</li>
|
||||
<li><strong>liuz <刘正> 全栈工程师</strong> 编写了Web terminal大部分代码</li>
|
||||
<li><strong>jiaxiangkong <陈尚委></strong> Jumpserver测试运营</li>
|
||||
<li><strong>halcyon <王墉></strong> DevOps 资深开发者, 0.3.2 核心开发者之一</li>
|
||||
<li><strong>yumaojun03 <喻茂峻></strong> DevOps 资深开发者,擅长Python, Go以及PAAS平台开发</li>
|
||||
<li><strong>kelianchun <柯连春></strong> DevOps 资产开发者,fix了很多bug</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -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="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>
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>开发指南 — jumpserver 0.5.0 文档</title>
|
||||
<title>开发文档 — jumpserver 0.5.0 文档</title>
|
||||
|
||||
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
|||
href="genindex.html"/>
|
||||
<link rel="search" title="搜索" href="search.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"/>
|
||||
|
||||
|
||||
|
@ -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="admin_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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
@ -139,7 +144,7 @@
|
|||
|
||||
<li><a href="index.html">Docs</a> »</li>
|
||||
|
||||
<li>开发指南</li>
|
||||
<li>开发文档</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
@ -159,7 +164,15 @@
|
|||
<div itemprop="articleBody">
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
@ -172,7 +185,7 @@
|
|||
|
||||
<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>
|
||||
|
|
|
@ -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="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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">FAQ</a></li>
|
||||
|
|
|
@ -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="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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
|
|
@ -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="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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
@ -171,12 +171,33 @@
|
|||
<div class="toctree-wrapper compound">
|
||||
<p class="caption"><span class="caption-text">文档:</span></p>
|
||||
<ul>
|
||||
<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="installation.html">安装文档</a><ul>
|
||||
<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="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="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>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -91,11 +91,12 @@
|
|||
<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="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></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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
@ -168,6 +169,7 @@
|
|||
<ul>
|
||||
<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="upgrade.html">升级</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Binary file not shown.
|
@ -93,6 +93,8 @@
|
|||
<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="#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>
|
||||
</li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="step_by_step.html">一步一步安装</a></li>
|
||||
|
@ -100,7 +102,7 @@
|
|||
</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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
@ -171,7 +173,8 @@
|
|||
|
||||
<div class="section" id="id1">
|
||||
<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>
|
||||
<div class="section" id="id2">
|
||||
<h2>快速启动<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||
|
@ -185,6 +188,29 @@
|
|||
<p>浏览器访问: <a class="reference external" href="http://localhost:8080">http://localhost:8080</a></p>
|
||||
<p>ssh访问: ssh -p 2222 localhost</p>
|
||||
</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>
|
||||
|
||||
|
||||
|
|
|
@ -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="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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -37,7 +37,7 @@
|
|||
<link rel="search" title="搜索" href="search.html"/>
|
||||
<link rel="top" title="jumpserver 0.5.0 文档" href="index.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"/>
|
||||
|
||||
|
||||
|
@ -91,12 +91,22 @@
|
|||
<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 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>
|
||||
</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="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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
@ -167,6 +177,239 @@
|
|||
|
||||
<div class="section" id="id1">
|
||||
<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 && cd Python-3.6.1
|
||||
$ ./configure && make && 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 && cd jumpserver && 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
|
||||
> create database jumpserver default charset 'utf8';
|
||||
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'somepassword';
|
||||
</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">'mysql'</span>
|
||||
<span class="n">DB_HOST</span> <span class="o">=</span> <span class="s1">'127.0.0.1'</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">'jumpserver'</span>
|
||||
<span class="n">DB_PASSWORD</span> <span class="o">=</span> <span class="s1">'somepassword'</span>
|
||||
<span class="n">DB_NAME</span> <span class="o">=</span> <span class="s1">'jumpserver'</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 && cd coco && 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">//<</span><span class="n">jumpserver</span><span class="o">></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 "upgrade";
|
||||
}
|
||||
|
||||
location /guacamole/ {
|
||||
proxy_pass http://<guacamole>: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>
|
||||
|
||||
|
||||
|
@ -179,7 +422,7 @@
|
|||
|
||||
<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>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
href="genindex.html"/>
|
||||
<link rel="search" title="搜索" href="search.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"/>
|
||||
|
||||
|
||||
|
@ -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="admin_guide.html">管理文档</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="contact.html">联系方式</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
|
||||
|
@ -172,7 +171,7 @@
|
|||
|
||||
<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>
|
||||
|
|
|
@ -0,0 +1,166 @@
|
|||
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
|
|
@ -70,6 +70,7 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
|||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
html_show_sourcelink = True
|
||||
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
|
|
@ -1,3 +1,33 @@
|
|||
联系方式
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
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 (#替换为@)
|
|
@ -1,2 +1,13 @@
|
|||
贡献者
|
||||
++++++++++++++++++++++++
|
||||
++++++++++++++++++++++++
|
||||
|
||||
感谢一下朋友为Jumpserver做出的贡献,世界因你们而不同,排名不分先后
|
||||
|
||||
|
||||
- **小彧 <李磊>** Django资深开发者,为用户模块贡献了很多代码
|
||||
- **sofia <周小侠>** 资深前端工程师, 前端代码贡献者
|
||||
- **liuz <刘正> 全栈工程师** 编写了Web terminal大部分代码
|
||||
- **jiaxiangkong <陈尚委>** Jumpserver测试运营
|
||||
- **halcyon <王墉>** DevOps 资深开发者, 0.3.2 核心开发者之一
|
||||
- **yumaojun03 <喻茂峻>** DevOps 资深开发者,擅长Python, Go以及PAAS平台开发
|
||||
- **kelianchun <柯连春>** DevOps 资产开发者,fix了很多bug
|
|
@ -1,2 +1,12 @@
|
|||
开发指南
|
||||
-------------------
|
||||
开发文档
|
||||
======================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: 开发文档
|
||||
|
||||
api_style_guide
|
||||
python_style_guide
|
||||
project_structure
|
||||
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ Jumpserver 支持容器化部署,windows,LDAP, s3, elasticsearch存储等功
|
|||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:maxdepth: 2
|
||||
:caption: 文档:
|
||||
|
||||
installation
|
||||
|
|
|
@ -6,3 +6,4 @@
|
|||
|
||||
quickstart
|
||||
step_by_step
|
||||
upgrade
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
项目骨架
|
||||
--------
|
||||
|
||||
说明如下:
|
||||
|
||||
::
|
||||
|
||||
.
|
||||
├── 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 // 项目模板目录
|
|
@ -0,0 +1,216 @@
|
|||
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)
|
|
@ -20,4 +20,29 @@ Docker 安装见: `Docker官方安装文档 <https://docs.docker.com/install/>`_
|
|||
|
||||
浏览器访问: 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
|
||||
|
|
|
@ -1,2 +1,294 @@
|
|||
一步一步安装
|
||||
--------------------------
|
||||
|
||||
环境
|
||||
~~~~
|
||||
|
||||
- 系统: 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
|
|
@ -0,0 +1,18 @@
|
|||
升级
|
||||
----
|
||||
|
||||
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包
|
Loading…
Reference in New Issue