分享 安装 GitLab 需要注意的地方

ruby_sky · 2014年06月28日 · 最后由 yfractal 回复于 2014年07月25日 · 15077 次阅读

系统与文档说明

主要的安装Gitlab的流程安装请参考原官方教程: https://github.com/gitlabhq/gitlabhq/blob/7-0-stable/doc/install/installation.md 。描述的已经很清楚了。

  • 本教程是基于干净的512M(最低标配)阿里云服务器搭建。
  • 使用的是 7-0-stable 版本,即发贴前最新版本,绝对不推荐使用 6.4.3版本,bug太多。

添加swap以满足Gitlab在运行中需要的“内存使用”(穷人家的孩子必读)

  • 如果你的内存超强大,请直接忽略此段介绍

  • 通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。

  • 参考添加swap的文章链接在此:https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-12-04

  • 直接阅读链接原文章比自己再重复一遍可能更好,本人服务器上设置的swap为2G。:)

注意事项

  • 注意在git用户(/home/git)下使用的git版本必须是大于1.7.10,在gitlab的配置中:

    git:
    bin_path: /usr/local/bin/git
    

    如果是编译安装git,一般是/usr/local/bin,偶尔一般是/usr/bin目录下, 默认是/usr/bin ,特别需要小心。

  • 内存小(比如512M),在 第一次访问gitlab 时,往往会报500的错误,可以从/var/log/nginx/gitlab_error.log,查找到具体的错误,这时需要把 /home/git/gitlab/config/unicorn.rb中的第一个 timeout 配置为 300(默认为30),因为第一次访问,会初始化很多任务,占用大量内存。

  • 不能正常的push或者合并MR(Merge Request)

浏览过很多有关于Gitlab的安装,很多人对gitlab在push代码时,都遇到类似说 lanrion test_me (master) $ git push -u origin master fatal: 'root/test_me.git' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 特别是你在Web界面上操作合并MR时不成功,但就是没有错误信息或者其他提示。

Gitlab是通过发送API的形式通知 gitlab-shell(https://github.com/gitlabhq/gitlab-shell )来执行git命令,所以在操作git相关的 操作时,除了本能的排除 gitlab/log//var/log/nginx/ 的错误,一定要仔细检查 /home/git/gitlab-shell 下的 gitlab-shell.log

像上述举例的 fatal: 'root/test_me.git' does not appear to be a git repository 错误例子,需要理解,当你使用 test账号 在gitlab web 界面时创建一个名为 test_gitlab 的repository时,gitlab的后台其实是在/home/git/repositories/test创建了两个文件:test_gitlab.wiki.git和test_gitlab.git,原因就是没有创建test_gitlab.git.

解决方案:升级gitlab-shell是最佳解决方案。

如果创建正常,相对应的在 gitlab-shell.log下会有如下正常的log:

I, [2014-06-28T01:32:18.984690 #31310]  INFO -- : Adding project test/test_gitlab.wiki.git at </home/git/repositories/test/test_gitlabwiki.git>.
I, [2014-06-28T01:32:18.986640 #31311]  INFO -- : Adding project test/test_gitlab.git at </home/git/repositories/test/test_gitlabgit>.

当然,有些部分可能是因为 API传过来的参数 有问题,具体需要查看 gitlab-shell.log 的报错信息。

关注 gitlab-shell.log 能够帮你解决大部分的怪异问题。

  • ssh key的问题:如果你为了方便,直接把gitlab的数据库drop掉了,然后重来,你可能会因此没有关联清空/home/git/.ssh/authorized_keys,如果你再重新运行gitlab并添加与之前相同的ssh key,可能会引用 Access denied ,很大原因在你所保存的最新的ssh key对就的数据库表记录与你之前在 cat /home/git/.ssh/authorized_keys的历史数据不一致引起,解决方案:直接清空/home/git/.ssh/authorized_keys,重新添加一次ssh key即可。

  • 创建数据库时,请务必支持中文 😄

    # for mysql 
    CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
    

实用Gitlab自身携带的检测错误命令

  • 检查Gitlab环境是正确:

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

  • 检查Gitlab每个组件是运行情况

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

共收到 16 条回复

好文章,赞!

吐两个槽:

  1. authorized_keys经常出问题,添加新用户总是需要命令重置
  2. wiki标题不支持中文,输入直接挂

#4楼 @siyang1982 第一点没遇到过, 第二点没有测试过。

何必这么折腾 早就有安装包可以用了 https://about.gitlab.com/downloads/ 6.8用了半年了,毫无压力

#6楼 @suupic 这是一个问题分析帖,而不是如何教你安装。

8楼 已删除

@ruby_sky 我现在从其他电脑通过SSH push项目到 服务器上总提示输入密码 git remote add origin git@it153.dhu.edu.cn:gmaildangdang/project_01.git git push -u origin master 但所有密码都试过了,还不行

#9楼 @dangdang ssh key 没有加对。查看一下 https://help.github.com/articles/generating-ssh-keys#step-4-test-everything-out ssh -T git@github.com "github.com" 换成你的。

#9楼 @dangdang 查一下: gitlab-shell.log

#6楼 @suupic 用bitnami一键安装更简单吧?

中文commit问题,还有gbk文件乱码问题能解决吗

#13楼 @owiga 查查数据库编码问题。

周末,可否一约楼主? 我在 珠江新城 这边 😄

#16楼 @ruby_sky 哈哈!! 加油哦!!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册