只翻译了部分常用的,更详细的请看官方文档

jsPlumb 是一个在元素之间创建可视化连接的 js 库,并内置拖拽功能,兼容 IE9+(最后一个兼容 IE8 的版本是 1.7.10)

对外接口

jsPlumb

创建实例

1
var myInstance = jsPlumb.getInstance(options)

options

注:jsPlumb.getInstance(options) 中使用(创建实例)时,首字母大写,其他地方使用首字母小写

Anchor / Anchors

锚点(用来放置连接点的地方)位置参数,单个用 Anchor,多个用 Anchors

内置连接点位置方向定义

String

  • Bottom: 底边中间,方向朝下,BottomCenter 的替代者
  • Top: 顶边中间,方向朝上,TopCenter 的替代者
  • Left: 左边中间,方向朝左,LeftMiddle 的替代者
  • Right: 右边中间,方向朝右,RightMiddle 的替代者
  • BottomLeft: 左下角,方向朝左下
  • BottomRight: 右下角,方向朝右下
  • TopLeft: 左上角,方向朝左上
  • TopRight: 右上角,方向朝右上
  • Center: 元素中心,方向任意
  • AutoDefault: 根据连线终点位置,自动从 Top, Right, Bottom, Left 中选择
  • Continuous: 类似 AutoDefault待研究
  • ContinuousBottom: 类似 Bottom待研究
  • ContinuousTop: 类似 Top待研究
  • ContinuousLeft: 类似 Left待研究
  • ContinuousRight: 类似 Right待研究
  • Perimeter: 跟踪某些形状周长的锚点,用给定的锚点位置去逼近它,待研究

自定义连接点位置方向定义

Array

[x, y, dx, dy, ox, oy]

  • x, y: 位置,基于元素左上角(x 轴朝右,y 轴朝下),(1, 1) 就是右下角,必需
  • dx, dy: 方向,基于元素中心(x 轴朝右,y 轴朝下),(0, -1) 向上,(0, 1) 向下,(1, 0) 向右,(-1, 0) 向左,(0, 0) 任意,不传就是 (0, 0)。其他方向基本不用
  • ox, oy: 位置偏移,基于元素左上角(x 轴朝右,y 轴朝下),单位为 px,不传就是 (0, 0)

使用示例:

1
2
3
4
5
Anchor: 'Bottom'

// or

Anchors: ['Bottom', 'Left', [1, 0.3, 1, 0]]

Overlays

连接点和连接线上的标签,有四种:

  • Arrow: 尾部缩进的箭头,有以下属性:
    • width: Number 箭头宽度,默认 20
    • length: Number 箭头长度,默认 20
    • location: Number 在线条上的位置,0 在起点,1 在终点,默认 0.5
    • direction: Number 方向,从起点指向终点为 1,反之为 -1
    • foldback: Number 箭头尾部缩进程度,设置为 1 则尾部不缩进,小于 1 向内缩进,大于 1 向外突出,小于等于 0 取默认值。 默认 0.623
    • paintStyle: Object 箭头绘制样式配置,也就是 svg 相关属性
    • visible: Boolean 是否可见,默认 true
  • Diamond: 菱形,这是 Arrow 的一个特殊实例,Arrowfoldback 配置为 2 就变成了菱形
  • PlainArrow: 三角形,这是 Arrow 的一个特殊实例,Arrowfoldback 配置为 1 就变成了三角形
  • Label: 文本标签,有以下属性:
    • label: String 文本值
    • location: Number 在线条上的位置,0 在起点,1 在终点,默认 0.5
    • cssClass: String 样式类
    • visible: Boolean 是否可见,默认 true
    • labelStyle: Object css 样式
      • font: String 字体
      • color: String 颜色
      • fill: String 背景
      • borderStyle: String 边框颜色
      • borderWidth: String 边框宽度
      • padding: String 内填充

使用方式(可多个标签一起使用):

  • 使用默认配置可简写为:
1
overlays: ['Arrow']
  • 要调整配置则需写为:
1
overlays: [['Arrow', { width: 30 }]]
  • 多个一起用:
1
overlays: [['Arrow', { location: 0.7 }], 'Diamond', ['Arrow', { location: 0.3, direction: -1 }]]
  • 多个一起用时可抽取公共配置:
1
2
3
4
5
var arrowCommon = { foldback: 0.7, fill: color, width: 14 };

...
overlays: [['Arrow', { location: 0.7 }, arrowCommon], ['Arrow', { location: 0.3, direction: -1 }, arrowCommon]]
...

Endpoint / Endpoints

String,连接点类型,可用类型如下:

  • Dot: 圆
  • Rectangle: 矩形
  • Triangle: 三角形
  • Image: 图片
  • Blank: 空

EndpointOverlays

连接点标签,主要是文本,参考Overlays 的 Label 类型

EndpointStyle / EndpointStyles

Object | Array,连接点样式,有以下属性(svg 有的属性基本都有):

  • stroke: 边线颜色
  • strokeWidth: 边线宽度
  • fill: 填充颜色
  • radius: 半径,Dot 专用,默认 10
  • width: 宽度,Rectangle、Triangle 可用,默认分别为:20、55
  • height: 高度,Rectangle、Triangle 可用,默认分别为:20、55
  • src: 图片路径,Image 必选

EndpointHoverStyle / EndpointHoverStyles

连接点 hover 样式,同EndpointStyle / EndpointStyles

PaintStyle

连接线样式,可用属性参考EndpointStyle

HoverPaintStyle

连接线 hover 样式,可用属性参考EndpointStyle

Connector

连接线类型,默认 Bezier

  • Straight: 直线连接,可用属性:
    • stub: Integer | Array 连线两端短截线的最小长度。Integer–为连接的两端赋予同样的值,[Integer, Integer]–分别为起点、终点赋值,默认 0
    • gap: Integer | Array 连线两端和端点(endpoint)所在的元素之间的间隙,与 stub,可以一起赋值也可以分别赋值,默认 0
  • Flowchart: 折线连接,可用属性:
    • stub: Integer | Array 连线两端短截线的最小长度。Integer–为连接的两端赋予同样的值,[Integer, Integer]–分别为起点、终点赋值,默认 30
    • gap: Integer | Array 连线两端和端点(endpoint)所在的元素之间的间隙,与 stub,可以一起赋值也可以分别赋值,默认 0
    • cornerRadius: Number 连线转向处的圆角,默认 0
    • alwaysRespectStubs: Boolean true–固定短截线长度;false–当两个元件彼此非常接近(小于两个短截线的总和),则调整短截线。默认 false
    • midpoint: Number 设置连线的中点位置,默认 0.5
  • Bezier: Bezier 曲线连接,可用属性:
    • curviness: Number 曲率,值越大,弯曲程度越大,默认 150
    • stub: Integer | Array 连线两端短截线的最小长度。Integer–为连接的两端赋予同样的值,[Integer, Integer]–分别为起点、终点赋值,默认 0(实际使用没发现有什么用)
  • StateMachine: 二次 Bezier 曲线连接,可用属性:
    • curviness: Number 曲率,值越大,弯曲程度越大,默认 10
    • margin: Integer 连线两端和端点(endpoint)所在的元素之间的间隙,默认 5
    • proximityLimit: Integer 当两个元素之间的距离小于给定距离时,曲线变直线,默认 80
    • showLoopback: Boolean 同一个元素的不同端点间连接类型:true–形成回环(一个圆,起点就是终点),false–与其他一样。默认 true
    • loopbackRadius: Integer 回环半径,showLoopback 为 true 时有效,默认 25

使用例子:

1
2
3
4
5
// 使用默认配置
Connector: 'Flowchart'

// 使用自定义配置
Connector: ['Flowchart', { stub: [10, 20], gap: 10, cornerRadius: 5 }]

ConnectionOverlays

连接线上的标签,可用属性同Overlays

ConnectionsDetachable

Boolean

连接是否可拆卸(使用鼠标),默认 true

ReattachConnections

Boolean

是否重新连接用户已使用鼠标分离然后删除的连接。 默认值为 false

Container

String

容器选择器,指定 jsPlumb 的作用区

DoNotThrowErrors

Boolean

是否在用户指定未知锚点,端点或连接器类型时抛出错误。默认 false

LogEnabled

Boolean

是否启用 jsPlumb 日志。 默认为 false

MaxConnections

Number

端点的默认最大连接数。 默认为 1

Scope

String

待研究 默认为 _jsPlumb_Default_Scope

DragOptions / DropOptions

Object

拖放配置,待研究,在 connect makeTarget addEndpoint 方法中用到

方法

addEndpoint(id, params, referenceParams)

将端点添加到给定元素

  • id: String | Element 作用节点 id 选择器或 DOM
  • params: Object 配置,可用属性如下:
    • anchor: String | Array 锚点(连接点位置)配置,参考AnchorsString 用的是内置的或者自行注册的,Array 用的是具体的配置,如 [x, y, dx, dy, ox, oy]
    • endpoint: String,连接点类型,可用类型如下:
      • Dot: 圆
      • Rectangle: 矩形
      • Triangle: 三角形
      • Image: 图片
      • Blank: 空
    • paintStyle: Object,连接点样式,有以下属性(svg 有的属性基本都有):
      • stroke: 边线颜色
      • strokeWidth: 边线宽度
      • fill: 填充颜色
      • radius: 半径,Dot 专用,默认 10
      • width: 宽度,Rectangle、Triangle 可用,默认分别为:20、55
      • height: 高度,Rectangle、Triangle 可用,默认分别为:20、55
      • src: 图片路径,Image 必选
    • hoverPaintStyle: 连接点 hover 样式,同 paintStyle
    • cssClass / hoverClass: 样式类及 hover 样式类
    • enabled: Boolean 是否响应鼠标事件(drag / drop),默认 true
    • source: String | Element 选择器或节点,用来指定作用节点,必需
    • container: 同Container
    • isSource: Boolean,设为 true 标记为起点,默认 false
    • isTarget: Boolean,设为 true 标记为终点,默认 false
    • hoverPaintStyle: Object,连接点 hover 时的样式,属性同 paintStyle
    • connector: Array,连接线配置,起点可用
    • connectorStyle: Object,连接线的样式,起点可用,有以下属性(svg 有的属性基本都有):
      • stroke: 线颜色
      • strokeWidth: 线宽度
      • joinstyle: ‘round’, 不明作用
      • outlineStroke: 线边缘颜色
      • outlineWidth: 线边缘宽度
      • stroke-dasharray: 虚线配置
      • dashstyle: 同 stroke-dasharray
    • connectorHoverStyle: Object,连接线 hover 时的样式,属性同 connectorStyle,起点可用
    • cssClass: String 附加到 Endpoint 创建的元素的 CSS 类
    • hoverClass: String 当鼠标悬停在元素或连接的线上时附加到 EndPoint 创建的元素
  • referenceParams: Object 共享配置(我们可以把多个 Endpoint 共用部分抽出来放在这里),可用属性同 params

addEndpoints(id, params, referenceParams)

将端点列表添加到给定元素,与 addEndpoint 别在于第二个参数是个数组,也就是多个端点配置

batch(fn, doNotRepaintAfterwards)

暂停绘图,运行给定的函数,然后重新启用绘图,doWhileSuspended 方法的替代者,jsPlumb 的大部分操作都要求放入 fn 中进行

  • fn: Function,给定函数
  • doNotRepaintAfterwards: Boolean,如果传 true,则在运行给定的函数后不会运行重绘

bind(event, callback, insertAtStart)

绑定事件

  • event: String 事件类型:
    • click: 连线点击事件
    • connection: 连接事件
    • beforeDetach: 连接断开前事件
    • connectionDetached: 连接断开事件
    • connectionDrag: 连线开始拖拽事件(端点)
    • connectionDragStop: 连线拖拽结束事件(端点)
    • connectionMoved: 连线更换端点事件
    • 更多类型待研究
  • callback: Function 事件回调,具体传参自行研究
  • insertAtStart: 是否置顶此事件(在其它已注册事件之前触发),默认 false选填

cleanupListeners()

移除所有事件

registerConnectionType(id, options)

注册连接类型

  • id: String, 连接类型的 id,确保唯一,切换类型时用到
  • options: Object, 类型配置
    • connector: String, 四个取值:Straight–直线连接,Flowchart–折线连接,Bezier–Bezier 曲线连接,StateMachine–二次 Bezier 曲线连接
    • paintStyle: Object, 样式
    • hoverPaintStyle: Obejct, hover 时的样式
    • overlays: Array

connect(params, referenceParams)

连接端点

  • params: Object,有以下属性
    • source: String | Object,起点,可以是选择器或节点,也可以是 Endpoint
    • target: String | Object,终点,可以是选择器或节点,也可以是 Endpoint
    • uuids: Array[source, target],source 和 target 的合体
    • type: String,自定义的类型(通过registerConnectionType(id, options)注册的)
    • connector: String,连接类型,参考Connector
    • editable: Boolean,是否可拆卸(用鼠标),默认 true
    • 连线的相关配置都可以在此使用(比如 overlays)

deleteConnection(connection)

删除指定连接,connection 可通过 getAllConnections / getConnections 方法获取

deleteEndpoint(endpoint, doNotRepaintAfterwards)

删除端点,同时会删除其连线

  • endpoint: String,端点 uuid 或 Endpoint(可通过 getEndpoint 方法获取)
  • doNotRepaintAfterwards: Boolean,是否重新绘制所有内容,默认 false选填

draggable(selector, options)

添加拖动功能

  • selector: 需要添加拖动的元素选择器,也就是流程图的块,可以是 DOM 列表或选择器:
    • Array: jsPlumb.getSelector('.draw-canvas .item')document.querySelectorAll('.draw-canvas .item')
    • String: '.draw-canvas .item'
  • options: Object,拖动配置,不配置就使用全局配置(jsPlumb.getInstance({DragOptions: options})),参考 jQuery-ui 的 draggable,下面列出一些常用的:
    • grid: Array, 位置对齐参数:[x, y],越小拖动越平滑,如:[1, 1]
    • containment: String,约束在指定元素或区域的边界内拖拽(支持更多类型,这里不在多列举,具体参考 jQuery-ui 的 draggable)
    • stop: Function,结束拖拽的回调
      1
      2
      3
      4
      stop: function(event) {
      // event.el 拖动元素
      // event.finalPos 结束时的位置,[x, y]
      }

getAllConnections()

获取所有连接

getConnections(params)

用法不明,请使用 getAllConnections

getContainer()

获取容器节点

getDefaultScope()

获取默认 scope

getEndpoint(uuid)

根据 uuid 获取 Endpoint

getInstance(options)

创建实例

makeSource(el, params)

将指定的 DOM 元素创建成为连接源,允许从它/它们拖动连接,而无需事先注册任何端点。建立连接后,传入此方法的端点配置将用于创建端点(如果未提供,则将使用默认端点配置)

  • el: String | Element,选择器或 DOM
  • params: Object,创建配置,有以下属性:
    • endpoint: String | Array,端点配置
    • parent: String | Element,选择器或 DOM。建立连接时添加端点的元素,如果省略,端点将被添加到el
    • scope: String,从此元素出发的连接线的连接的范围
    • dragOptions: Object,拖动配置
    • … 更多配置待研究

makeTarget(el, params)

将指定的 DOM 元素创建成为连接目标,而无需事先注册任何端点。建立连接后,传入此方法的端点配置将用于创建端点(如果未提供,则将使用默认端点配置)

  • el: String | Element,选择器或 DOM
  • params: Object,创建配置,有以下属性:
    • endpoint: String | Array,端点配置
    • parent: String | Element,选择器或 DOM。建立连接时添加端点的元素,如果省略,端点将被添加到el
    • scope: String,从此元素出发的连接线的连接的范围
    • dragOptions: Object,拖动配置
    • … 更多配置待研究

toggleVisible(el)

显示/隐藏指定节点的连线

  • el: String | Element,选择器或 DOM

toggleDraggable(el)

切换指定节点的可拖拽状态

  • el: String | Element,选择器或 DOM

removeAllEndpoints(el)

移除指定节点的所有端点

  • el: String | Element,选择器或 DOM

remove(el)

移除指定节点及其所有端点、连线,当然也包括子节点

  • el: String | Element,选择器或 DOM

empty(el)

清空指定元素:属于子元素的所有端点和连接,以及子元素本身,保留属于元素本身的端点和连接。

  • el: String | Element 选择器或节点

reset(doNotUnbindInstanceEventListeners)

清空所有端点、连接及事件。

  • doNotUnbindInstanceEventListeners: Boolean 若设为 true,事件绑定不会被移除

如果 Nginx 每次使用都需要手动启动确实很麻烦,所以最好将其设置为 Windows 系统服务,开机自启动就行了。

下载运行环境支持程序

下载最新的 Windows Service Wrapper ,下载的文件是 .nupkg 格式,可通过 NuGet 的 Explorer 导出,得到的文件有 .NET2.0 和 .NET4.0 两个版本,按电脑所装的 .net framework 版本选择,我们可以重命名文件,比如:nginxservice.exe,但 exe 文件和 xml 文件必须同名,将这两个文件放在 nginx.exe 所在目录下。这两个文件也可以在这里找到

修改 xml 文件中的配置项

仅修改路径为 nginx 的路径,如我的 nginx 路径为 D:\tools\nginx-1.13.2,那么配置文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<executable>D:\tools\nginx-1.13.2\nginx.exe</executable>
<logpath>D:\tools\nginx-1.13.2\logs</logpath>
<logmode>roll</logmode>
<depend></depend>
<startargument>-p</startargument>
<startargument>D:\tools\nginx-1.13.2</startargument>
<stopexecutable>D:\tools\nginx-1.13.2\nginx.exe</stopexecutable>
<stopargument>-p</stopargument>
<stopargument>D:\tools\nginx-1.13.2</stopargument>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
</service>

安装程序设置为 Windows 服务操作

通过 cmd 安装,进入 nginx.exe 所在目录,执行以下命令

1
nginxservice.exe install

安装完成后,通过“计算机”->”管理”->”服务”可以找到 nginx 服务

本文翻译自: https://stackoverflow.com/questions/10061191/add-nginx-exe-as-windows-system-service-like-apache/13875396#13875396

准备工作

  • 事先装好 vim 是明智的选择
  • 很多包都依赖ruby,先安装好少踩坑:sudo apt-get install ruby
    并且改变 gems 和 bundler 默认源
    1
    2
    gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/
    bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems
  • 利用清华大学镜像更新 /etc/apt/sources.list,避免初相“无法定位软件包”的问题

安装 gitlab

步骤

安装依赖包

1
2
3
4
sudo apt-get install curl openssh-server ca-certificates

# 如需使用 postfix 就安装,我使用的是 smtp 服务,故没有装
# sudo apt-get install postfix

注:执行完成后,出现邮件配置,按需选择

安装 gitlab-ce

官方的建议是使用脚本直接执行安装

1
2
3
sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# 加上 = 及后面的版本号是为了安装指定版本
sudo apt-get install gitlab-ce=10.1.1-ce.0
若官方版不行,利用[清华大学镜像](https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/)来进行主程序的安装
  • 首先信任 GitLab 的 GPG 公钥

    1
    curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
  • 使用root用户修改配置文件

    1
    vi /etc/apt/sources.list.d/gitlab-ce.list

    添加内容: deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main

  • 安装 gitlab-ce

    1
    2
    3
    4
    sudo apt-get update

    # 下面的 ip 为本机 ip 或指向本机 ip 的域名,可以带端口
    sudo EXTERNAL_URL="https://10.10.28.100" apt-get install gitlab-ce

修改相关配置

1
sudo vim /etc/gitlab/gitlab.rb

其他的基本上不需要修改,主要是配置邮件(阿里云企业邮箱为例,yourdomain 表示你的企业邮箱域名, yourname 表示你的邮箱名)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 邮箱设置

gitlab_rails['gitlab_email_enabled'] = true # 是否开启系统邮箱,默认开启
gitlab_rails['gitlab_email_from'] = 'yourname@yourdomain.com' # 系统邮箱发件人
gitlab_rails['gitlab_email_display_name'] = 'Gitlab' # 显示的发件人名称,默认GitLab
gitlab_rails['gitlab_email_reply_to'] = 'yourname@yourdomain.com' # 收件邮箱
gitlab_rails['gitlab_email_subject_suffix'] = 'gitlab' # 邮件标题后缀


gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yourdomain.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "yourname@yourdomain.com"
gitlab_rails['smtp_password'] = "your password" # 就是邮箱密码
gitlab_rails['smtp_domain'] = "smtp.yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true


gitlab_rails['smtp_openssl_verify_mode'] = 'none'

启动sshd和postfix服务

1
2
3
4
sudo service sshd start

# 使用 smtp 服务发邮件就可跳过这一步
# sudo service postfix start

添加防火墙规则

这里使用的是80端口,可以是其他端口

1
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

重新配置并启动各项服务

1
sudo gitlab-ctl reconfigure

检查GitLab是否安装好并且已经正确运行

1
sudo gitlab-ctl status

如果得到类似下面的结果,则说明GitLab运行正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
run: alertmanager: (pid 18343) 15s; run: log: (pid 18080) 28s
run: gitaly: (pid 18152) 18s; run: log: (pid 17353) 95s
run: gitlab-monitor: (pid 18212) 17s; run: log: (pid 17953) 42s
run: gitlab-workhorse: (pid 18185) 17s; run: log: (pid 17717) 60s
run: logrotate: (pid 17831) 53s; run: log: (pid 17876) 52s
run: nginx: (pid 17720) 59s; run: log: (pid 17780) 56s
run: node-exporter: (pid 18200) 17s; run: log: (pid 17916) 48s
run: postgres-exporter: (pid 18362) 15s; run: log: (pid 18118) 24s
run: postgresql: (pid 17359) 90s; run: log: (pid 17521) 87s
run: prometheus: (pid 18313) 16s; run: log: (pid 18030) 34s
run: redis: (pid 17148) 97s; run: log: (pid 17184) 96s
run: redis-exporter: (pid 18300) 16s; run: log: (pid 17985) 38s
run: sidekiq: (pid 17651) 67s; run: log: (pid 17682) 64s
run: unicorn: (pid 17599) 69s; run: log: (pid 17648) 68s

浏览web页面并设置密码

访问https://10.10.28.100/ (ip为你设置的那个)

  • 帐号: root
  • 密码:5iveL!fe

测试邮件发送功能

1
2
3
4
sudo gitlab-rails console

# 进入控制台,然后发送邮件
Notify.test_email('xxxx@xxx.com', '邮件标题', '邮件正文').deliver_now

一般来说,若出现类似如下结果,则说明配置成功,可以去查看有没有收到邮件

若是报错: EOFError: end of file reached,基本上是因为配置端口和是否使用 ssl 配置不匹配导致的:

  • 使用25端口, 就不要配置 ssl 相关项目
  • 使用465,应该将以下设置好
    1
    2
    3
    4
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = true

    gitlab_rails['smtp_openssl_verify_mode'] = 'none'

设置开机启动

1
2
3
4
5
# 开机启动
sudo systemctl enable gitlab-runsvdir.service

# 禁止开机启动
sudo systemctl disable gitlab-runsvdir.service
汉化(仅供参考)

汉化法一

注意版本号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git clone https://gitlab.com/xhang/gitlab.git
cd gitlab/
git fetch

gitlab-ctl stop

git diff origin/10-2-stable origin/10-2-stable-zh > /tmp/10.2.diff
cd /opt/gitlab/embedded/service/gitlab-rails
git apply /tmp/10.2.diff
patch -d/opt/gitlab/embedded/service/gitlab-rails -p1 < 10.2.diff

gitlab-ctl reconfigure

gitlab-ctl start

汉化法二

进入gitlab-rails目录

1
cd /opt/gitlab/embedded/service/
  1. 下载社区提供的汉化包,在 https://gitlab.com/xhang/gitlab/ 中找到相应的汉化分支。
    1
    sudo wget -cO gitlab-10.1_zh.tar.gz https://gitlab.com/xhang/gitlab/repository/archive.tar.gz?ref=10-1-stable-zh
  2. 解压包
    1
    sudo tar -zxvf gitlab-10.1_zh.tar.gz
  3. 停止 GitLab 服务
    1
    sudo gitlab-ctl stop
  4. 备份 gitlab-rails 目录,该目录下主要是web应用部分,也是当前项目仓库的起始版本,也是汉化包要覆盖的目录。
    1
    sudo tar -zcvf /opt/gitlab/embedded/service/gitlab-rails-bak.tar.gz gitlab-rails
  5. 将解压后的汉化补丁覆盖原来的
    1
    sudo cp -rf gitlab-10-1-stable-zh/* gitlab-rails/
  6. 启动服务
    1
    sudo gitlab-ctl start
  7. 重新执行配置命令
    1
    sudo gitlab-ctl reconfigure

常用 gitlab 命令

  • 重新配置:gitlab-ctl reconfigure
  • 启动:gitlab-ctl start
  • 重新启动:gitlab-ctl restart
  • 停止:gitlab-ctl stop
  • 查看状态:gitlab-ctl status
  • 实时日志查看:gitlab-ctl tail
  • 检查报错:gitlab-rake gitlab:check

完全卸载删除 gitlab

  1. 停止 gitlab

    1
    gitlab-ctl stop
  2. 卸载 gitlab(注意这里写的是 gitlab-ce)

    1
    2
    3
    4
    5
    # Debian/Ubuntu
    sudo dpkg -r gitlab-ce

    # Redhat/Centos
    rpm -e gitlab-ce
  3. 查看 gitlab 进程

    1
    ps aux | grep gitlab
  4. 杀掉第一个进程(就是带有好多………….的进程,18777 是进程 id)

    1
    kill -9 18777

    杀掉后,在 ps aux | grep gitlab 确认一遍,还有没有 gitlab 的进程,如有,重复第 4 步

  5. 删除所有包含 gitlab 文件

    1
    find / -name gitlab | xargs rm -rf

常用 Linux 命令

压缩解压缩

  • 压缩:tar -zcvf archive_name.tar.gz directory_to_compress
  • 解压缩到当前目录:tar -zxvf archive_name.tar.gz
  • 解压缩到指定目录:tar -zxvf archive_name.tar.gz -C /tmp/extract_here/

查找内容中带有关键字的文件

  • 在根目录中找:find / -type f -name "*" | xargs grep "keyword"
  • 在当前目录中找:find . -type f -name "*" | xargs grep "keyword"

查看包的版本

  • 查询你的机器安装了哪些版本: dpkg -l '包名'
  • 查询远程库存在哪些版本: apt-cache madison "包名"
  • 安装指定某个版本: sudo apt-get install 包名=版本号

apt-get update相关

  • 忽略指定包:apt-mark hold xxx
  • 取消忽略指定包:apt-mark unhold xxx

tips

linux 使用命令 find / -name *** 查找文件的时候会遇到以下报错

find: '/run/user/1000/gvfs': Permission denied

明明用的是 root 用户,为什么权限不足呢?

官方说这是一个 bug——bug#615848. 原因是 FUSE 文件系统和权限不配的问题,全局搜索时碰到它就会退出报错。

其实这个目录是空的,查不查都没关系。所以,以下解决方式比较简直暴

1
2
3
umount /run/user/1000/gvfs

rm -rf /run/user/1000/gvfs

: 在卸载 gitlab 然后再次安装执行sudo gitlab-ctl reconfigure的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行!

解决方案:

  1. 按住 CTRL+C 强制结束

  2. 运行:sudo systemctl restart gitlab-runsvdir

  3. 再次执行:sudo gitlab-ctl reconfigure

解决方案来源:https://gitlab.com/gitlab-org/omnibus-gitlab/issues/160#note_24078285

或者直接另起一个命令行执行sudo systemctl restart gitlab-runsvdir

参考资料

0%