阿里云 centOS 7 下搭建gitlab

本文详细介绍了如何在CentOS 7上安装和配置GitLab,包括使用清华大学镜像源、防火墙设置、Postfix邮件服务配置、端口修改、自动备份策略以及汉化过程。此外,还提供了GitLab的基本使用方法,如项目创建、SSH密钥配置、代码推送及SourceTree的安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和同事讨论以及看过网上的对比后,决定选用gitlab作为我们的版本管理器

 

git与svn 对比文件详见https://www.cnblogs.com/dazhidacheng/p/7478438.html

 

gitlab 官方文档https://docs.gitlab.com/ce/install/README.html

 

gitlab 汉化指南https://gitlab.com/xhang/gitlab/wikis/home

 

部署以及汉化参考教程 https://www.cnblogs.com/supery007/p/9053774.html

 

官方gitlab  cent0S7 安装教程https://about.gitlab.com/install/#centos-7

 

阿里官方 cent0S7 安装gitlab教程https://blog.youkuaiyun.com/zhaoyanjun6/article/details/79144175

 

centos出现“FirewallD is not running”怎么办 https://www.cnblogs.com/kccdzz/p/8110143.html

 

gitlab搭建提示inet_interfacesJob for postfix.service failed because the control process exited with erro

https://blog.youkuaiyun.com/u013697959/article/details/78041465

 

gitlab自动备份参考 https://blog.youkuaiyun.com/utopiaprince/article/details/50039989

 

 

1.安装gitlab

 

查看服务器系统版本

 

$ lsb_release -a

 

 

 

在官网找到对应版本的安装教程

 

https://about.gitlab.com/install/#centos-7

 

添加清华大学镜像源(ps:内容不能有空格)

新建 /etc/yum.repos.d/gitlab_gitlab-ce.repo,内容为:

[gitlab-ce]

name=Gitlab CE Repository

baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/

gpgcheck=0

enabled=1

 

 

 

安装依赖

 

sudo yum install -y curl policycoreutils-python openssh-server

sudo systemctl enable sshd

sudo systemctl start sshd

sudo firewall-cmd --permanent --add-service=http

 

 

 

警报:防火墙没有打开 

参考centos出现“FirewallD is not running”怎么办 https://www.cnblogs.com/kccdzz/p/8110143.html

 

启动防火墙

systemctl start firewalld

 

 

 

查看防火墙状态  启动成功

systemctl status firewalld

 

再次执行 成功

sudo firewall-cmd --permanent --add-service=http

sudo systemctl reload firewalld

 

 

 

安装Postfix以发送通知电子邮件

sudo yum install postfix

sudo systemctl enable postfix

sudo systemctl start postfix

 

 

 

 

参考gitlab搭建提示inet_interfacesJob for postfix.service failed because the control process exited with error

https://blog.youkuaiyun.com/u013697959/article/details/78041465

(PS:注意ipv4 是小写)

 

 

安装依赖包。

sudo yum install -y curl policycoreutils-python openssh-server

设置SSH开机自启动并启动SSH服务。

sudo systemctl enable sshd

sudo systemctl start sshd

安装Postfix来发送通知邮件。

sudo yum install postfix

设置Postfix开机自启动。

sudo systemctl enable postfix

启动Postfix服务。

  1. 输入命令vim /etc/postfix/main.cf打开main.cf文件并找到下图内容:

  2. 将这行代码改为inet_interfaces = all,然后按Esc键,然后输入:wq并回车以保存并关闭main.cf文件。

  3. 输入命令sudo systemctl start postfix启动Postfix服务。

添加GitLab软件包仓库。

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

安装GitLab。

sudo EXTERNAL_URL="GitLab服务器的公网IP地址" yum install -y gitlab-ce

sudo EXTERNAL_URL="120.78.xxx.xxx" yum install -y gitlab-ce

 

去阿里云安全管制添加8089的端口     //这个超级总要,很可能搞半天就是因为这个端口管制问题导致了外网访问不了

 

。。。。。

 

打开阿里云服务器防火墙的 8089 端口

systemctl start firewalld

firewall-cmd --zone=public --add-port=8089/tcp --permanent

systemctl restart firewalld

 

修改 Gitlab 默认端口配置

打开 /etc/gitlab/gitlab.rb 文件,找到 external_url 字段,如下图所示:

把 http://47.94.230.26 改为 http://47.94.230.26:8089

 

然后执行 gitlab-ctl reconfigure 让配置立即生效。

在浏览器中访问 http://47.94.230.26:8089 , 就可以看到 Gitlab 的页面了。

 

 

GitLab备份和恢复

备份

 

# 可以将此命令写入crontab,以实现定时备份

    /usr/bin/gitlab-rake gitlab:backup:create

    

备份的数据会存储在/var/opt/gitlab/backups,用户通过自定义参数 gitlab_rails['backup_path'],改变默认值。

 

gitlab自动备份参考 https://blog.youkuaiyun.com/utopiaprince/article/details/50039989

 

 

gitlab自动备份

 

crontab

在ubuntu版本下,crontab工具是默认安装的,配置文件在/etc/crontab里。

编写自动备份脚本  

 

touch auto_backup.sh

sudo chmod +x auto_backup.sh

sudo vim auto_backup.sh

#!/bin/bash

 

BACKUP_PATH1="/var/opt/gitlab/backups"

 

DAY=2

 

gitlab-rake gitlab:backup:create;

find $BACKUP_PATH1 -name "*.tar" -ctime +$DAY -type f -exec rm -rf {} \;

定时执行脚本

 

vi /etc/crontab

 

0 20 * * * root /var/opt/gitlab/backups/auto_backup.sh -D 1   //每天晚上八点执行脚本一次

 

恢复

 

 

# 停止unicorn和sidekiq,保证数据库没有新的连接,不会有写数据情况

    sudo gitlab-ctl stop unicorn

    sudo gitlab-ctl stop sidekiq

    

    # 进入备份目录进行恢复,1476900742为备份文件的时间戳

    cd /var/opt/gitlab/backups

    gitlab-rake gitlab:backup:restore BACKUP=1476900742

    cd -

    

    # 启动unicorn和sidekiq

    sudo gitlab-ctl start unicorn

    sudo gitlab-ctl start sidekiq

 

 

 

新建项目

使用root用户登录进gitlab会后,点击“new project“创建一个项目,比如项目命名为“kuaijiFirstProject”。

然后会发现,硬盘上已经生成了一个git文件:

/var/opt/gitlab/git-data/repositories/root/kuaijiFirstProject.git

 

 

 

汉化

https://gitlab.com/xhang/gitlab.git

三、安装汉化包

3.1 准备环境

     wget https://gitlab.com/xhang/gitlab/-/archive/11-11-stable-zh/gitlab-11-11-stable-zh.tar.gz

tar zxvf gitlab-11-11-stable-zh.tar.gz

    

3.2 停止gitlab

[root@db01 ~]# gitlab-ctl stop

3.3  汉化操作

# 查看改汉化补丁版本

[root@db01 src]# cat gitlab-11-11-stable-zh/VERSION

11.11.0

# 查看系统的版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

11.11.0

# 备份版本

cd /opt/gitlab/embedded/service/gitlab-rails/

tar zcvf gitlab-rails.bak.tar.gz gitlab-rails/

 

 

 

3.5 替换到gitlab中

cd gitlab-11-11-stable-zh

/bin/cp -rf * /opt/gitlab/embedded/service/gitlab-rails/

 

3.6 重新配置gitlab

[root@db01 tmp]# gitlab-ctl reconfigure

[root@db01 tmp]# gitlab-ctl start

 

gitlab的使用

ssh -T -p 55725 git@gitlab.domain.com

注意:<fornt style="color:red">以上这条 ssh 命令测试通过,未必代表就能 git clone 代码,git clone 代码需要执行命令的账户有写权限,如果是普通用户用 sudo git clone 那么 git 就会使用的 root 账号的 Private Key。 </fornt>

1.登录

管理员会为使用者开通账号并设置权限。

2.使用者在客户端生成ssh key

参考文章: http://www.jianshu.com/p/142b3dc8ae15

ssh-keygen -t rsa -C "huangdc@domain.com"

3.将公钥的内容copy到gitlab用户设置里面的“SSH Keys”

Windows: clip < ~/.ssh/id_rsa.pub

Mac: pbcopy < ~/.ssh/id_rsa.pub

GNU/Linux (requires xclip): xclip -sel clip < ~/.ssh/id_rsa.pub

4.测试ssh连接

#标准测试代码:ssh -T git@gitlab.com

ssh -T -p 55725 git@gitlab.domain.com #修改过端口号的测试代码

如果连接成功的话,会出现以下信息:

Welcome to GitLab, huangdc!

说明:实际上执行这条ssh命令,所使用的远程服务器的用户是git,这个用户是在安装gitlab的时候生成的,所有使用gitlab服务器的ssh客户端,都是使用git这个用户。在这里的用户“huangdc”是通过gitlab创建的,是用于gitlab的权限管理,也用作标识提交代码的开发者信息,不要跟ssh的用户混淆了。

如何使用多个SSH公钥(自己电脑在使用多个代码仓库)

原理其实是:因为每个仓库都需要 ssh 连接,而 ssh 命令默认是使用 .ssh 目录下面的私钥去连接代码仓库,所以我们可以在 .ssh/config 目录里面针对不同的仓库域名重定义它的私钥。

例子如下:

编辑文件: vim /Users/david/.ssh/config

Host gitlab.domain.com

IdentityFile /Users/david/.ssh/id_rsa

命令行环境下初始化项目

  1. 首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:

ssh://git@gitlab.domain.com:55725/huangdc/test.git

  1. 在本地初始化仓库、提交代码、推送到远程 master 分支。

git clone ssh://git@gitlab.domain.com:55725/huangdc/test.git

cd test

touch README.md

git add README.md

git commit -m "add README"

git push -u origin master

命令行环境下迁移旧的项目

  1. 首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:

#注意:已存在代码的旧项目只能推送到空的远程代码仓库

ssh://git@gitlab.domain.com:55725/dev/memberApi.git

  1. 本地初始化项目、关联远程仓库、推送到远程仓库

cd /Users/david/work_www/memberApi

git init

git remote add origin ssh://git@gitlab.domain.com:55725/dev/memberApi.git

git push -u origin master

SourceTree的安装和打开

  1. 官网下载链接:https://www.sourcetreeapp.com/

  2. 打开SourceTree之后,需要登录Atlassian账号来激活SourceTree。可以使用Google账号直接关联登录。

  3. 登录后还需要一些设置,以最简单的方式跳过就行。

<think>嗯,用户想在阿里云ECS上搭建GitLab。首先,我需要回忆一下之前看到的参考资料,特别是引用2和引用3,里面有详细的安装步骤。用户可能用的是CentOS 7系统,所以得先安装依赖包,比如curl、policycoreutils-python这些。然后要启动sshd服务,可能还要处理防火墙的问题,不过阿里云的安全组可能需要另外配置,所以得提醒用户注意安全组的设置。 接下来是下载GitLab的安装脚本,这里要用curl命令执行官方的脚本,然后设置EXTERNAL_URL,这个域名用户可能需要换成自己的,或者用ECS的公网IP。安装完成后,运行gitlab-ctl reconfigure,这个步骤有时候会花点时间,用户需要耐心等待。 然后配置部分,修改external_url可能是必须的,用户需要知道怎么编辑配置文件,用vim或者其他编辑器。还有邮件通知的设置,用户如果不需要可能可以跳过,但最好还是提一下,因为企业环境通常需要。另外备份和升级的步骤,用户可能后续会用到,也应该包括进去。 常见问题方面,内存不足的问题在引用4提到推荐配置是8核16G,但用户可能用的是低配,比如2核4G,这时候需要调整unicorn的worker,减少进程数量,避免内存耗尽。502错误可能跟端口冲突或者内存有关,需要检查这些方面。域名解析问题,用户如果没域名,直接用IP的话,需要确认安全组是否开放了端口。 安全建议部分,HTTPS是必要的,但用户可能需要先申请证书,或者用Let's Encrypt自动配置。定期备份很重要,避免数据丢失,gitlab-rake命令可以帮到他们。权限管理也是企业用户关心的,要提到如何设置项目权限和用户组。 最后,相关的问题可能涉及性能优化、迁移现有仓库或者CI/CD集成,这些可以作为后续的问题推荐给用户,帮助他们进一步使用GitLab。 需要确保所有步骤清晰,命令正确,特别是LaTeX格式的部分,不过这里可能用不上数学公式。重点是把引用中的信息整合成步骤,并加入注意事项和常见问题,让用户能顺利安装和解决可能遇到的问题。</think>### 阿里云ECS服务器安装和配置GitLab步骤 #### 一、环境准备 1. **服务器配置要求** - **最低配置**:2核4GB内存(适用于小型团队) - **推荐配置**:8核16GB内存,80GB系统盘(企业级场景)[^4] - 操作系统:CentOS 7.x 2. **安全组设置** - 在阿里云控制台开放以下端口:`80`(HTTP)、`443`(HTTPS)、`22`(SSH)[^2] - *注:ECS默认防火墙可能已关闭,无需额外配置`firewalld`* --- #### 二、安装GitLab 1. **安装依赖包** ```bash sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo systemctl start sshd ``` 2. **下载GitLab安装脚本** ```bash curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash ``` 3. **设置域名并安装GitLab** ```bash sudo EXTERNAL_URL="http://your-domain.com" yum install -y gitlab-ee ``` *注:将`your-domain.com`替换为ECS公网IP或已绑定的域名,例如`http://123.123.123.123`[^2]* 4. **启动服务** ```bash sudo gitlab-ctl reconfigure ``` --- #### 三、基础配置 1. **修改访问地址** 编辑配置文件`/etc/gitlab/gitlab.rb`,修改以下参数: ```ruby external_url 'http://your-domain.com' # 改为实际IP或域名 ``` 保存后执行: ```bash sudo gitlab-ctl reconfigure ``` 2. **设置邮件通知(可选)** 在`/etc/gitlab/gitlab.rb`中添加SMTP配置: ```ruby gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.example.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "gitlab@example.com" ``` 3. **备份与升级** - **备份**:`sudo gitlab-rake gitlab:backup:create` - **升级**:`sudo yum update gitlab-ee`[^3] --- #### 四、常见问题解决 1. **内存不足导致服务崩溃** - 修改`/etc/gitlab/gitlab.rb`,减少`unicorn['worker_processes']`值(如从`4`改为`2`) - 重启服务:`sudo gitlab-ctl restart` 2. **502错误(Nginx或Puma故障)** - 检查端口冲突:`sudo gitlab-ctl status` - 查看日志:`sudo journalctl -u gitlab-unicorn` 3. **域名无法解析** - 若未绑定域名,直接使用ECS公网IP访问 - 确保安全组开放HTTP/HTTPS端口 --- #### 五、安全建议 1. **启用HTTPS** - 通过Let's Encrypt自动申请证书(需绑定域名): ```ruby letsencrypt['enable'] = true letsencrypt['contact_emails'] = ['admin@example.com'] ``` 2. **定期备份** ```bash sudo crontab -e # 添加每日备份任务 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create ``` 3. **权限管理** - 通过`Admin Area > Settings`设置项目可见性 - 使用`LDAP`或`OAuth`集成企业账号 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

交叉编译之王 hahaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值