如何在 Ubuntu 16.04 上使用 GitLab CI 设置持续集成管道

2023-11-05

介绍

GitLab 社区版是一个自托管的 Git 存储库提供商,具有帮助项目管理和软件开发的附加功能。 GitLab 提供的最有价值的功能之一是内置的持续集成和交付工具,称为亚搏体育appGitLab持续集成.

在本指南中,我们将演示如何设置 GitLab CI 来监视存储库的更改并运行自动化测试来验证新代码。我们将从运行的 GitLab 安装开始,在其中复制基本 Node.js 应用程序的示例存储库。配置我们的 CI 流程后,当新的提交推送到存储库时,GitLab 将使用 CI 运行器针对隔离的 Docker 容器中的代码执行测试套件。

先决条件

在开始之前,您需要设置一个初始环境。我们需要配置一个安全的 GitLab 服务器来存储我们的代码并管理我们的 CI/CD 流程。此外,我们需要一个地方来运行自动化测试。这可以是安装 GitLab 的同一台服务器,也可以是单独的主机。以下部分更详细地介绍了这些要求。

使用 SSL 保护的 GitLab 服务器

为了存储源代码并配置 CI/CD 任务,我们需要在 Ubuntu 16.04 服务器上安装一个 GitLab 实例。 GitLab 目前推荐的服务器至少具有2个CPU核心 and 4GB 内存。为了保护您的代码不被暴露或篡改,GitLab 实例将使用 Let’s Encrypt 通过 SSL 进行保护。您的服务器需要有一个域名或与之关联的子域才能完成此步骤。

您可以使用以下教程来完成这些要求:

  • 使用 Ubuntu 16.04 进行初始服务器设置: 创建一个sudo用户并配置基本防火墙
  • 如何在 Ubuntu 16.04 上安装和配置 GitLab:在服务器上安装 GitLab 并使用 Let’s Encrypt TLS/SSL 证书对其进行保护

我们将演示如何在项目之间共享 CI/CD 运行程序(运行自动化测试的组件)以及如何将它们锁定到单个项目。如果您希望在项目之间共享 CI 运行程序,我们强烈建议您限制或禁用公共注册。如果您在安装过程中没有修改设置,请返回并按照GitLab 安装文章中有关限制或禁用注册的可选步骤以防止外界滥用。

用作 GitLab CI 运行程序的一台或多台服务器

GitLab CI Runner 是检查代码并运行自动化测试以验证新更改的服务器。为了隔离测试环境,我们将在 Docker 容器中运行所有自动化测试。为此,我们需要在将运行测试的服务器上安装 Docker。

此步骤可以在 GitLab 服务器或不同的 Ubuntu 16.04 服务器上完成,以提供额外的隔离并避免资源争用。以下教程将在您希望用来运行测试的主机上安装 Docker:

  • 使用 Ubuntu 16.04 进行初始服务器设置: 创建一个sudo用户并配置基本防火墙(如果您要在 GitLab 服务器上设置 CI 运行程序,则无需再次完成此操作)
  • 如何在 Ubuntu 16.04 上安装和使用 Docker: 跟随步骤 1 和 2在服务器上安装 Docker

当您准备好开始时,请继续阅读本指南。

从 GitHub 复制示例存储库

首先,我们将在 GitLab 中创建一个包含示例 Node.js 应用程序的新项目。我们将直接从GitHub导入原始仓库这样我们就不用手动上传了。

登录 GitLab 并单击加号图标并选择右上角新项目添加新项目:

GitLab add new project icon

在新项目页面上,单击导入项目 tab:

GitLab new project name

接下来,单击按 URL 存储库按钮。尽管有 GitHub 导入选项,但它需要个人访问令牌并用于导入存储库和其他信息。我们只对代码和 Git 历史记录感兴趣,因此通过 URL 导入更容易。

In the Git 存储库 URL字段中,输入以下 GitHub 存储库 URL:

https://github.com/do-community/hello_hapi.git

它应该看起来像这样:

GitLab new project GitHub URL

由于这是一个演示,因此最好对存储库进行标记Private。完成后,单击创建项目.

新项目将基于从 GitHub 导入的存储库创建。

了解 .gitlab-ci.yml 文件

GitLab CI 查找名为的文件.gitlab-ci.yml在每个存储库中确定应如何测试代码。我们导入的存储库有一个gitlab-ci.yml已为项目配置的文件。您可以通过阅读以下内容了解有关该格式的更多信息.gitlab-ci.yml 参考文档

单击.gitlab-ci.yml我们刚刚创建的项目的 GitLab 界面中的文件。 CI 配置应该如下所示:

.gitlab-ci.yml
image: node:latest

stages:
  - build
  - test

cache:
  paths:
    - node_modules/

install_dependencies:
  stage: build
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/

test_with_lab:
  stage: test
  script: npm test

该文件使用GitLab CI YAML 配置语法定义应采取的操作、执行顺序、运行条件以及完成每项任务所需的资源。当编写您自己的 GitLab CI 文件时,您可以通过访问语法 linter/ci/lint在您的 GitLab 实例中验证您的文件格式是否正确。

配置文件首先声明一个 Dockerimage应该用于运行测试套件。由于 Hapi 是 Node.js 框架,因此我们使用最新的 Node.js 镜像:

image: node:latest

接下来,我们明确定义将运行的不同持续集成阶段:

stages:
  - build
  - test

您在此处选择的名称是任意的,但顺序决定了后续步骤的执行顺序。阶段是您可以应用于各个作业的标签。 GitLab 将并行运行同一阶段的作业,并等待执行下一阶段,直到当前阶段的所有作业完成。如果没有定义阶段,GitLab 将使用三个阶段,称为build, test, and deploy并将所有作业分配给test默认阶段。

定义阶段后,配置包括cache定义:

cache:
  paths:
    - node_modules/

这指定可以在运行或阶段之间缓存(保存以供以后使用)的文件或目录。这有助于减少运行依赖于在运行之间可能不会更改的资源的作业所需的时间。在这里,我们缓存了node_modules目录,这是在哪里npm将安装它下载的依赖项。

我们的第一份工作叫做install_dependencies:

install_dependencies:
  stage: build
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/

作业可以命名为任何名称,但由于名称将在 GitLab UI 中使用,因此描述性名称会很有帮助。通常,npm install可以与接下来的测试阶段结合起来,但为了更好地演示阶段之间的交互,我们将提取此步骤以在其自己的阶段中运行。

我们将阶段明确标记为“build”stage指示。接下来,我们使用以下命令指定要运行的实际命令script指示。您可以通过在script部分。

The artifacts小节用于指定要在阶段之间保存和传递的文件或目录路径。因为npm install命令安装项目的依赖项,我们的下一步将需要访问下载的文件。宣布node_modules路径确保下一阶段可以访问这些文件。测试后,这些也可以在 GitLab UI 中查看或下载,因此这对于构建二进制文件等工件也很有用。如果您想保存阶段中生成的所有内容,请替换整个paths部分与untracked: true.

最后,第二个工作叫test_with_lab声明将实际运行测试套件的命令:

test_with_lab:
  stage: test
  script: npm test

我们把它放在test阶段。由于这是后期阶段,因此它可以访问由build阶段,这是我们案例中的项目依赖项。在这里,script部分演示了只有单个项目时可以使用的单行 YAML 语法。由于只指定了一个命令,我们也可以在上一份工作中使用相同的语法。

现在您已经了解了如何.gitlab-ci.yml文件定义了 CI/CD 任务,我们可以定义一个或多个能够执行测试计划的运行程序。

触发持续集成运行

由于我们的存储库包含.gitlab-ci.yml文件中,任何新的提交都会触发新的 CI 运行。如果没有可用的跑步者,CI 跑步将被设置为“待处理”。在定义运行器之前,让我们触发 CI 运行来查看作业在挂起状态下的情况。一旦跑步者可用,它将立即接续待处理的跑步。

回到hello_hapiGitLab 项目存储库视图,点击加号在分支和项目名称旁边,然后选择New file从菜单中:

GitLab new file button

在下一页上,输入dummy_file in the 文件名字段并在主编辑窗口中输入一些文本:

GitLab dummy file

Click 提交更改完成后在底部。

现在,返回到主项目页面。一个小的paused图标将附加到最近的提交。如果将鼠标悬停在该图标上,它将显示“Commit:pending”:

GitLab pending marker

这意味着验证代码更改的测试尚未运行。

要获取更多信息,请转到页面顶部并单击管道。您将被带到管道概述页面,您可以在其中看到 CI 运行被标记为待处理并标记为“卡住”:

GitLab pipeline index stuck

Note:右侧有一个按钮,用于CI Lint工具。您可以在此处检查任何语法gitlab-ci.yml你写的文件。

从这里,您可以单击pending状态以获取有关运行的更多详细信息。该视图显示了运行的不同阶段,以及与每个阶段相关的各个作业:

GitLab pipeline detail view

最后,单击安装依赖项工作。这将为您提供有关延迟运行的具体详细信息:

GitLab job detail view

此处,该消息表明作业由于缺少运行程序而陷入困境。这是预期的,因为我们还没有配置任何内容。一旦运行程序可用,就可以使用相同的界面来查看输出。这也是您可以下载构建期间生成的工件的位置。

现在我们知道待处理的作业是什么样子,我们可以为我们的项目分配一个 CI 运行程序来处理待处理的作业。

安装 GitLab CI Runner 服务

我们现在已准备好设置 GitLab CI 运行程序。为此,我们需要在系统上安装 GitLab CI 运行程序包并启动 GitLab 运行程序服务。该服务可以为不同的项目运行多个运行器实例。

如先决条件中所述,如果您想确保避免资源争用,您可以在托管 GitLab 实例的同一服务器或不同服务器上完成这些步骤。请记住,无论您选择哪个主机,都需要为我们将使用的配置安装 Docker。

安装 GitLab CI 运行程序服务的过程与安装 GitLab 本身的过程类似。我们将下载一个脚本来将 GitLab 存储库添加到我们的apt源列表。运行脚本后,我们将下载运行程序包。然后我们可以配置它来为我们的 GitLab 实例提供服务。

首先将最新版本的 GitLab CI 运行器存储库配置脚本下载到/tmp目录(这是与 GitLab 服务器使用的存储库不同的存储库):

  1. curl -Lhttps://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh-o/tmp/gl-runner.deb.sh

请随意检查下载的脚本,以确保您对它将要执行的操作感到满意。您还可以找到该脚本的托管版本here:

  1. less/tmp/gl-runner.deb.sh

一旦您对脚本的安全性感到满意,请运行安装程序:

  1. sudo bash/tmp/gl-runner.deb.sh

该脚本将设置您的服务器以使用 GitLab 维护的存储库。这使您可以使用与其他系统包相同的包管理工具来管理 GitLab 运行程序包。完成后,您可以使用以下命令继续安装apt-get:

  1. sudo apt-get installgitlab-runner

这将在系统上安装 GitLab CI 运行程序包并启动 GitLab 运行程序服务。

设置 GitLab 运行器

接下来,我们需要设置一个 GitLab CI 运行程序,以便它可以开始接受工作。

为此,我们需要一个 GitLab 运行者令牌,以便运行者可以通过 GitLab 服务器进行身份验证。我们需要的令牌类型取决于我们想要如何使用这个运行器。

A 项目特定跑步者如果您对跑步者有特定要求,则非常有用。例如,如果您的gitlab-ci.yml文件定义需要凭据的部署任务,可能需要特定的运行程序才能正确验证进入部署环境。如果您的项目在 CI 过程中有资源密集型步骤,这也可能是一个好主意。项目特定的运行者不会接受其他项目的工作。

另一方面,一个共享跑步者是一个可以被多个项目使用的通用运行器。运行者将根据算法从项目中获取作业,该算法考虑了每个项目当前正在运行的作业数量。这种类型的跑步者更加灵活。您需要使用管理员帐户登录 GitLab 才能设置共享运行器。

我们将在下面演示如何获取这两种跑步者类型的跑步者代币。选择最适合您的方法。

收集信息以注册特定项目的跑步者

如果您希望将运行程序绑定到特定项目,请首先导航到 GitLab 界面中的项目页面。

从这里,单击Settings左侧菜单中的项目。然后,单击CI/CD子菜单中的项目:

GitLab project settings item

在此页面上,您将看到一个跑步者设置部分。点击Expand按钮查看更多详细信息。在详细视图中,左侧将解释如何注册特定于项目的跑步者。复制说明第 4 步中显示的注册令牌:

GitLab specific runner config settings

如果您希望禁用该项目的任何活动共享运行器,您可以通过单击禁用共享跑步者按钮位于右侧。这是可选的。

准备好后,请直接跳到了解如何使用您从此页面收集的信息来注册您的跑步者。

收集信息以注册共享跑步者

要查找注册共享跑步者所需的信息,您需要使用管理帐户登录。

首先单击扳手图标单击顶部导航栏可访问管理区域。在里面Overview左侧菜单部分,单击Runners访问共享运行器配置页面:

GitLab admin area icon

复制页面顶部显示的注册令牌:

GitLab shared runner token

我们将使用此令牌为该项目注册 GitLab CI 运行程序。

向 GitLab 服务器注册 GitLab CI Runner

现在您已经有了令牌,请返回安装 GitLab CI 运行程序服务的服务器。

要注册新的跑步者,请输入以下命令:

  1. sudogitlab-runner 注册

您将被问到一系列问题来配置运行器:

请输入 gitlab-ci 协调员 URL(例如https://gitlab.com/)

输入您的 GitLab 服务器的域名,使用https://指定 SSL。您可以选择附加/ci到您域名的末尾,但最新版本将自动重定向。

请输入此运行程序的 gitlab-ci 令牌

您在上一部分中复制的令牌。

请输入此运行程序的 gitlab-ci 描述

这个特定跑步者的名字。这将显示在命令行和 GitLab 界面上的运行程序服务的运行程序列表中。

请输入此运行程序的 gitlab-ci 标签(以逗号分隔)

这些是您可以分配给跑步者的标签。 GitLab 作业可以根据这些标签表达需求,以确保它们在具有正确依赖项的主机上运行。

在这种情况下,您可以将此留空。

是否将Runner锁定到当前项目[true/false]

将跑步者分配给特定项目。它不能被其他项目使用。

此处选择“假”。

请输入执行人

跑步者完成作业所使用的方法。

在这里选择“docker”。

请输入默认的 Docker 镜像(例如 ruby​​:2.1)

用于运行作业的默认映像.gitlab-ci.yml文件不包含图像规范。最好在此处指定一个通用图像,并在您的文件中定义更具体的图像。.gitlab-ci.yml像我们所做的那样归档。

我们将在这里输入“alpine:latest”作为一个小的、安全的默认值。

回答提示后,将创建一个新的运行程序,能够运行项目的 CI/CD 任务。

您可以通过键入以下内容来查看 GitLab CI 运行程序服务当前可用的运行程序:

  1. sudogitlab-runner 列表
Output
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml example-runner Executor=docker Token=e746250e282d197baa83c67eda2c0b URL=https://example.com

现在我们有了可用的运行程序,我们可以返回到 GitLab 中的项目了。

在 GitLab 中查看 CI/CD 运行

返回 Web 浏览器,返回 GitLab 中的项目。根据注册跑步者以来的时间,跑步者当前可能正在运行:

GitLab CI running icon

或者它可能已经完成:

GitLab CI run passed icon

无论处于何种状态,请单击running or passed图标(或failed如果您遇到问题)查看 CI 运行的当前状态。您可以通过单击顶部获得类似的视图管道 menu.

您将被带到管道概述页面,您可以在其中查看 GitLab CI 运行的状态:

GitLab CI pipeline run overview

在下面Stages标题中,会有一个圆圈指示运行中每个阶段的状态。如果单击阶段,您可以看到与该阶段关联的各个作业:

GitLab CI pipeline run stage_view

单击安装依赖项工作范围内的build阶段。这将带您进入职位概述页面:

GitLab CI pipeline job overview

现在,不再显示有关没有可用运行程序的消息,而是显示作业的输出。在我们的例子中,这意味着您可以看到结果npm安装每个软件包。

在右侧,您还可以看到一些其他项目。您可以通过更改查看其他职位Stage并单击下面的运行。您还可以查看或下载运行生成的任何工件。

结论

在本指南中,我们向 GitLab 实例添加了一个演示项目,以展示 GitLab CI 的持续集成和部署功能。我们讨论了如何定义管道gitlab-ci.yml文件来构建和测试应用程序,以及如何将作业分配到阶段以定义它们之间的关系。然后,我们设置了一个 GitLab CI 运行程序来为我们的项目获取 CI 作业,并演示了如何查找有关各个 GitLab CI 运行的信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 16.04 上使用 GitLab CI 设置持续集成管道 的相关文章

  • 如何使用 vim 作为寻呼机设置彩色 git diff

    我无法配置 git 来遵循我的请求 使用 vim 作为差异分页器 在交互模式下添加文件时保留差异颜色 My gitconfig setup color ui auto diff false pager diff vim 通过此配置 交互模式
  • Sublime Text 2 的 git 提交错误[重复]

    这个问题在这里已经有答案了 我正在 Udacity 上学习 如何使用 Git 和 GitHub 课程 我正在按照示例进行操作 但遇到了问题 我自己尝试通过谷歌搜索和反复试验来解决问题大约两个小时 我认为是时候在 StackOverflow
  • 如何仅对最新合并后的提交进行变基?

    考虑以下场景 我从master那里检查了一个分支 我做了一些承诺 我合并了更新的master 我做了更多的承诺 现在我想要从第 4 点开始变基提交 以便从第 2 点开始的提交不受影响 所以如果我最初有 1 2 x x x x x x x m
  • Git合并策略:空格使默认显示不冲突并带来意想不到的结果

    经过多次试验 我得到了这个简单的测试用例场景 a gt b gt c master gt d gt b gt e branch Where b 是樱桃精选b e is a merge from master b 之后完成c and c对相同
  • Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

    我正在尝试通过 Xcode gt 设置 gt 帐户添加存储库 但我被困在正确的地址上 我们的存储库地址非常简单 my domain com port project name 通过 SSH 密钥进行身份验证 有人可以帮助我了解这里发生了什么
  • Cordova 构建 - 无法解析 com.android.tools.build:gradle:1.5.0

    升级我的机器 Ubuntu 15 10 的 cordova 和 npm 后 我无法使用 cordova 构建新项目 构建指责 graddle 中存在错误 我做了一些研究并找到了一些可能的解决方案 解决方案例如更改版本和 url graddl
  • GIT 中的 Fastlane 应用程序文件?如何检索当前的 apple_id?

    我为我的 XCode 项目设置了 Fastlane 来实现构建自动化 至少 Fastfile 包含构建选项 应该位于 GIT 中 但我也很高兴 Appfile 团队标识符 也位于 GIT 中 主要问题 Appfile 应该包含我的 appl
  • GIT:无效路径“.editorconfig”

    从 master 克隆项目时出现以下错误 错误 无效路径 editorconfig 致命 无法签出工作树 警告 克隆成功 但结账失败 您可以使用 git status 检查签出的内容 并使用 git Restore source HEAD
  • 中止 `git stash apply` [重复]

    这个问题在这里已经有答案了 我很遗憾应用了存储 错误的分支 我如何撤消此操作并将我的存储返回到我的存储列表 以便稍后将其应用到正确的分支 如果你还没有承诺 你应该能够git stash再次 可能与git reset HEAD first A
  • Git Add - 致命:添加文件失败

    我的 git cmd exe 窗口如下所示 git add NextFolder error unable to create temporary file No such file or directory error NextFolde
  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • Git 会删除空文件夹吗? [复制]

    这个问题在这里已经有答案了 我已提交一个项目并将其推送到我的 GitHub 帐户 该项目包含以下部分文件结构 server conf some files java lib java 和 lib 文件夹为空 从 GitHub 下载我的项目时
  • Rstudio 更有意义的窗口标题

    我在 Ubuntu 16 04 下使用 R studio 版本 1 0 143 窗口标题仅显示一个非常无信息的 RStudio 我希望至少有当前选项卡的名称 或者最好是与此选项卡对应的文件的完整路径 在 Windows 下 完整路径似乎出现
  • 目标路径已存在且不是空目录

    我克隆了一个 git 存储库 但不小心弄乱了 所以我重新克隆并显示消息 目标路径已存在且不是空目录 我尝试过删除 Mac 中带有目标路径名称的文件夹 但没有成功 我对编码非常陌生 因此我们将不胜感激 对于根文件夹 以及任何其他文件夹 对于那
  • dpkg 错误:pycompile:未找到

    sudo apt get remove purge mysql server mysql client mysql common 当我尝试使用上述命令删除 mysql 时 出现以下错误 Reading package lists Done
  • 如何在特定的Java版本上运行应用程序?

    如何运行具有特定 Java 版本的应用程序 我安装了三个 Java 版本 myuser mysystem sudo update alternatives config java There are 3 choices for the al
  • 如何将 git-svn 与 svn+ssh url 一起使用

    我喜欢在cygwin中使用git svn clone使用我们公司 svn 存储库的命令 这个的网址是svn ssh svn
  • Windows 上的 git 忽略文件名大小写更改 [重复]

    这个问题在这里已经有答案了 我有一个reactjs应用程序 我正在将所有文件名标准化为小写以符合Nodejs 最佳实践 https devcenter heroku com articles node best practices stic
  • 从 Eclipse 的历史视图中删除 ORIG_HEAD 和 FETCH_HEAD

    我最近开始使用 Eclipse Kepler 和 EGit 插件 这些分支不是我习惯的 有没有办法永久阻止这些分支的创建 我尝试手动删除它们 但它不起作用 并且我不想在下次获取或变基时保留它们 据我从对您问题的评论中了解到 您只希望这些参考
  • 使用 Git 在线使用 TFS 的 Visual Studio 2013:自动保存文件签入

    我目前正在将 Visual Studio Premium 2013 Update 3 与 Team Foundation Server Online 结合使用并使用 Git 存储库 直到最近 我已经成功使用 Git Repo 几个月了 现在

随机推荐

  • 如何在 CentOS 7 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它的创建是为了解决 npm 的一系列问题 例如通过并行操作加快软件包安装过程并减少与网络连接相关的错误 在本教程中
  • Linux 中的 Pgrep 命令

    本文涵盖了 Linux 的基础知识pgrep命令 pgrep是一个命令行实用程序 允许您根据给定条件查找正在运行的程序的进程 ID 它可以是完整或部分进程名称 运行进程的用户或其他属性 The pgrep命令是的一部分procps or p
  • 安装和配置 Postfix 和 Dovecot

    这是我们的第二篇文章设置和配置邮件服务器系列 在这篇文章中 我们将向您展示如何安装和配置 Postfix 和 Dovecot 这是我们邮件系统的两个主要组件 Postfix 是一个开源邮件传输代理 MTA 是一种用于发送和接收电子邮件的服务
  • 如何在 Debian 10 上安装 Memcached

    Memcached 是一个免费开源的高性能内存键值数据存储 它通常用于通过缓存 API 和数据库调用结果中的各种对象来加速应用程序 本文介绍如何在 Debian 10 上安装和配置 Memcached 先决条件 您需要以以下身份登录具有 s
  • Linux 中的剪切命令

    Linux 和 Unix 系统中有许多实用程序可让您处理和过滤文本文件 cut是一个命令行实用程序 允许您从指定文件或管道数据中剪切部分行并将结果打印到标准输出 它可用于按分隔符 字节位置和字符来剪切行的各个部分 在本文中 我们将向您展示如
  • 如何在 Ubuntu 12.04 x64 上安装 iRedMail

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • Spring框架

    Spring 框架是最流行的 Java EE 框架之一 在本文中 我们将了解以下内容 Spring框架架构 Spring的核心组件 spring 框架下的各种项目 我查看了 Spring Framework Servlet JSP 和 JS
  • 如何在 Ubuntu 16.04 上使用 uWSGI 和 Nginx 为 Django 应用程序提供服务

    介绍 Django 是一个功能强大的 Web 框架 可以帮助您启动 Python 应用程序或网站 Django 包含一个简化的开发服务器 用于在本地测试代码 但对于任何与生产稍微相关的事情 都需要更安全 更强大的 Web 服务器 在本指南中
  • ThreadPoolExecutor - Java 线程池示例

    Java线程池管理工作线程池 它包含一个队列 使任务等待执行 我们可以用ThreadPoolExecutor在Java中创建线程池 Java线程池管理Runnable线程的集合 工作线程执行队列中的可运行线程 java util concu
  • 使用 Docker Compose 将 Node.js 应用程序容器化以进行开发

    介绍 如果您正在积极开发应用程序 请使用Docker可以简化您的工作流程以及将应用程序部署到生产的过程 在开发中使用容器可以带来以下好处 环境是一致的 这意味着您可以为项目选择所需的语言和依赖项 而不必担心系统冲突 环境是隔离的 可以更轻松
  • 在 JavaScript 中使用位运算符

    介绍 虽然 Javascript 中的按位运算符几乎没有受到任何关注 但它们实际上非常强大并且用途广泛 它们被认为可以更快地进行数值计算和转换 我们可以利用它们来替代某些复杂的编码场景 并使我们的代码更具可读性 在本教程结束时 您将基本了解
  • 命令设计模式

    命令模式是行为设计 模式之一 命令设计模式用于实现松耦合在请求 响应模型中 命令模式 In command pattern the request is send to the invoker and invoker pass it to
  • 如何在 CentOS 6 上设置 Apache 虚拟主机

    Status 已弃用 本文介绍不再受支持的 CentOS 版本 如果您当前运行的服务器运行 CentOS 6 我们强烈建议您升级或迁移到受支持的 CentOS 版本 Reason CentOS 6 于 2020 年 11 月 30 日达到生
  • 如何在 Ubuntu 18.04 上安装 Anaconda [快速入门]

    介绍 Anaconda 专为数据科学和机器学习工作流程而设计 是一款开源包管理器 环境管理器以及 Python 和 R 编程语言的分发版 本教程将指导您在 Ubuntu 18 04 服务器上安装 Anaconda 有关本教程的更详细版本以及
  • 如何在 Ubuntu 14.04 上安装和配置 OSSEC 安全通知

    介绍 您如何跟踪服务器上的授权和未经授权的活动 OSSEC 是一种可以安装在服务器上以跟踪其活动的工具 OSSEC 是一种开源 基于主机的入侵检测系统 HIDS 它执行日志分析 完整性检查 Windows 注册表监控 rootkit 检测
  • 如何在 Ubuntu 22.04 上安装和保护 Grafana

    介绍 Grafana是一种开源数据可视化和监控工具 可与来自以下来源的复杂数据集成普罗米修斯 InfluxDB Graphite and 弹性搜索 Grafana 允许您为数据创建警报 通知和临时过滤器 同时还可以通过内置共享功能更轻松地与
  • 如何在 Ubuntu 12.10 上使用 Nginx 设置 HTTP 身份验证

    什么是Red Means 用户需要输入或自定义的行将位于red在本教程中 其余的大部分应该是可复制和粘贴的 关于 Nginx Nginx 发音为 engine x 是一个 HTTP 和反向代理服务器 以及邮件代理服务器 由 Igor Sys
  • 如何在零停机的情况下将 WordPress 从共享主机迁移到云服务器

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何在 Ubuntu 22.04 上使用 apt 安装 Java

    介绍 许多软件都需要 Java 和 JVM Java 虚拟机 包括Tomcat Jetty 玻璃鱼 卡桑德拉 and Jenkins 在本指南中 您将使用以下命令安装各种版本的 Java 运行时环境 JRE 和 Java 开发人员工具包 J
  • 如何在 Ubuntu 16.04 上使用 GitLab CI 设置持续集成管道

    介绍 GitLab 社区版是一个自托管的 Git 存储库提供商 具有帮助项目管理和软件开发的附加功能 GitLab 提供的最有价值的功能之一是内置的持续集成和交付工具 称为亚搏体育appGitLab持续集成 在本指南中 我们将演示如何设置