如何在CentOS 7上安装和配置GoCD

GoCD是一个开源的持续交付和自动化系统。它允许您使用并行和顺序执行为复杂的工作流建模。其价值流图使您可以轻松地轻松可视化复杂的工作流程。GoCD使您可以轻松比较两个版本,并部署所需版本的应用程序。GoCD生态系统由GoCD服务器和GoCD代理组成。GoCD负责控制一切,例如运行基于Web的用户界面以及管理代理并向其提供作业。Go代理负责运行作业和部署。

先决条件

  • 具有至少1GB RAM的Vultr CentOS 7服务器实例。
  • 一个sudo的用户
  • 指向服务器的域名。

在本教程中,我们将使用192.168.1.1公共IP地址和gocd.example.com指向Vultr实例的域名。请确保将所有示例域名和IP地址替换为实际的域名和IP地址。

使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装Java。

安装Java

GoCD需要Java版本8,并支持Oracle Java和OpenJDK。在本教程中,我们将从OpenJDK安装Java 8。

OpenJDK可以轻松安装,因为该软件包在默认YUM存储库中可用。

sudo yum -y install java-1.8.0-openjdk-devel

如果正确安装了Java,则可以验证其版本。

java -version

您将获得与以下文本类似的输出。

[user@vultr ~]$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

在继续进行之前,我们需要设置JAVA_HOMEJRE_HOME环境变量。查找系统中Java可执行文件的绝对路径。

readlink -f $(which java)

以下文本将输出到您的终端。

[user@vultr ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/bin/java

现在,根据Java目录的路径设置JAVA_HOMEJRE_HOME环境变量。

echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64" >> ~/.bash_profile
echo "export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre" >> ~/.bash_profile

注意: 确保使用在系统上获得的Java路径。发布新版本的Java 8时,本教程中使用的路径可能会更改。

执行bash_profile文件。

source ~/.bash_profile

现在,您可以运行echo $JAVA_HOME命令以确保设置了环境变量。

[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64

安装GoCD

GoCD是用Java编写的,因此Java是运行GoCD的唯一依赖项。GoCD可以借助来安装YUM。将其正式存储库安装到系统中。

sudo curl https://download.gocd.org/gocd.repo -o /etc/yum.repos.d/gocd.repo

在系统中安装GoCD服务器。

sudo yum install -y go-server

启动GoCD并使其在启动时自动启动。

sudo systemctl start go-server
sudo systemctl enable go-server

在访问GoCD仪表板之前,让我们创建一个新目录来存储工件。工件可以存储在安装了操作系统和应用程序的同一磁盘上。或者,您可以使用专用磁盘或块存储驱动器来存储工件。

如果您希望使用相同的磁盘来存储工件,则只需创建一个新目录并将所有权提供给GoCD用户即可。

sudo mkdir /opt/artifacts
sudo chown -R go:go /opt/artifacts

配置块存储

GoCD软件建议使用其他分区或驱动器来存储工件。在持续的集成和交付平台中,经常会生成工件。连续生成新的工件时,磁盘空间会随着时间的推移而减少。在某个阶段,您的系统将耗尽可用磁盘空间,并且系统上运行的服务将失败。为解决此问题,您可以连接新的Vultr块存储驱动器以存储工件。如果仍然希望将工件存储在同一驱动器上,请跳至“设置防火墙”部分。

部署新的块存储驱动器并将其附加到GoCD服务器实例。现在,在块存储设备上创建一个新分区。

sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%

在新磁盘上创建文件系统。

sudo mkfs.ext4 /dev/vdb1

安装块存储驱动器。

sudo mkdir /mnt/artifacts
sudo cp /etc/fstab /etc/fstab.backup
echo "
/dev/vdb1 /mnt/artifacts ext4 defaults,noatime 0 0" | sudo tee -a /etc/fstab
sudo mount /mnt/artifacts

现在,运行df,您将看到安装在上的新块存储驱动器/mnt/artifacts

[user@vultr ~]$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       20616252 6313892  13237464  33% /

...
/dev/vdb1       10188052   36888   9610596   1% /mnt/artifacts

向GoCD用户提供目录的所有权。

sudo chown -R go:go /mnt/artifacts

设置防火墙

更改防火墙配置以允许端口81538154通过防火墙。端口8153监听不安全的连接,端口监听8154安全的连接。

sudo firewall-cmd --zone=public --add-port=8153/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8154/tcp --permanent
sudo firewall-cmd --reload

现在,您可以在上访问GoCD仪表板http://192.168.1.1:8153。要在安全连接上访问GoCD仪表板,请访问https://192.168.1.1:8154。您将看到一些错误,表明证书无效。您可以放心地忽略该错误,因为证书是自签名的。为了安全起见,应始终在安全连接上使用仪表板。

设置新管道之前,请Admin >> Server Configuration从顶部导航栏中导航到“ ”。

在“ Site URL”字段中输入URL到您的不安全站点,在“ ”字段中输入安全站点Secure Site URL

如何在CentOS 7上安装和配置GoCD

接下来,提供您的SMTP服务器详细信息,以从GoCD发送电子邮件通知。

如何在CentOS 7上安装和配置GoCD

最后,提供您想要存储工件的位置的路径。如果您选择将工件存储在与操作系统相同的磁盘上,请输入/opt/artifacts;如果选择附加块存储驱动器,则可以输入/mnt/artifacts

此外,您可以将GoCD配置为自动删除旧的工件。根据您的磁盘大小配置下一个选项。但是,自动删除选项不会备份您的旧工件。要手动进行备份然后删除旧的工件,请通过为“ Never”选项选择“ ”选项来禁用自动删除Auto delete old artifacts

如何在CentOS 7上安装和配置GoCD

您将需要重新启动GoCD服务器,以便应用新的更改。

sudo systemctl restart go-server

设定验证

默认情况下,GoCD仪表板未配置为使用任何类型的身份验证,但它支持使用密码文件和LDAP的身份验证。在本教程中,我们将设置基于密码的身份验证。

注意设置身份验证是可选步骤,但是强烈建议将其用于面向公众的服务器,例如Vultr。

安装Apache工具,以便我们可以使用该htpasswd命令创建加密的密码文件。

sudo yum -y install httpd-tools

htpasswd使用Bcrypt加密,使用命令创建密码文件。

sudo htpasswd -B -c /etc/go/passwd_auth goadmin

为用户提供两次密码。您将看到以下输出。

[user@vultr ~]$ sudo htpasswd -B -c /etc/go/passwd_auth goadmin
New password:
Re-type new password:
Adding password for user goadmin

您可以使用上面的相同命令添加任意数量的用户,但是删除该-c选项。该-c选项将替换现有文件,用新用户替换旧用户。

sudo htpasswd -B /etc/go/passwd_auth gouser1

由于我们已经创建了密码文件,因此请再次访问GoCD仪表板。Admin >> Security >> Authorization Configurations从顶部导航栏中导航到“ ”。点击Add按钮并提供一个ID。选择“ Password File Authentication Plugin for GoCD”作为插件ID,然后将路径指向密码文件。现在,单击“ Check Connection”按钮以验证GoCD可以使用密码文件进行身份验证。

如何在CentOS 7上安装和配置GoCD

最后,保存身份验证方法。重新加载仪表板,它将自动将您注销。您现在将看到一个登录屏幕。使用之前创建的凭据登录。

您将需要手动提升管理员用户,否则,所有用户都将具有管理员权限。Admin >> User Summary从顶部导航栏中导航到“ ”。

现在,选择您创建的管理员用户,然后单击“ Roles”下拉菜单。选中“ Go System Administrator”复选框,将用户提升为唯一的管理员。

如何在CentOS 7上安装和配置GoCD

要在密码文件中创建的GoCD中添加用户,请单击“ ADD”按钮并搜索要添加的用户。用户也将在首次登录时自动添加到GoCD仪表板。显然,要使用户登录,必须将其添加到我们之前创建的密码文件中。

让我们加密SSL保护GoCD

默认情况下,GoCD侦听端口81538154安全连接。尽管端口8154提供了与应用程序的安全连接,但由于它使用自签名证书,因此它还会显示浏览器错误。在本教程的这一部分中,我们将使用“让我们加密免费的SSL证书”来安装和保护Nginx。Nginx Web服务器将充当反向代理,将传入的请求转发到GoCD的HTTP端点。

安装Nginx。

sudo yum -y install nginx

启动Nginx并使它能够在启动时自动启动。

sudo systemctl start nginx
sudo systemctl enable nginx

安装Certbot,这是Let's Encrypt CA的客户端应用程序。

sudo yum -y install certbot

在可以请求证书之前,您将需要允许端口80443或标准HTTPHTTPS服务通过防火墙。另外,删除port 8153,侦听不安全的连接。

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --remove-port=8153/tcp --permanent
sudo firewall-cmd --reload

注意要从Let's Encrypt CA获取证书,必须为其生成证书的域指向服务器。如果不是,请对域的DNS记录进行必要的更改,并在再次发出证书请求之前,等待DNS传播。Certbot在提供证书之前会检查域权限。

生成SSL证书。

sudo certbot certonly --webroot -w /usr/share/nginx/html -d gocd.example.com

生成的证书可能存储在中/etc/letsencrypt/live/gocd.example.com/。SSL证书将存储为fullchain.pem,私钥将存储为privkey.pem

让我们加密证书的有效期限为90天,因此建议您使用cron作业设置证书的自动续订。

打开cron作业文件。

sudo crontab -e

将以下行添加到文件末尾。

30 5 * * * /usr/bin/certbot renew --quiet

上面的cron作业每天凌晨5:30运行。如果证书到期,它将自动更新。

现在,更改Nginx默认配置文件以删除该default_server行。

sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf

为GoCD Web界面创建一个新的配置文件。

sudo nano /etc/nginx/conf.d/gocd.conf

填充文件。

upstream gocd {
server 127.0.0.1:8153;
}

server {
    listen 80 default_server;
    server_name gocd.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 default_server;
    server_name gocd.example.com;

    ssl_certificate           /etc/letsencrypt/live/gocd.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/gocd.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log  /var/log/nginx/gocd.access.log;

location / {
        proxy_pass http://gocd;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect off;
    }
location /go {
    proxy_pass http://gocd/go;
    proxy_http_version 1.1;
    proxy_set_header Upgrade websocket;
    proxy_set_header Connection upgrade;
    proxy_read_timeout 86400;
    }
  }

检查新配置文件中的错误。

sudo nginx -t

如果看到以下输出,则说明配置没有错误。

[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

如果收到某种错误,请确保仔细检查SSL证书的路径。重新启动Nginx Web服务器以实现配置更改。

sudo systemctl restart nginx

现在,您可以通过访问GoCD仪表板https://gocd.example.com。使用管理员凭据登录到仪表板,然后Admin >> Server Configuration从顶部导航栏中导航到“ ”。

如何在CentOS 7上安装和配置GoCD

将“ Site URL”和“ Secure Site URL”设置为https://gocd.example.com。端口8154仍然需要通过防火墙访问,以便远程代理可以通过端口连接到服务器8154,如果他们无法通过标准的连接HTTP端口。

安装GoCD代理

在GoCD持续集成环境中,GoCD代理是负责执行所有任务的工作人员。当检测到源更改时,将触发管道并将作业分配给可用的工作程序以执行。然后,代理执行任务并在执行后报告最终状态。

要运行管道,必须至少配置一个代理。继续在GoCD服务器上安装GoCD代理。

由于我们已经将GoCD存储库导入到服务器中,因此我们可以直接安装Go Agent。

sudo yum install -y go-agent

现在,启动GoCD服务器,并使它能够在引导时自动启动。

sudo systemctl start go-agent
sudo systemctl enable go-agent

检测到本地主机上运行的GoCD代理会自动启用。



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

使用Nethogs监视网络带宽使用情况

使用Nethogs监视网络带宽使用情况

在本教程中,我们将介绍在CentOS 6x x64上安装和使用nethogs的过程。nethogs是一种网络监视工具,它允许Networ

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

在CentOS 6上设置SA-MP San Andreas多人服务器

在CentOS 6上设置SA-MP San Andreas多人服务器

欢迎来到另一个Vultr教程。在这里,您将学习如何安装和运行SAMP服务器。本指南是为CentOS 6编写的。先决条件

使用Etckeeper进行/ etc的版本控制

使用Etckeeper进行/ etc的版本控制

简介/ etc /目录在Linux系统运行中起着至关重要的作用。其原因是因为几乎每个系统配置

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在CentOS 7上安装SonarQube

如何在CentOS 7上安装SonarQube

使用其他系统?SonarQube是用于质量系统开发的开源工具。它是用Java编写的,并且支持多个数据库。它提供

如何在CentOS 7上使用Mosh进行远程服务器管理

如何在CentOS 7上使用Mosh进行远程服务器管理

使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用

如何在CentOS 7上安装MoinMoin

如何在CentOS 7上安装MoinMoin

MoinMoin是一个使用Python编写的基于文件系统的开源Wiki引擎。如今,MoinMoin已广泛用于开源社区。许多供应商

在CentOS 7上安装H2O Web服务器

在CentOS 7上安装H2O Web服务器

H2O是新一代HTTP服务器,它对所有当前使用的Web服务器都具有出色的,功能齐全的HTTP / 2实现。使用H2O作为您的Web服务器

如何在Debian,CentOS和FreeBSD上使用Sudo

如何在Debian,CentOS和FreeBSD上使用Sudo

在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫

如何在Ubuntu 16.10上安装Countly Analytics

如何在Ubuntu 16.10上安装Countly Analytics

使用其他系统?Countly是一个开源Web /移动分析和营销平台。它具有许多用于从Web收集数据的功能

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

使用其他系统?Lychee 3.1相册是一种简单,灵活,免费和开源的照片管理工具,可在VPS服务器上运行。安装

如何在CentOS 7上安装ERPNext开源ERP

如何在CentOS 7上安装ERPNext开源ERP

使用其他系统?ERP或企业资源计划是用于管理核心业务流程的企业应用程序套件。ERPNext是免费的

如何在CentOS 7 LAMP VPS上安装Paste 2.1

如何在CentOS 7 LAMP VPS上安装Paste 2.1

使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是

如何在CentOS 7上安装Seafile Server

如何在CentOS 7上安装Seafile Server

使用其他系统?Seafile(社区版本)是一个免费和开源的文件同步和共享解决方案,类似于ownCloud。机智

如何在CentOS 7上安装Kolab组件

如何在CentOS 7上安装Kolab组件

使用其他系统?Kolab Groupware是一个免费的基于Web的开源组件软件。它的功能包括电子邮件通信,事件

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

如何在CentOS 7 LAMP VPS上安装Omeka Classic 2.4 CMS

使用其他系统?Omeka Classic 2.4 CMS是一个免费的开源数字发布平台和用于共享数字内容的内容管理系统(CMS)

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。