主要的安装 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 即可。
创建数据库时,请务必支持中文
# for mysql
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