运维部署
搭建一个单机版的k8s
Gitlab部署及使用
docker-compose安装Harbor
LDAP部署
Chrony时钟源部署
PXE批量安装
wiki.js部署指南
常用源
常用脚本
阿里云ossfs部署
华为光交划zone
Ubuntu虚拟部署FusionCompute
Rancher部署
AIX7.0安装JAVA
eggo部署K8S
Harbor本地镜像仓库离线安装及使用
使用kubeadm部署K8S(docker+CRI+Flannel)集群
使用kubeadm部署K8S(containerd+Calico)集群
AIX7.0安装JAVA
Elasticsearch单机部署
本文档使用 MrDoc 发布
-
+
首页
Gitlab部署及使用
GitLab是一个开源的Git仓库管理工具,用于版本控制、代码审查、问题跟踪和持续集成等。它提供了一个集成的开发环境,使团队成员可以在一个平台上协同开发和管理项目。本文介绍如何在Ubuntu或RHEl上安装GitLab,及其常见的使用教程。 GItlab 提供企业版(Gitlab EE)和社区版(Gitlab CE)。在这篇文章中,我们将介绍社区版。 ## 准备工作 - 运行Ubuntu或RHEl且具有 SSH 访问权限的虚拟或专用服务器。 - 具有管理员权限的 Sudo 用户 - 4核或更多的CPU(建议的最小内核数为 4 个,最多支持 500 个用户) - 4G及以上的内存(4 GB RAM 是所需的最小内存大小,最多支持 500 个用户) 官方推荐:https://docs.gitlab.com/ee/install/requirements.html ## 安装GitLab 本文介绍以下两种方式,安装方式差异说明如下,您可以根据需要选择其中一种方式: | **差异** | **Linux安装包** | **Docker Engine** | | ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | 安装方式 | 可以在Linux系统中直接运行安装包进行安装。 | 通过在Docker Engine上运行GitLab容器来实现安装。 | | 系统依赖性 | 依赖于特定的系统运行库和依赖项,需要根据操作系统版本和配置进行相应的安装和配置。 | 不需要考虑Docker所在实例系统的依赖性,所有的依赖关系都被包含在Docker镜像中。 | | 灵活性和可移植性 | 提供了更多的灵活性和自定义选项,可以根据需求进行自定义配置和调整。但是,可能需要更多的系统管理和维护工作。 | 提供了更高的可移植性和一致性,可以在不同的环境中轻松部署和运行GitLab容器。 | | 版本管理 | 通常需要手动管理和升级GitLab的版本,需要下载更新的安装包并进行相应的升级操作。 | 可以通过拉取更新的Docker镜像来实现版本管理,只需简单地重新运行容器即可。 | | 系统资源利用 | 运行在虚拟机或主机上,会占用一定的系统资源。 | 将GitLab作为一个容器运行,可以更有效地利用系统资源,并且容器之间相互隔离,不会对宿主机产生影响。 | ### 使用Linux安装包安装GitLab **安装GitLab所需的依赖包** ```bash # Ubuntu 20.04 and 22.04 $ sudo apt-get update $ sudo apt-get install -y curl openssh-server ca-certificates tzdata perl # Postfix用于GitLab发送电子邮件通知。如果您想使用其他解决方案发送电子邮件,请跳过此步骤并在安装GitLab后配置外部SMTP服务器。具体操作,请参见配置外部 SMTP 服务器:https://docs.gitlab.cn/omnibus/settings/smtp.html。 $ sudo dnf install postfix $ sudo systemctl enable postfix $ sudo systemctl start postfix # AlmaLinux and RedHat versions 8 and 9 $ sudo dnf install -y curl policycoreutils openssh-server perl # 启动ssh并设置开机自启 $ sudo systemctl enable sshd $ sudo systemctl start sshd # 打开防火墙 $ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https $ sudo systemctl reload firewalld ``` **添加GitLab软件包仓库** ```bash # ubuntu $ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash # RHEl $ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash ``` **安装Gitlab** ```bash # ubuntu $ sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ce # RHEL $ sudo EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee ``` EXTERNAL_URL可以填写ip也可以填写域名 ### 使用Docker安装GitLab **安装docker** ```bash # ubuntu # step 1: 安装必要的一些系统工具 $ sudo apt-get update $ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # step 2: 安装GPG证书 $ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # Step 3: 写入软件源信息 $ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # Step 4: 更新并安装Docker-CE $ sudo apt-get -y update $ sudo apt-get -y install docker-ce # RHEL # step 1: 安装必要的一些系统工具 $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 $ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3 $ sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo # Step 4: 更新并安装Docker-CE $ sudo yum makecache fast $ sudo yum -y install docker-ce # Step 4: 开启Docker服务 $ sudo service docker start ``` **启动Docker服务,并设置开机自启动** ```bash $ sudo systemctl start docker $ sudo systemctl enable docker ``` **创建Docker容器的挂载数据目录** ```bash $ sudo mkdir -p /srv/gitlab ``` GitLab 容器使用主机挂载的卷来存储持久化数据: | 本地路径 | 容器路径 | 作用 | | :------------------- | :---------------- | :------------------------- | | `/srv/gitlab/data` | `/var/opt/gitlab` | 用于存储应用程序数据。 | | `/srv/gitlab/logs` | `/var/log/gitlab` | 用于存储日志。 | | `/srv/gitlab/config` | `/etc/gitlab` | 用于存储 GitLab 配置文件。 | **安装GitLab容器镜像** ```shell sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 8080:80 --publish 5000:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ --shm-size 256m \ gitlab/gitlab-ce:latest ``` HTTP端口:8080 HTTPS端口:443 SSH端口:5000 冒号前是映射到宿主机的端口,冒号后是容器使用的端口 **查看容器状态** ```bash sudo docker ps -a ``` 初始化过程可能需要很长时间。您可以通过以下方式跟踪此过程: ```bash $ sudo docker logs -f gitlab ``` ## 使用Gitlab **获取GitLab的登录密码** - Linux安装包方式:`sudo cat /etc/gitlab/initial_root_password` - Docker Engine安装方式:`sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password` > 出于安全原因,24小时后,该文件会被自动删除,建议您安装成功,首次登录之后,立即修改初始密码。 **登录GitLab** - Linux安装包方式:在浏览器的地址栏中,输入`http://主机IP`即可进入GitLab的登录界面。 - Docker安装方式:在浏览器的地址栏中,输入`http://主机IP:8080`即可进入GitLab的登录界面。 首次登录使用用户名`root`,密码为步骤1获取的密码。  **创建项目** 1、在GitLab的主页中,单击**Create a project**。  2、单击**Create blank project**,设置**Project name**和**Project URL**,然后单击**Create project**。 本文以mywork项目为例进行说明。  配置免密pull/push(也可以选择使用账号密码) ```bash # 安装Git工具。 $ sudo yum install git # 生成密钥对文件id_rsa。 $ ssh-keygen # 查看并复制公钥文件id_rsa.pub中的内容,便于后续步骤使用。 $ cat ~/.ssh/id_rsa.pub ``` 添加SSH key 在当前**project**页面,单击**Add SSH key**。  将公钥文件`id_rsa.pub`中的内容粘贴到`Key`所在的文本框中。  单击**Add key**。 SSH Key添加完成后,如下图所示。  复制Clone链接,该链接在进行克隆操作时需要使用。  1. 配置使用Git仓库的人员信息。 1. 配置使用Git仓库的人员姓名。 ```shell git config --global user.name "testname" ``` 2. 配置使用Git仓库的人员邮箱。 ```shell git config --global user.email "abc@example.com" ``` 2. 克隆已创建的项目到本地。 ```shell git clone git@101.132.XX.XX:root/mywork.git ```  3. 上传文件到GitLab服务器。 a. 进入到项目目录。 ```shell cd mywork/ ``` b. 创建需要上传到GitLab中的目标文件。 ```shell echo "test" > /home/test/test.sh ``` c. 将目标文件或者目录复制到项目目录下。 ```shell cp /home/test/test.sh ./ ``` d. 将`test.sh`文件加入到索引中。 ```shell git add test.sh ``` e. 将`test.sh`提交到本地仓库。 ```shell git commit -m "test.sh" ``` f. 将文件同步到GitLab服务器上。 ```shell git push -u origin main ```  在网页中查看上传的`test.sh`文件已经同步到GitLab服务器中。  如果您想了解更多的Gitlab操作,例如GitLab常用命令、数据备份、配置选项、用户管理、与其他服务集成、故障排除等,请参见[GitLab官方文档](https://docs.gitlab.com/)。 ## Gitlab配置 **配置访问域名** ```bash $ vim /srv/gitlab/config/gitlab.rb # 顶部附近是external_url配置线。更新它以匹配您的域。更改http为https以便GitLab会自动将用户重定向到受Let's加密证书保护的站点: external_url 'https://example.com' # 接下来,查找letsencrypt['contact_emails']设置。此设置定义了一个电子邮件地址列表,如果您的域存在问题,Let的加密项目可以用来与您联系。取消注释并填写此内容是一个好主意,以便您知道任何问题: letsencrypt['contact_emails'] = ['sammy@example.com'] ``` **配置SMTP** ```bash $ vim /srv/gitlab/config/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.exmail.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "xxxx@xx.com" gitlab_rails['smtp_password'] = "password" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com' gitlab_rails['smtp_domain'] = "exmail.qq.com" ``` **使用自定义证书** 可使用自签名证书或 Let's Encrypt 为 GitLab 实例配置 HTTPS,这里我们配置自定义证书 ```bash # 将你的ssl证书放入/srv/gitlab/config/ssl/ # 修改gitlab配置文件 sudo vim /srv/gitlab/config/gitlab.rb external_url 'https://域名' nginx['enable'] = true nginx['redirect_http_to_https'] = true # 访问http自动跳转https nginx['ssl_certificate'] = "/etc/gitlab/ssl/域名的ssl证书.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/域名的ssl证书.key" ``` 证书可以通过域名服务商获取也可以使用自签名证书,以下是自签名证书步骤 ```bash $ sudo mkdir /srv/gitlab/ssl $ sudo chmod 755 /srv/gitlab/ssl $ sudo openssl genrsa -des3 -out /srv/gitlab/ssl/域名.key 2048 # 输入密码并记住它。 # 使用以下命令创建 CSR: $ sudo openssl req -new -key /srv/gitlab/ssl/域名.key -out /srv/gitlab/ssl/域名.csr # 从密钥中删除密码串,依次执行以下命令: $ sudo cp -v /srv/gitlab/ssl/域名.{key,original} $ sudo openssl rsa -in //srv/gitlab/ssl/域名.original -out /srv/gitlab/ssl/域名.key $ sudo rm -v /srv/gitlab/ssl/域名.original # 创建证书文件 $ sudo openssl x509 -req -days 1460 -in /srv/gitlab/ssl/域名.csr -signkey /srv/gitlab/ssl/域名.key -out /srv/gitlab/ssl/域名.crt # 使用下面的 rm 命令删除 CSR 文件: $ sudo rm -v /srv/gitlab/ssl/域名.csr # 设置密钥和证书文件的权限: $ sudo chmod 600 /srv/gitlab/ssl/域名.key $ sudo chmod 600 /srv/gitlab/ssl/域名.crt ``` **相关命令** ```bash # 当配置文件修改后,必须重新加载才能生效 # 当使用docker安装gitlab时,执行命令需要先进入容器: docker exec -it gitlab /bin/bash # 或者在外部直接执行: docker exec -it gitlab gitlab-ctl status # 检查配置 gitlab-ctl check-config # 重启服务 gitlab-ctl restart # 启动服务 gitlab-ctl start # 查看服务状态 gitlab-ctl status # 停止服务 gitlab-ctl stop # 查看服务列表 gitlab-ctl service-list # 查看日志 gitlab-ctl tail # 重新加载配置 gitlab-ctl reconfigure ```
阿星
2024年1月6日 18:07
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码