准备工作
- 事先装好
vim是明智的选择 -
很多包都依赖ruby,先安装好少踩坑:
sudo apt-get install ruby
并且改变 gems 和 bundler 默认源gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/ bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems -
利用清华大学镜像更新
/etc/apt/sources.list,避免初相“无法定位软件包”的问题
安装 gitlab
步骤
安装依赖包
sudo apt-get install curl openssh-server ca-certificates
# 如需使用 postfix 就安装,我使用的是 smtp 服务,故没有装
# sudo apt-get install postfix
注:执行完成后,出现邮件配置,按需选择
安装 gitlab-ce
官方的建议是使用脚本直接执行安装
sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# 加上 = 及后面的版本号是为了安装指定版本
sudo apt-get install gitlab-ce=10.1.1-ce.0
若官方版不行,利用清华大学镜像来进行主程序的安装
- 首先信任 GitLab 的 GPG 公钥
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
- 使用root用户修改配置文件
vi /etc/apt/sources.list.d/gitlab-ce.list
添加内容:
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main- 安装 gitlab-ce
sudo apt-get update
# 下面的 ip 为本机 ip 或指向本机 ip 的域名,可以带端口
sudo EXTERNAL_URL="https://10.10.28.100" apt-get install gitlab-ce
修改相关配置
sudo vim /etc/gitlab/gitlab.rb
其他的基本上不需要修改,主要是配置邮件(阿里云企业邮箱为例,yourdomain 表示你的企业邮箱域名, yourname 表示你的邮箱名)
# 邮箱设置
gitlab_rails['gitlab_email_enabled'] = true # 是否开启系统邮箱,默认开启
gitlab_rails['gitlab_email_from'] = 'yourname@yourdomain.com' # 系统邮箱发件人
gitlab_rails['gitlab_email_display_name'] = 'Gitlab' # 显示的发件人名称,默认GitLab
gitlab_rails['gitlab_email_reply_to'] = 'yourname@yourdomain.com' # 收件邮箱
gitlab_rails['gitlab_email_subject_suffix'] = 'gitlab' # 邮件标题后缀
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yourdomain.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "yourname@yourdomain.com"
gitlab_rails['smtp_password'] = "your password" # 就是邮箱密码
gitlab_rails['smtp_domain'] = "smtp.yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
启动sshd和postfix服务
sudo service sshd start
# 使用 smtp 服务发邮件就可跳过这一步
# sudo service postfix start
添加防火墙规则
这里使用的是80端口,可以是其他端口
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
重新配置并启动各项服务
sudo gitlab-ctl reconfigure
检查GitLab是否安装好并且已经正确运行
sudo gitlab-ctl status
如果得到类似下面的结果,则说明GitLab运行正常
run: alertmanager: (pid 18343) 15s; run: log: (pid 18080) 28s
run: gitaly: (pid 18152) 18s; run: log: (pid 17353) 95s
run: gitlab-monitor: (pid 18212) 17s; run: log: (pid 17953) 42s
run: gitlab-workhorse: (pid 18185) 17s; run: log: (pid 17717) 60s
run: logrotate: (pid 17831) 53s; run: log: (pid 17876) 52s
run: nginx: (pid 17720) 59s; run: log: (pid 17780) 56s
run: node-exporter: (pid 18200) 17s; run: log: (pid 17916) 48s
run: postgres-exporter: (pid 18362) 15s; run: log: (pid 18118) 24s
run: postgresql: (pid 17359) 90s; run: log: (pid 17521) 87s
run: prometheus: (pid 18313) 16s; run: log: (pid 18030) 34s
run: redis: (pid 17148) 97s; run: log: (pid 17184) 96s
run: redis-exporter: (pid 18300) 16s; run: log: (pid 17985) 38s
run: sidekiq: (pid 17651) 67s; run: log: (pid 17682) 64s
run: unicorn: (pid 17599) 69s; run: log: (pid 17648) 68s
浏览web页面并设置密码
访问https://10.10.28.100/ (ip为你设置的那个)
- 帐号:
root - 密码:
5iveL!fe
测试邮件发送功能
sudo gitlab-rails console
# 进入控制台,然后发送邮件
Notify.test_email('xxxx@xxx.com', '邮件标题', '邮件正文').deliver_now
一般来说,若出现类似如下结果,则说明配置成功,可以去查看有没有收到邮件
若是报错: EOFError: end of file reached,基本上是因为配置端口和是否使用 ssl 配置不匹配导致的:
- 使用25端口, 就不要配置 ssl 相关项目
- 使用465,应该将以下设置好
gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'none'
设置开机启动
# 开机启动
sudo systemctl enable gitlab-runsvdir.service
# 禁止开机启动
sudo systemctl disable gitlab-runsvdir.service
汉化法一
注意版本号
git clone https://gitlab.com/xhang/gitlab.git
cd gitlab/
git fetch
gitlab-ctl stop
git diff origin/10-2-stable origin/10-2-stable-zh > /tmp/10.2.diff
cd /opt/gitlab/embedded/service/gitlab-rails
git apply /tmp/10.2.diff
patch -d/opt/gitlab/embedded/service/gitlab-rails -p1 < 10.2.diff
gitlab-ctl reconfigure
gitlab-ctl start
汉化法二
进入
gitlab-rails目录cd /opt/gitlab/embedded/service/
1. 下载社区提供的汉化包,在
https://gitlab.com/xhang/gitlab/ 中找到相应的汉化分支。sudo wget -cO gitlab-10.1_zh.tar.gz https://gitlab.com/xhang/gitlab/repository/archive.tar.gz?ref=10-1-stable-zh
2. 解压包
sudo tar -zxvf gitlab-10.1_zh.tar.gz
3. 停止 GitLab 服务
sudo gitlab-ctl stop
4. 备份 gitlab-rails 目录,该目录下主要是web应用部分,也是当前项目仓库的起始版本,也是汉化包要覆盖的目录。
sudo tar -zcvf /opt/gitlab/embedded/service/gitlab-rails-bak.tar.gz gitlab-rails
5. 将解压后的汉化补丁覆盖原来的
sudo cp -rf gitlab-10-1-stable-zh/* gitlab-rails/
6. 启动服务
sudo gitlab-ctl start
7. 重新执行配置命令
sudo gitlab-ctl reconfigure
常用 gitlab 命令
- 重新配置:
gitlab-ctl reconfigure - 启动:
gitlab-ctl start - 重新启动:
gitlab-ctl restart - 停止:
gitlab-ctl stop - 查看状态:
gitlab-ctl status - 实时日志查看:
gitlab-ctl tail - 检查报错:
gitlab-rake gitlab:check
完全卸载删除 gitlab
-
停止 gitlab
gitlab-ctl stop -
卸载 gitlab(注意这里写的是 gitlab-ce)
# Debian/Ubuntu sudo dpkg -r gitlab-ce # Redhat/Centos rpm -e gitlab-ce -
查看 gitlab 进程
ps aux | grep gitlab -
杀掉第一个进程(就是带有好多………….的进程,18777 是进程 id)
kill -9 18777
杀掉后,在 ps aux | grep gitlab 确认一遍,还有没有 gitlab 的进程,如有,重复第 4 步
- 删除所有包含 gitlab 文件
find / -name gitlab | xargs rm -rf
常用 Linux 命令
压缩解压缩
- 压缩:
tar -zcvf archive_name.tar.gz directory_to_compress - 解压缩到当前目录:
tar -zxvf archive_name.tar.gz - 解压缩到指定目录:
tar -zxvf archive_name.tar.gz -C /tmp/extract_here/
查找内容中带有关键字的文件
- 在根目录中找:
find / -type f -name "*" | xargs grep "keyword" - 在当前目录中找:
find . -type f -name "*" | xargs grep "keyword"
查看包的版本
- 查询你的机器安装了哪些版本:
dpkg -l '包名' - 查询远程库存在哪些版本:
apt-cache madison "包名" - 安装指定某个版本:
sudo apt-get install 包名=版本号
apt-get update相关
- 忽略指定包:apt-mark hold xxx
- 取消忽略指定包:apt-mark unhold xxx
tips
linux 使用命令 find / -name *** 查找文件的时候会遇到以下报错
find: '/run/user/1000/gvfs': Permission denied
明明用的是 root 用户,为什么权限不足呢?
官方说这是一个 bug——bug#615848. 原因是 FUSE 文件系统和权限不配的问题,全局搜索时碰到它就会退出报错。
其实这个目录是空的,查不查都没关系。所以,以下解决方式比较简直暴
umount /run/user/1000/gvfs
rm -rf /run/user/1000/gvfs
注: 在卸载 gitlab 然后再次安装执行sudo gitlab-ctl reconfigure的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行!
解决方案:
-
按住
CTRL+C强制结束 -
运行:
sudo systemctl restart gitlab-runsvdir -
再次执行:
sudo gitlab-ctl reconfigure
解决方案来源:gitlab.com/gitlab-org/…
或者直接另起一个命令行执行sudo systemctl restart gitlab-runsvdir