centos7 安装git_Gitlab安装及使用

Gitlab是基于Ruby on Rails开源的项目管理和代码托管平台,可以很方便的管理公司私有库,所以通常是自建Gitlab。下面来看下Gitlab服务的安装。

官方硬件需求至少需要4GB内存。在CentOS 7安装为例,安装Gitlab。

安装配置依赖包

Gitlab服务需要系统防火墙打开HTTP, HTTPS 和 SSH访问。这些依赖通常是通用的,运维人员可能已经安装好

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

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

安装邮局服务

我们可以安装Postfix进行邮件通知,注意DNS解析。如果安装有其他邮局服务,可以跳过。此外,安装Gitlab后,还需配置smtp。

sudo yum install postfix

sudo systemctl enable postfix

sudo systemctl start postfix

安装Gitlab软件包

我们可以使用官方提供的一键脚本安装包,安装最新稳定版

//输出到文件里是为了看下下载的脚本内容

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh > rpm.sh

chmod +x rpm.sh

./rpm.sh

或者在线下载官方包进行安装

wget -O gitlab.rpm https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.10.4-ce.0.el7.x86_64.rpm/download.rpm

rpm -ivh gitlab.rpm

#可以查看安装了哪些的文件,看到gitlab安装在/opt/gitlab目录下

#rpm -ql gitlab-ce-12.10.4-ce.0.el7.x86_64

也可以使用软件源安装

# 配置yum源

cat << EOF >> /etc/yum.repos.d/gitlab-ce.repo

[gitlab-ce]

name=gitlab-ce

baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6

Repo_gpgcheck=0

Enabled=1

Gpgkey=https://packages.gitlab.com/gpg.key

EOF

#更新本地yum缓存

sudo yum makecache

#安装Gitlab-ce社区版

sudo yum install gitlab-ce #自动安装最新版

sudo yum install gitlab-ce-x.x.x #安装指定版本

我们还可以将gitlab安装在docker、kubernetes等容器服务里

修改配置

默认配置文件路径:/etc/gitlab/gitlab.rb,修改配置后,需要重启服务方可生效。

配置URL

external_url 'http://gitlab.wenqy.com:80'

nginx['listen_port'] = 80

默认nginx 监听的是80 端口,如果nginx 修改端口,external_url 里面也必须带端口。gitlab安装内置默认用户root,首次访问external_url时,需要root用户登陆,设置密码。如果配置不修改重启,可能会出现502错误。

配置unicorn端口

unicorn是Ruby语言领域的一款http server软件。默认端口是8080。如果是非独享服务器,Tomcat默认端口也是8080,容易发生端口占用冲突,也会导致502错误。此时,可以需要unicorn端口。

unicorn['port'] = 8901

配置SSH

新暴露了ssh的端口8902

gitlab_rails['gitlab_ssh_host'] = '192.168.1.34'

gitlab_rails['gitlab_shell_ssh_port'] = 8902

修改ssh协议后,/etc/ssh/sshd_config配置文件新增ssh端口

#Port 22

Port 22

port 8902

防火墙开放端口

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8902 -j ACCEPT

iptables-save

iptables -nL --line-number

重启ssh服务

systemctl restart sshd.service

配置邮箱

填写配置好的smtp信息

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.wenqy.com"

gitlab_rails['smtp_port'] = 25

gitlab_rails['smtp_user_name'] = "wenqy@wenqy.com"

gitlab_rails['smtp_password'] = "123456"

gitlab_rails['smtp_domain'] = "smtp.uf-tobacco.com"

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['smtp_tls'] = false

gitlab_rails['smtp_enable_starttls_auto'] = true

gitlab_rails['smtp_openssl_verify_mode'] = 'none'

gitlab_rails['smtp_ssl'] = false

gitlab_rails['smtp_force_ssl'] = false

gitlab_rails['gitlab_email_enabled'] = true

gitlab_rails['gitlab_email_display_name'] = 'Gitlab'

gitlab_rails['gitlab_email_from'] = 'wenqy@wenqy.com'

重启后进入console测试邮箱发送

gitlab-rails console

#进入控制台,然后发送邮件

Notify.test_email('wen.qy@qq.com', '邮件标题', '邮件正文').deliver_now

重启gitlab

修改配置后,重启生效

#重启gitlab配置服务

sudo gitlab-ctl reconfigure

#重启gitlab

gitlab-ctl restart

常用命令

gitlab-ctl start #启动全部服务

gitlab-ctl restart #重启全部服务

gitlab-ctl stop #停止全部服务

gitlab-ctl restart nginx #重启单个服务

gitlab-ctl status #查看全部组件的状态

gitlab-ctl show-config #验证配置文件

gitlab-ctl uninstall #删除gitlab(保留数据)

gitlab-ctl cleanse #删除所有数据,重新开始

gitlab-ctl tail #查看服务的日志

gitlab-rails console production #进入控制台 ,可以修改root 的密码

gitlab-ctl --help #查看gitlab-ctl命令的帮助信息

汉化

如果需要汉化,汉化包与gitlab软件包版本要一致,否则可能发送意想不到的错误,汉化之前更应该先备份gitlab数据。未尝试,不建议汉化。

# 暂停gitlab

gitlab-ctl stop

# 查看gitlab版本

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

12.8.1-ee

# 下载对应版本汉化包

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

# 备份

cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}

# 汉化包覆盖

cp -rf gitlab-10-3-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/

# 启动

gitlab-ctl start

安装git

Gitlab是基于git做版本控制,访问gitlab需要安装git,在linux用yum源安装

# 修改yum源,指向163

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 下载对应版本repo文件, 放入/etc/yum.repos.d/

wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

# 如果yum命令直接卡死,造成rpm数据库异常,杀进程

# 删除rpm数据文件

rm -f /var/lib/rpm/__db.00*

# 重建rpm数据文件

rpm -vv --rebuilddb

# 清除缓存

yum clean all

yum makecache

# 安装git

yum -y install git

Groups

一个 GitLab 的组是一些项目的集合,连同关于多少用户可以访问这些项目的数据。 每一个组都有一个项目命名空间(与用户一样),所以如果一个叫 training 的组拥有一个名称是 materials 的项目,那么这个项目的 url 会是 http://server/training/materials。

5860bbd274858e0c0928cee99c4ea84f.png

gitlab-groups

每一个组都有许多用户与之关联,每一个用户对组中的项目以及组本身的权限都有级别区分。 权限的范围从 "访客"(仅能提问题和讨论) 到 "拥有者"(完全控制组、成员和项目)。 权限的种类太多以至于难以在这里一一列举,不过在 GitLab 的管理界面上有帮助链接。

项目

一个 GitLab 的项目相当于 git 的版本库。 每一个项目都属于一个用户或者一个组的单个命名空间。 如果这个项目属于一个用户,那么这个拥有者对所有可以获取这个项目的人拥有直接管理权; 如果这个项目属于一个组,那么该组中用户级别的权限也会起作用。

5abc6274e0e5e92ee587d979af2eb547.png

gitlab-project

每一个用户账号都有一个 命名空间 ,即该用户项目的逻辑集合。 如果一个叫 wenqy 的用户拥有一个名称是 springcloudstudy的项目,那么这个项目的 url 会是 http://server/wenqy/springcloudstudy 。

每一个项目都有一个可视级别,控制着谁可以看到这个项目页面和仓库。 如果一个项目是 私有 的,这个项目的拥有者必须明确授权从而使特定的用户可以访问。 一个 内部 的项目可以被所有登录的人看到,而一个 公开 的项目则是对所有人可见的。 注意,这种控制既包括 git fetch 的使用也包括对项目 web 用户界面的访问。

配置SSH Keys

我们需要经常免登录git账号进行推送代码,这时需要配置SSH Keys,将生成的RSA 公钥填入。

ce19a833600006cad032fb296657b9e8.png

gitlab-sshkeys

当通常情况下,我们已经在GitHub、码云上已经分配了账号,可能是相同的ID,也可能在一个平台上有多个账号,我们可能需要区分不同的平台和账号和一个平台的多个账号。我们可以看下同时配置GitHub两个账号,用命令生成公钥私钥对

ssh-keygen -t rsa -C "one@github.com"

ssh-keygen -t rsa -C "two@github.com"

运行命令后不要一路回车,分别在第一次对话出现"Enter file in which to save the key"的时候输入不同的文件名,避免覆盖。两份包含私钥和公钥的4个文件,后缀为.pub的文件为公钥文件。linux或mac用户一定要在~/.ssh路径下运行命令行,不然生成的文件不会出现在当前目录,Windows用户则在"C:甥敳獲用户名.ssh"目录下运行命令行。

配置config文件

在.ssh目录下创建config文件,在config文件中添加以下内容:

#github server one

Host one.github.com

Hostname github.com

User one

PreferredAuthentications publickey

IdentityFile C:甥敳獲xmn-wenqy.HELLO-WORLD.sshid_rsa

#github server two

Host two.github.com

Hostname github.com

User two

PreferredAuthentications publickey

IdentityFile C:甥敳獲xmn-wenqy.HELLO-WORLD.sshid_rsa_cloud

每个账号单独配置一个Host,每个Host要取一个别名,一般为每个Host主要配置HostName和IdentityFile两个属性,配置完保存即可。Host的名字可以自定义名字,不过这个会影响git相关命令,例如:Host one.github.com这样定义的话,使用命令git clone git@one.github.com:one/project.git,git@后面紧跟的名字改为one.github.com

为仓库设置局部的用户名和邮箱

# 取消全局 用户名/邮箱 配置

git config --global --unset user.name

git config --global --unset user.email

# 单独为每个repo设置 用户名/邮箱

git config user.name "one_name" ; git config user.email "one_email"

git config user.name "two_name" ; git config user.email "two_email"

配置好SSH Keys后就可以免登录推送代码到gitlab了。

钩子

GitLab 在项目和系统级别上都支持钩子程序。 对任意级别,当有相关事件发生时,GitLab 的服务器会执行一个包含描述性 JSON 数据的 HTTP 请求。 这是自动化连接你的 git 版本库和 GitLab 实例到其他的开发工具,比如 CI 服务器,聊天室,或者部署工具的一个极好方法。

对应root超级用户,有更多的管理权限,有管理面板,可以对使用者、项目进行管理和统计分析等等。

架构

gitlab 依赖的组件默认安装在/var/opt/gitlab/目录下

f0d15219ad5acc581e191627ef8faf44.png

gitlab-arch

Gitlab利用Nginx或者Apache作为web前端代理到Unicorn web服务端。默认情况下,Unicorn和前端之间的通信是通过Unix domain socket进行的,但也支持通过TCP转发请求。利用Sidekiq从Redis队列中拉取job并处理,是Ruby后台任务处理器;利用Redis缓存作业、会话等信息;利用PostgreSQL做持久化数据库,保存用户、权限、issues等元信息;利用GitLab Shell接收SSH请求,GitLab Shell通过Gitaly访问存储库,为Git对象提供服务,并与Redis通信,将作业提交给Sidekiq供GitLab处理。GitLab Shell通过GitLab API查询以确定授权和访问;Gitaly从GitLab Shell和GitLab web app执行Git操作,并为GitLab web app提供一个API,以从Git获取属性(例如titile、、branches、tags、其他元数据),并获取blob(例如diff、commits、files);GitLab Workhorse是由GitLab设计的程序,可帮助缓解Unicorn的压力,它旨在充当智能反向代理,以帮助加快整个GitLab的运行速度。

此外,官方推荐服务器CPU核数至少4核,存储空间不少于gitlab所有存储库之和,磁盘最好采用逻辑卷管理方便扩展硬盘驱动器,gitlab占用太多内存,容易导致服务器崩溃,可以启用swap分区,缓解内存压力,例如,阿里云ECS默认是没有开启swap的,这值得注意一下。日志目录默认安装在/var/log/gitlab路径下。还应该注意Gitlab的性能优化、数据备份和迁移

Gitlab安装和部署还是相对容易的,只是依赖的组件相对庞杂,太过吃内存。对于熟悉Git和GitHub的人也是极易上手,甚至是无感知使用的。

参考

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

https://gitlab.com/gitlab-org/gitlab-foss/

https://packages.gitlab.com/gitlab/gitlab-ce

https://docs.gitlab.com/omnibus/settings/smtp.html

https://docs.gitlab.com/ee/install/requirements.html

https://docs.gitlab.com/ce/development/architecture.html

https://blog.csdn.net/ouyang_peng/article/details/84066417 解决GitLab内存消耗大的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值