Debian 安装 Apache 与 Subversion
前言
通过 Apache、Subversion 搭建 SVN 服务器,实现使用 HTTP、SVN 协议访问 SVN 仓库,并进行细粒度的权限控制,本教程适用于 Debian/Ubuntu 系统。
系统环境
1 | # uname -a |
安装软件
1 | # 更新软件索引 |
前言
通过 Apache、Subversion 搭建 SVN 服务器,实现使用 HTTP、SVN 协议访问 SVN 仓库,并进行细粒度的权限控制,本教程适用于 Debian/Ubuntu 系统。
系统环境
1 | # uname -a |
安装软件
1 | # 更新软件索引 |
下面的实战内容是在上篇内容的基础上进行操作的,为了保证连贯性,建议先将上篇的操作步骤执行完再阅读本篇内容。
通过 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 | CentOS Linux release 7.6.1810 (Core) |
GIMP 安装
GIMP 算得上是 Linux 系统下的 Photoshop,基于 GTK 编写的图像编辑处理软件,功能非常强大。
1 | # 安装EPEL源 |
Tomcat8 配置管理用户
1 | # 编辑Tomcat8对应的配置文件,在<tomcat-users>标签内添加以下内容,配置Tomcat的管理用户 |
Docker 四大网络模式
桥接模式、主机模式、容器模式、无网络模式
Docker 四大网络模式之一(bridge)
该模式是 Docker 的默认设置,Docker 守护进程创建了一个虚拟以太网桥 docker0,附加在其上的任何网卡之间都能自动转发数据包。默认情况下,守护进程会创建一对对等接口,将其中一个接口设置为容器的 eth0 接口,另一个接口放置在宿主机的命名空间中,从而将宿主机上的所有容器都连接到这个内部网络上。守护进程还会从网桥的私有地址空间中分配一个 IP 地址和子网给该容器。注意启动容器的时候需要指定 - p(固定端口分配) 或者 -P(动态端口分配)参数来暴露端口,否则 IP 数据包就不能从宿主机之外路由到容器中。
1 | # docker run -d -p 8888:8080 --net=bridge --name=tomcat8 tomcat:8 |
虚拟机与容器底层实现的对比
虚拟机与容器的底层实现原理是不同的,正如上图片的对比。虚拟机实现资源隔离的方法是利用一个独立的 Guest OS,并利用 Hypervisor 虚拟化 CPU、内存、IO 设备等实现的。例如,为了虚拟化内存,Hypervisor 会创建一个 shadow page table,正常情况下,一个 page table 可以用来实现从虚拟内存到物理内存的翻译。相比虚拟机实现资源和环境隔离的方案,Docker 就显得简练很多,它不像虚拟机一样重新加载一个操作系统内核,引导、加载操作系统内核是一个比较耗时而又消耗资源的过程,Docker 是利用 Linux 内核特性(LXC)实现的隔离,运行容器的速度几乎等同于直接启动进程。
前言
本教程实战演示基于 SVN + Jenkins + Maven + JDK + Docker 搭建 CI/CD 环境,其中 SVN 基于 Debian 镜像手动安装,而 Jenkins、Maven、JDK 则基于 Tomcat 镜像手动安装。如果仅为了快速体验使用 Jenkins 的功能,可以直接 Pull Jenkins 官方的 Docker 镜像,然后创建并启动 Docker 容器来体验 Jenkins 相关功能,此时可忽略下面教程中的大部分操作步骤。
Docker 环境安装与配置
基于 Docker 搭建 SVN 服务器
1 | # 拉取Debian镜像 |
Jenkins 相关站点
Jenkins 与 Hundson 介绍
Jenkins 与 Hundson 是目前最流行的持续集成及自动化部署工具,基于 Java 语言开发,二者师出同门。2009 年甲骨文收购了 Sun 公司并继承了 Hudson 代码库。在 2011 年年初,甲骨文和开源社区之间的关系破裂,该项目被分成两个独立的项目 Jenkins 和 Hundson。其中 Jenkins 的团队由大部分原始开发人员组成,Hudson 则由甲骨文公司继续管理,所以二者是非常相似的产品。Jenkins 可以整合 Subversion、Git、GitHub 等,而 Husband 同样也可以。其他优秀的持续集成工具还有 Strider、GitLab CI、TeamCity(JetBrains)、Travis CI、Codeship、Codefresh 等。
持续集成介绍
主流的 Docker 可视化管理工具
docker ui、shipyard、portainer