背景
在公司内部进行GitLab部署的决策源于对协作开发、版本控制和代码管理需求的深入理解。公司面临着日益复杂的软件开发项目,需要一个可靠、高效且安全的平台来支持团队协作,追踪代码变更,以及确保项目的顺利进行。以下是推动公司内部部署GitLab的关键因素:
-
安全性与隐私: 公司处理敏感的商业和客户数据,因此有必要在内部服务器上部署GitLab,以确保对代码库和开发活动的安全控制。这种内部化的方法有助于维护对知识产权和敏感信息的精确掌控。
-
定制和集成: 部署GitLab在内部服务器上提供了更大的定制和集成灵活性。公司可以根据特定的工作流程和需求进行定制,同时更容易集成GitLab与内部系统和工具,以实现无缝的协作和流程集成。
-
网络性能和访问控制: 内部部署GitLab可以最大程度地优化网络性能,减少延迟,提高代码推送和拉取的效率。同时,通过严格的访问控制,确保只有授权人员能够访问敏感的代码库和开发资源。
-
合规性和法规要求: 考虑到公司可能受到特定行业的合规性和法规要求的制约,内部部署GitLab允许公司更好地控制和适应这些规定,确保开发活动符合法规要求。
-
团队协作和效率: GitLab作为一个全面的协作平台,可以显著提高团队的协作效率。通过内部部署,团队成员可以在一个集成的环境中共享代码、问题、合并请求等信息,从而促进更紧密的合作和更高效的项目管理。
-
技术支持和定制服务: 内部部署GitLab使公司能够更轻松地获得专业的技术支持,并有机会定制化服务以满足公司独特的需求。这种定制服务有助于解决公司特定的问题,提高平台的可用性。
在综合考虑了以上因素之后,公司决定在内部服务器上部署GitLab,以满足其日益增长的软件开发需求,并确保在保密性、合规性和效率方面达到最佳水平。这一战略性的决策有望为公司提供一个强大的开发平台,支持其未来的创新和业务增长。
准备
- 搭载ContOS 7 环境的服务器
GitLab安装部署
配置相关环境,安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix
-
policycoreutils
:policycoreutils
是一个包,它提供了 SELinux(Security-Enhanced Linux)的核心工具和服务。SELinux是一个强化的 Linux 安全子系统,用于提供更加细粒度的访问控制和安全策略。 -
openssh-server openssh-clients
:openssh-server
包含了SSH服务器(sshd),负责接受和处理远程SSH连接。openssh-clients
包含了SSH客户端工具,允许本地计算机与远程SSH服务器进行通信。 -
postfix
:postfix
是一个邮件传输代理(MTA),用于处理邮件的发送和接收。通过安装postfix
,你可以将Linux系统配置为邮件服务器,以便发送、接收和中继邮件。
yum install policycoreutils-python
-
policycoreutils-python
:policycoreutils-python
是一个软件包,它包含了一些用于与 SELinux 进行交互的 Python 工具和库。这些工具对于管理 SELinux 策略以及诊断和调试 SELinux 问题非常有用。
systemctl enable sshd && systemctl start sshd
systemctl enable postfix && systemctl start postfix
-
启用和启动 SSH 服务:
systemctl enable sshd
:这个命令将 SSH 服务(sshd
)添加到系统启动时自动启用的服务列表中。这样,在系统重新启动时,SSH 服务将自动启动。systemctl start sshd
:这个命令用于立即启动 SSH 服务。通过执行这个命令,可以在不必重新启动系统的情况下启动 SSH 服务,确保 SSH 服务当前处于运行状态。 -
启用和启动 Postfix 服务:
systemctl enable postfix
:这个命令将 Postfix 服务添加到系统启动时自动启用的服务列表中,类似于上述的 SSH 设置。这确保了在系统重新启动时,Postfix 服务会自动启动。systemctl start postfix
:这个命令用于立即启动 Postfix 服务。Postfix 是一个邮件传输代理(MTA),用于处理邮件的发送和接收。通过启动 Postfix 服务,系统将能够处理邮件相关的任务。
安装gitlab-ce
下载软件包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm --no-check-certificate
-
wget
:这是一个用于从网络下载文件的命令行实用工具。它通常在类Unix操作系统中使用。 -
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm
:这是要下载的文件的URL。在这种情况下,它是适用于el7(Enterprise Linux 7)发行版的GitLab Community Edition(CE)的RPM格式软件包。版本为12.9.0-ce.0,针对x86_64架构构建。 -
--no-check-certificate
:这个选项禁用SSL证书检查。在通过HTTPS连接到服务器时使用,它告诉wget
不要验证服务器的SSL/TLS证书。这在证书是自签名的或者存在证书验证问题时很有用。
小插曲:
- wget:command not found 的解决办法:yum install wget
- Issued certificate has expired 的解决办法:加参数 --no-check-certificate
安装软件包
rpm -ivh gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm
-
rpm
:这是用于处理RPM包的命令行工具。 -
-ivh
:这是rpm
命令的选项,指定了安装模式以及输出的详细程度。-i
:表示安装模式。-v
:表示详细模式,即在安装过程中显示详细信息。-h
:表示以哈希(hash)形式显示进度。
-
gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm
:这是要安装的RPM包的文件名。在这个例子中,是GitLab Community Edition(CE)的版本为12.9.0-ce.0,适用于el7(Enterprise Linux 7)发行版,针对x86_64架构构建的RPM软件包。
修改gitlab配置文件
vi /etc/gitlab/gitlab.rb
找到 external_url,根据实际需要将 url 改为对应的 ip +端口或域名等,最后 :wq 保存。
重新加载配置
gitlab-ctl reconfigure
命令拓展:
#重启命令
gitlab-ctl restart
#查看启动日志
gitlab-ctl tail
开放防火墙端口
gitlab 默认端口是80,可以修改其他端口
#开放80端口
##–zone=public:指定了要配置的防火墙区域。在这里,public 是一个预定义的防火墙区域,它对应于一个公共网络;
##–add-port=80/tcp:指定要打开的端口。在这个例子中,它是端口号 80,并且指定了使用 TCP 协议;
##–permanent:表示这是一个永久性的配置更改。这意味着一旦这个命令被执行并且防火墙重新加载,所指定的端口将在系统重新启动后仍然保持打开。
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重启防火墙
systemctl restart firewalld.service
访问GitLab
用户名为:root
密码(输入以下命令自行查看):
vi /etc/gitlab/initial_root_password
到此,恭喜您成功完成 GitLab 的本地安装部署!你现在拥有一个强大的版本控制和协作平台,可以在本地环境中使用。
在结束之前,为你提供一些建议和提示:
-
验证安装: 在浏览器中访问你的 GitLab 实例,确保能够登录并访问仪表板。检查是否一切正常,包括项目的创建和存储库的访问。
-
定期备份: 定期备份 GitLab 数据是一个良好的实践。确保备份包括数据库、存储库和配置文件。
-
安全性配置: 根据你的需求,考虑配置 HTTPS、用户身份验证和其他安全性设置。确保 GitLab 实例受到保护。
-
社区支持: 如果你在使用 GitLab 过程中遇到问题,可以参考 GitLab 的官方文档和社区论坛。GitLab 社区非常活跃,你可以在那里获得帮助和支持。