一文带你部署私有化代码仓库gitlab

在 Huawei Cloud EulerOS 2.0 标准版 64 位(对应 CentOS 8)上安装和配置 GitLab

一、准备工作

  1. 系统环境确认
    • 确保你使用的是 Huawei Cloud EulerOS 2.0 标准版 64 位系统,其在软件包管理等方面与 CentOS 8 有一定的兼容性。
  2. 下载 GitLab CE 安装包
    • 使用 nohupwget 命令在后台下载 GitLab Community Edition(CE)安装包。命令如下:
nohup wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-16.9.2-ce.0.el8.x86_64.rpm/download.rpm &
  • 此命令将从指定的 URL 下载 GitLab CE 16.9.2 版本的 RPM 安装包,并在后台运行下载任务,即使终端关闭也不会中断下载。

二、安装 GitLab

  1. 安装依赖包
    • 在安装 GitLab 之前,需要安装一些必要的依赖包。执行以下命令:
yum install policycoreutils-python-utils openssh-server perl
  • policycoreutils-python-utils 用于管理 SELinux 策略,GitLab 在安装和运行过程中可能需要与 SELinux 交互。
  • openssh-server 是用于提供远程登录和文件传输等功能的服务,GitLab 可能依赖于它进行一些操作。
  • perl 是一种脚本语言,GitLab 的安装过程中可能会用到一些基于 Perl 的脚本。
  1. 安装 GitLab CE
    • 下载完成后,使用 rpm 命令安装 GitLab CE 安装包。假设下载的安装包位于 /opt 目录下,执行以下命令:
rpm -ivh /opt/gitlab-ce-16.9.2-ce.0.el8.x86_64.rpm
  • 此命令将以详细信息和哈希校验的方式安装 GitLab CE 软件包到系统中。
  1. 安装 posfix
    安装 Postfix 以发送邮件通知
sudo dnf install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

SMTP 配置部分参考

三、配置 GitLab

  1. 编辑配置文件
    • 使用文本编辑器(如 vi)打开 GitLab 的配置文件 /etc/gitlab/gitlab.rb
vi /etc/gitlab/gitlab.rb
  • 在配置文件中,找到 external_url 配置项,将其设置为你的服务器的公网 IP 或者域名。例如:
external_url 'http://ip'
  • 确保将 IP 地址或域名替换为你实际使用的服务器地址,这将用于访问 GitLab 的 Web 界面。

nginx监听配置:

cat /var/opt/gitlab/nginx/conf/gitlab-http.conf

  server { ## HTTPS server
    listen *:80;
    server_name  域名/ip;
  }

web页面复制项目时项目地址显示部分配置:

vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

  ## GitLab settings
  gitlab:
    ## Web server settings (note: host is the FQDN, 不包含http://等协议部分 )
    host: 域名/ip     
    port: 80
    https: false  // 如果是域名设置为true,上面也要更改为443端口
  1. 重新加载配置
    • 完成配置文件的修改后,使用 gitlab-ctl 命令重新加载配置:
gitlab-ctl reconfigure
  • 此命令将根据新的配置文件设置重新配置 GitLab 的各项参数,包括 Web 服务器、数据库连接等配置信息。

四、检查 GitLab 状态

  1. 查看服务状态
    • 使用 gitlab-ctl status 命令查看 GitLab 各个组件的运行状态:
gitlab-ctl status
  • 该命令将显示 GitLab 的 Web 服务器、数据库、后台任务等组件的运行状态,确保所有组件都正常运行。如果某个组件出现问题,你可以根据错误信息进一步排查和解决问题。

五、获取初始 root 密码

  1. 查看初始密码
    • 在首次安装 GitLab 后,root 用户的初始密码存储在文件 /etc/gitlab/initial_root_password 中。使用以下命令查看:
cat /etc/gitlab/initial_root_password
  • 记录下初始密码,然后使用该密码登录到 GitLab 的 Web 界面进行后续操作,如创建项目、添加用户等。

六、Git 全局设置(可选)

  1. 设置用户名和邮箱
    • 如果你计划在本地使用 Git 与 GitLab 进行交互,可以进行全局的 Git 设置。执行以下命令:
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
  • user.nameuser.email 设置为你自己的信息,这些信息将用于在提交代码时标识你的身份。

七、防火墙配置

  1. 查看防火墙状态
    • 在 EulerOS 2.0 中,默认的防火墙服务可能是 firewalld。首先,检查防火墙服务的状态:
systemctl status firewalld
  • 如果防火墙未运行,你可以根据需要决定是否启动它。若要启动防火墙,执行以下命令:
systemctl start firewalld
  • 并设置防火墙开机自启:
systemctl enable firewalld
  1. 开放 GitLab 相关端口
    • GitLab 运行需要多个端口,常见的包括用于 HTTP 访问的 80 端口(如果使用默认的 external_url 配置),以及用于 SSH 访问的 22 端口(如果使用 SSH 方式进行 Git 操作)。使用以下命令开放这些端口:
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=22/tcp --permanent
  • --permanent 选项表示将端口规则永久保存,否则规则在防火墙重启后将丢失。
  • 如果你在 gitlab.rb 配置文件中修改了 external_url 为非标准端口(例如 http://110.238.81.24:8080),则需要开放相应的自定义端口,如:
firewall-cmd --add-port=8080/tcp --permanent
  1. 重新加载防火墙规则
    • 开放端口后,需要重新加载防火墙规则使其生效:
firewall-cmd --reload
  1. 验证端口开放情况
    • 可以使用 netstat 命令或其他网络扫描工具来验证 GitLab 相关端口是否成功开放。例如:
netstat -tln | grep -E '80|22'
  • 此命令将显示正在监听的 TCP 端口中是否包含 80、22。如果端口显示为 LISTEN 状态,则表示端口已成功开放并正在监听连接请求。

通过以上防火墙配置步骤,可以确保外部客户端能够正常访问 GitLab 服务,同时保证服务器的网络安全性。
在实际环境中,云主机你需要在防火墙策略中的入站规则中开放80、22或者443域名端口,你可能需要根据具体的网络拓扑和安全策略进一步调整防火墙规则,例如限制访问来源 IP 范围等。

八、推送现有项目到 GitLab

(一)推送现有文件夹

  1. 初始化 Git 仓库
    • 进入要推送的现有文件夹:
cd existing_folder
  • 在该文件夹中初始化 Git 仓库,并指定初始分支为 master
git init --initial-branch=master
  1. 查看和添加远程仓库
    • 使用 git remote -v 命令查看当前是否已经关联了远程仓库(如果是新文件夹,通常没有关联)。
    • 使用以下命令添加远程仓库,将 http://ip/web.git 替换为你实际的 GitLab 项目仓库地址:
git remote add origin http://ip/web.git
  1. 提交和推送代码
    • 将文件夹中的所有文件添加到暂存区:
git add .
  • 提交代码,并添加提交注释:
git commit -m "Initial commit"
  • 推送代码到远程仓库的 master 分支,并设置上游分支:
git push --set-upstream origin master

(二)推送现有的 Git 仓库

  1. 重命名和添加远程仓库
    • 进入现有的 Git 仓库目录:
cd existing_repo
  • 如果之前已经关联了远程仓库(如 origin),可以先重命名它:
git remote rename origin old-origin
  • 然后添加新的远程仓库,同样将 http://ip/niu-pay/web.git 替换为实际地址:
git remote add origin http://ip/niu-pay/web.git
  1. 推送代码和标签
    • 推送所有分支到远程仓库:
git push --set-upstream origin --all
  • 推送所有标签到远程仓库:
git push --set-upstream origin --tags

(三)查看远程仓库信息

  1. 查看远程仓库关联
    • 使用 git remote -v 命令查看当前仓库关联的远程仓库信息,包括远程仓库的名称(如 origin)和对应的 URL。
    • 如果需要删除某个远程仓库关联,可以使用 git remote remove <远程仓库名称> 命令,例如 git remote remove old-origin

九、代码仓库定期备份

先做一次初始备份

mkdir /var/opt/gitlab/backups
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups
gitlab-backup create

/etc/gitlab/gitlab.rb配置文件中的gitlab_rails[‘backup_path’] = ‘/path/to/your/backups’ 这行是定义数据库默认备份路径的

设置定时备份计划(凌晨五点开始)

crontab -e

0 5 * * * /usr/bin/gitlab-backup create && find /var/opt/gitlab/backups -type f -name '*.tar' | sort -nr | tail -n +3 | xargs rm --

通过以上步骤,你可以在 Huawei Cloud EulerOS 2.0 标准版 64 位系统上成功安装和配置 GitLab,并将本地项目推送到 GitLab 仓库中进行管理。在实际操作过程中,请根据你的实际需求和环境进行相应的调整和优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值