Clay 的技术空间

用进废退 | 艺不压身

上篇:Jenkins 入门教程之三 Jenkins 与 SVN 持续集成实战

Jenkins+GitHub 持续集成环境的搭建,与 Jenkins+SVN 持续集成环境的搭建很相似,下面只简单介绍 Jenkins+GitHub 的重点内容,额外的操作可参考上一篇文章。

Jenkins+GitHub 持续集成环境搭建要点

  • Jenkins 需要部署到外网上,因为内网地址 GitHub 是无法访问到的,可以租用阿里云等云服务平台
  • Jenkins 所在的主机上需要安装 Git,通过 Git 程序从 GitHub 上 clone 代码
  • 在 Jenkins 内需要指定 Git 程序位置,和指定 JDK、Maven 的位置类似
  • 在 GitHub 上使用 repository 的 WebHook 方式远程触发 Jenkins 构建
  • 在 Jenkins 内关闭 “防止跨站点请求伪造”
阅读全文 »

大纲

线程池的介绍

线程池的作用

  • 限定线程的个数,避免由于线程过多导致系统运行缓慢或崩溃。
  • 线程池不需要每次都去创建或销毁线程,节约了资源。
  • 线程池不需要每次都去创建线程,响应时间更快。

线程池的组成

线程池是一种线程管理的机制,用于提高多线程任务处理的效率和性能。它由线程池管理器、工作队列和一组工作线程组成。

  • 线程池管理器:负责创建、管理和调度线程池中的线程。它根据需要动态地创建或销毁线程,并分配任务给空闲的线程。
  • 工作队列:用于存储待执行的任务。线程池中的线程从工作队列中取出任务进行处理。当工作队列已满时,新提交的任务可能会被拒绝或者等待一段时间。
  • 工作线程:线程池中的实际执行单元。它们循环地从工作队列中取出任务执行,并在任务执行完毕后返回线程池等待下一次任务。
阅读全文 »

前言

Docker 环境下官方提供三种方式安装 Gitlab,第一种是基于 Docker 引擎安装,第二种是集群环境下安装,第三种是通过 Docker-Compose 安装。本文将介绍如何通过 Docker-Compose 安装 Gitlab,如果需要 Docker 官方安装 Gitlab 的教程,可点击这里

安装 Docker

站内教程:Docker 之一 Docker 介绍与安装

安装 Docker-Compose

站内教程:Docker 之十七 Docker-Compose 安装与使用

Gitlab 数据卷挂载介绍

docker-gitlab-volumes

阅读全文 »

相关站点

Harbor 介绍

Harbor 是 VMware 公司开源的一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,以 Docker 开源的 Registry 为基础,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全,提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中,确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Harbor 特性

  • 基于角色的访问控制(Role Based Access Control)
  • 基于策略的镜像复制(Policy based image replication)
  • 镜像的漏洞扫描(Vulnerability Scanning)
  • AD/LDAP 集成(LDAP/AD support)
  • 镜像的删除和空间清理(Image deletion & garbage collection)
  • 友好的管理 UI(Graphical user portal)
  • 审计日志(Audit logging)
  • RESTful API
  • 部署简单(Easy deployment)
    阅读全文 »

创建 Docker 私有仓库

1
2
3
4
5
# 下载Docker官方的registry镜像
# docker pull registry

# 创建并启动registry容器,添加5000端口映射和数据卷,其中/var/lib/registry目录是registry容器存放Docker镜像的位置
# docker run -d -p 5000:5000 --name docker-registry --restart=always -v /container/registry:/var/lib/registry registry

查看私有仓库列表

1
2
3
4
5
6
7
# 使用命令查看私有仓库列表,默认值为:{"repositories":[]}
# curl -X GET http://127.0.0.1:5000/v2/_catalog
{"repositories":["clay-tomcat"]}

# 使用命令查看指定私有仓库的版本列表,clay-tomcat是私有仓库的名称
# curl -X GET http://127.0.0.1:5000/v2/clay-tomcat/tags/list
{"name":"clay-tomcat","tags":["1.0"]}
阅读全文 »

前言

通过 Apache、Subversion 搭建 SVN 服务器,实现使用 HTTP、SVN 协议访问 SVN 仓库,并进行细粒度的权限控制,本教程适用于 Debian/Ubuntu 系统。

系统环境

1
2
3
4
5
6
7
8
# uname -a
# Linux debian 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 GNU/Linux

# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"

安装软件

1
2
3
4
5
6
7
8
9
10
11
# 更新软件索引
# apt-get update

# 安装apache
# apt-get install -y apache2 apache2-utils

# 安装subversion,适用于debian
# apt-get install -y subversion subversion-tools libapache2-mod-svn

# 安装subversion,适用于ubuntu
# apt-get install -y subversion subversion-tools libapache2-mod-svn libapache2-svn
阅读全文 »

上篇:Jenkins 入门教程之二 Jenkins 与 SVN 搭建 CI-CD 环境

下面的实战内容是在上篇内容的基础上进行操作的,为了保证连贯性,建议先将上篇的操作步骤执行完再阅读本篇内容。

通过 Eclipse 创建基于 Maven 的 SpringBoot Web 项目,用于测试 Maven 构建项目

创建 Maven 项目的时候,Archetype 选择”maven-archetype-quickstart”,此 SpringBoot Web 项目不需要 web.xml,只需在 pom.xml 配置文件里指定 packaging 为 war 类型即可。项目内容很简单,访问 JSP 页面直接输出字符串 “hello Jim”。项目源码下载链接已经给出,下载解压后直接导入项目到 Eclipse,执行”spring-boot:run” 命令即可运行项目,浏览器输入以下地址验证是否运行正常:http://127.0.0.1:8080/demo/hello点击下载完整的代码点击下载 SHA256 校验文件

阅读全文 »

系统环境

1
2
CentOS Linux release 7.6.1810 (Core)
Linux centos7.6 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

GIMP 安装

GIMP 算得上是 Linux 系统下的 Photoshop,基于 GTK 编写的图像编辑处理软件,功能非常强大。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装EPEL源
# yum install epel-release

# 查看源
# ls /etc/yum.repos.d/

# 更新源
# yum clean all && yum makecache

# 安装基础依赖包
# yum install aalib aalib-devel libexif-devel libjpeg-devel libpng-devel

# 安装GIMP
# yum install gimp
阅读全文 »

Tomcat8 配置管理用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 编辑Tomcat8对应的配置文件,在<tomcat-users>标签内添加以下内容,配置Tomcat的管理用户
# vim /usr/local/tomcat/conf/tomcat-users.xml
<tomcat-users>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="123456" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>
</tomcat-users>

# 编辑manager项目下的META-INF/context.xml配置文件,将<Valve>标签的内容替换为以下文本
# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

# 编辑host-manager项目下的META-INF/context.xml配置文件,将<Valve>标签的内容替换为以下文本
# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="\d+\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

# 重启Tomcat服务器使配置生效

# 注意:
# 关于如何Tomcat配置管理用户,不同版本的Tomcat配置方法有差异,上面仅演示Tomcat8版本的配置方法。
# 由于Tomcat8默认启用了网段限制,默认只有127网段局域网的机器才拥有有访问权限,如果是其他网段登陆,如172,10网段会报403错误,因此需要按照上面的方法修改对应的context.xml配置文件。
# 出于安全考虑,在生产环境中建议启用默认的网段限制,即只允许在本地访问Tomcat服务器的管理页面。

# Tomcat8共有6种权限(包括文档中说明了4种以及host-manager页面出错提示的2种),具体如下:
# admin-gui — 可访问 "host管理" 页面,但"APP管理""服务器状态" 页面无查看权限
# manager-gui — 无 "host管理" 页面访问权限,有"APP管理""服务器状态" 页面查看权限
# manager-status — 只有"服务器状态" 页面查看权限
# manager-script — 有脚本方式管理接口访问权限和"服务器状态" 页面查看权限
# manager-jmx — JMX 代理接口访问权限和"服务器状态" 页面查看权限
# admin-script — 只有host-manager脚本方式管理接口访问权限
阅读全文 »