GitLab安装-centos7.6

2019-09-17  本文已影响0人  张都尉

一、简介

GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

二、Gitlib和Github区别

相同点

两个都是基于web的Git仓库,而且GitLab在使用方式上和GitHub基本上是一样的,都提供了存储、分享、发布和合作开发项目的中心化云存储场所

不同点

GitHUb同时提供公共仓库和私有仓库,但如果需要使用私有仓库,是需要收费的.GitLab让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:
允许免费设置仓库权限;允许用户选择分享一个project的部分代码;允许用户设置project的获取权限,进一步的提升安全性;可以设置获取到团队整体的改进进度;通过innersourcing让不在权限范围内的人访问不到该资源。
所以根据业务使用场景来看,私密性的话,gitlib权限管制无疑是最好的选择;而面对于开源的话,github则是最好的选择。这个我们根据实际情况而定。

安装Gitlib

sudo yum install -y curl policycoreutils-python openssh-server
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
#添加仓库地址,根据实际情况选择
#ee版本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
#ce版本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum intall gitlab-ce
gitlab-ctl reconfigure

直接初始完成


sudo gitlab-ctl restart

查看gitlab启动状态,gitlab-ctl status查看状态,如果没有报错,那么请查看内存使用情况,如有变动说明gitlab仍在启动中,请耐心等候

[root@k8s ~]# gitlab-ctl status
run: alertmanager: (pid 7017) 115s; run: log: (pid 7013) 115s
run: gitaly: (pid 6956) 116s; run: log: (pid 6955) 116s
run: gitlab-monitor: (pid 6993) 115s; run: log: (pid 6992) 115s
run: gitlab-workhorse: (pid 6980) 115s; run: log: (pid 6979) 115s
run: grafana: (pid 7018) 115s; run: log: (pid 7016) 115s
run: logrotate: (pid 7009) 115s; run: log: (pid 7008) 115s
run: nginx: (pid 7010) 115s; run: log: (pid 6982) 115s
run: node-exporter: (pid 6986) 115s; run: log: (pid 6981) 115s
run: postgres-exporter: (pid 7015) 115s; run: log: (pid 7012) 115s
run: postgresql: (pid 6966) 116s; run: log: (pid 6965) 116s
run: prometheus: (pid 7014) 115s; run: log: (pid 7011) 115s
run: redis: (pid 6985) 115s; run: log: (pid 6984) 115s
run: redis-exporter: (pid 6987) 115s; run: log: (pid 6983) 115s
run: sidekiq: (pid 6958) 116s; run: log: (pid 6957) 116s
run: unicorn: (pid 14764) 1s; run: log: (pid 6994) 115s
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1723        2817          72        1158        3621
Swap:             0           0           0
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1920        2620          72        1158        3424
Swap:             0           0           0
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1943        2597          72        1158        3401
Swap:             0           0           0

稍等片刻 设置密码后 以root用户登陆


系统邮件配置

目的,系统配置邮箱使用stmp发送创建帐号信息等,如:创建帐号后发送用户密码初始设置页面到用户或用户有变更时会出现类似情况
SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol) 若报错则为ssl配置问题,因本次我们未使用https域名所以此项则不配置,具体操作如下

vim /etc/gitlab/gitlab.rb
找到如下设置
### Email Settings
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.XXX.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "XXX@XXX.com"
gitlab_rails['smtp_password'] = "your password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false #这里是否使用ssl协议,本次因未配置ssl域名,这里我们设置为false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'  #如上同理
gitlab_rails['smtp_domain'] = "mail.XXX.com"
gitlab_rails['gitlab_email_from'] = 'XXX@XXX.com'
保存后
gitlab-ctl reconfigure #重启配置
gitlab-ctl restart 
gitlab-rails console #测试邮件
Notify.test_email(‘接收方邮件地址’,‘邮件标题’,‘邮件内容’).deliver_now
Notify.test_email('xxx@XXX.com','hello','hello').deliver_now

汉化

请注意对应版本信息 如不清楚gitlab版本以及git,请不要操作,否则gitlab瘫痪!

[root@k8s ~]# sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.2.4
wget https://gitlab.com/xhang/gitlab/repository/12-2-stable-zh/archive.tar.bz2 -O gitlab-12-2-stable-zh.tar.bz2

git clone https://gitlab.com/xhang/gitlab.git
-rw-r--r-- 1 root root 2231640 Sep  4 14:33 gitlab-12-2-stable-zh.tar.bz2
[root@k8s ~]# tar xf gitlab-12-2-stable-zh.tar.bz2
[root@k8s home]# mv gitlab-12-2-stable-zh-d492132c9775663063d2438cbc674e14cda3bd25/ gitlab-12-2-stable-zh
[root@k8s home]# cat gitlab-12-2-stable-zh/VERSION 
12.2.0
[root@k8s home]# cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
[root@k8s home]# cp -rf gitlab-12-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: overwrite ‘/opt/gitlab/embedded/service/gitlab-rails/app/controllers/abuse_reports_controller.rb’? yes
cp: overwrite ‘/opt/gitlab/embedded/service/gitlab-rails/app/controllers/acme_challenges_controller.rb’? yes

这里仍提示是否覆盖 发现这是别名引起的

[root@k8s home]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

发现每次执行cp命令,其实是执行了cp -i命令的别名,因此无论怎么输入都提示是否覆盖。
修改~/.bashrc,在“alias cp='cp -i'”前添加#号注释后即可。

[root@k8s home]#  vi ~/.bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
# alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
~    

刷新

[root@k8s home]# source ~/.bashrc

仍不生效的话,请在命令前加上“\”

[root@k8s home]# \cp -rf gitlab-12-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘gitlab-12-2-stable-zh/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘gitlab-12-2-stable-zh/tmp’

这里的错误,忽略,因为之前已经设置gitlab的root密码了

[root@k8s home]# gitlab-ctl reconfigure
[root@k8s home]# gitlab-ctl restart 
ok: run: alertmanager: (pid 26363) 0s
ok: run: gitaly: (pid 26378) 0s
ok: run: gitlab-monitor: (pid 26400) 0s
ok: run: gitlab-workhorse: (pid 26417) 1s
ok: run: grafana: (pid 26426) 0s
ok: run: logrotate: (pid 26443) 1s
ok: run: nginx: (pid 26451) 0s
ok: run: node-exporter: (pid 26537) 0s
ok: run: postgres-exporter: (pid 26547) 1s
ok: run: postgresql: (pid 26561) 0s
ok: run: prometheus: (pid 26571) 1s
ok: run: redis: (pid 26584) 0s
ok: run: redis-exporter: (pid 26589) 1s
ok: run: sidekiq: (pid 26597) 0s
ok: run: unicorn: (pid 26609) 1s
[root@k8s home]# 

Gitlab基本命令

sudo gitlab-ctl start    # 启动所有 gitlab 组件;并加入开机启动项里面:/etc/rc.local
sudo gitlab-ctl stop     # 停止所有 gitlab 组件;
sudo gitlab-ctl restart   # 重启所有 gitlab 组件;
sudo gitlab-ctl status    # 查看服务状态;
sudo gitlab-ctl tail       # 查看日志;

安装GitLab服务器配置注意事项,502很大程度上是因为CPU、内存耗尽导致

安装硬件需求

CPU
1 核心CPU最多支持100个用户,所有的workers和后台任务都在同一个核心工作这将导致GitLab服务响应会有点缓慢。
2核心 支持500用户,这也是官方推荐的最低标准。
4 核心支持2,000用户。
8 核心支持5,000用户。
16 核心支持10,000用户。
32 核心支持20,000用户。
64 核心支持40,000用户。
如果想支持更多用户,可以使用 集群式架构
Memory
安装使用GitLab需要至少4GB可用内存(RAM + Swap)! 由于操作系统和其他正在运行的应用也会使用内存, 所以安装GitLab前一定要注意当前服务器至少有4GB的可用内存. 少于4GB内存会导致在reconfigure的时候出现各种诡异的问题, 而且在使用过程中也经常会出现500错误.
1GB 物理内存 + 3GB 交换分区 是最低的要求,但我们 强烈反对 使用这样的配置。 查看下面unicorn worker章节获取更多建议。
2GB 物理内存 + 2GB 交换分区 支持100用户,但服务响应会很慢。
4GB 物理内存 支持100用户,也是 官方推荐 的配置。
8GB 物理内存 支持 1,000 用户。
16GB 物理内存 支持 2,000 用户。
32GB 物理内存 支持 4,000 用户。
64GB 物理内存 支持 8,000 用户。
128GB 物理内存 支持 16,000 用户。
256GB 物理内存 支持 32,000 用户。
如果想支持更多用户,可以使用 集群式架构
即使你服务器有足够多的RAM, 也要给服务器至少分配2GB的交换分区。 因为使用交换分区可以在你的可用内存波动的时候降低GitLab出错的几率。

注意: Sidekiq的25个workers在查看进程(top或者htop)的时候会发现它会单独显示每个worker,但是它们是共享内存分配的,这是因为Sidekiq是一个多线程的程序。 详细内容查看下面关于Unicorn workers 的介绍。

注意事项

一、首先看看配置文件/etc/gitlab/gitlab.rb 中的端口号是否被占用
二、另外一个原因是gitlab占用内存太多,导致服务器崩溃
内存问题 解决办法,启用swap分区,步骤如下:

cat /proc/swaps 查看swap分区是否启动(无)
创建 :
dd if=/dev/zero of=/data/swap bs=512 count=8388616

创建swap大小为bs*count=4294971392(4G);

通过mkswap命令将上面新建出的文件做成swap分区

mkswap /data/swap

查看内核参数vm.swappiness中的数值是否为0,如果为0则根据实际需要调整成60

查看: cat /proc/sys/vm/swappiness
设置: sysctl -w vm.swappiness=60
若想永久修改,则编辑/etc/sysctl.conf文件,改文件中有vm.swappiness变量配置,默认为0
启用分区

swapon /data/swap

echo “/data/swap swap swap defaults 0 0” >> /etc/fstab

再次使用cat /proc/swaps 查看swap分区是否启动

重启gitlab。

卸载gitlab

sudo gitlab-ctl uninstall
sudo gitlab-ctl cleanse
sudo gitlab-ctl remove-accounts
gitlab-ctl stop
rpm -e gitlab-ce
ps aux | grep gitlab
kill -9 xxx
杀掉守护进程
find / -name gitlab | xargs rm -rf
上一篇下一篇

猜你喜欢

热点阅读