主要的安装Gitlab的流程安装请参考原官方教程: https://github.com/gitlabhq/gitlabhq/blob/7-0-stable/doc/install/installation.md 。描述的已经很清楚了。
如果你的内存超强大,请直接忽略此段介绍
通常情况下,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即可。
创建数据库时,请务必支持中文
CREATE DATABASE IF NOT EXISTS gitlabhq_production
DEFAULT CHARACTER SET utf8
COLLATE utf8_unicode_ci
;
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production