最新消息:

Linux 下搭建 Git WEB管理平台

git admin 7314浏览 0评论

WEB管理平台使用 GitLab

环境需求

  • CentOS
  • Ruby 1.9.3+
  • Mysql
  • Git
  • Gitolite
  • Redis
  • Resque

其中Mysql、Git、Redis的安装不赘述,都可以直接yum安装


Ruby的安装

因为CentOS源里的ruby版本太低,我们直接下载源码进行安装

安装之前确认系统中已经安装了libyaml

没有的话直接下载源码安装

<code> wget http://pyyaml.org/download/libyaml/yaml-0.1.tar.gz
 tar zxvf yaml-0.1.tar.gz
 cd yaml-0.1
 ./configure
 make &amp;&amp; make install
</code>

下载ruby源码

http://ruby.taobao.org/mirrors/ruby/ruby-1.9-stable.tar.gz

安装

<code> tar zxvf ruby-1.9-stable.tar.gz
 cd ruby-1.9-xxxx/
 ./configure
 make &amp;&amp; make install
</code>

结束

一般情况下安装会很顺利

Gitolite的安装

创建专属用户

<code> useradd -d /home/git -m git
</code>

然后用git身份登录

<code> su git
</code>

进入到HOME目录

<code> cd ~
</code>

下载源码

直接从Github进行clone

<code> git clone git://github.com/sitaramc/gitolite
</code>

进行安装

<code> mkdir -p $HOME/bin
 gitolite/install -to $HOME/bin
</code>

如果提示Can't locate Time/HiRes.pm in @INC的话执行下面的命令进行类库安装

<code> perl -MCPAN -e shell
 install Time::HiRes
</code>

如果提示Can't locate CPAN.pm in @INC的话先使用yum进行安装yum install perl-CPAN

将bin加入到PATH变量中

编辑~/.profile添加如下内容

<code> export PATH=$PATH:/home/git/bin
</code>

GitLab的安装

创建专属用户

<code> useradd -d /home/gitlab -m -g git gitlab
</code>

切换至gitlab并进入HOME目录

依赖的Gems (root身份安装)

<code> gem install resque
 gem install charlock_holmes --version '0.6.9'
</code>

charlock_holmes 会依赖libicu 可以直接yum安装yum install libicu-devel

如果提示cannot load such file -- zlib需要安装zlib库

<code>yum install zlib-devel
# 安装ruby自带的zlib.so
cd ruby-1.9-xxxx/ext/zlib
ruby ./extconf.rb
make &amp;&amp; make install
</code>

下载源码

<code> git clone git://github.com/gitlabhq/gitlabhq server
</code>

站点信息配置

<code> cp server/config/gitlab.yml.example server/config/gitlab.yml
 cp server/config/unicorn.rb.example server/config/unicorn.rb
</code>

因为我们释放到了server目录下,需要修改unicorn.rb将第一行的默认目录修改下

创建satellites目录

<code> mkdir gitlab-satellites
</code>

数据库配置

<code> cp server/config/database.yml.mysql server/config/database.yml
</code>

Redis配置(一般不需要)

<code> cp server/config/resque.yml.example server/config/resque.yml
</code>

进行产品发布

<code> cd ~/server
 bundle install --deployment --without development test postgres
</code>

找不到bundle的时候可以执行gem install bundler安装

配置Git

<code> git config --global user.name "GitLab"
 git config --global user.email "gitlab@localhost"
</code>

配置GitLab的Hooks

<code> # root 权限运行
 mkdir -p /home/git/.gitolite/hooks/common
 cp /home/gitlab/server/lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
 chown git:git -R /home/git/.gitolite
</code>

创建用户(gitlab)的SSH公匙并导入到gitolite中

执行前确定/home/git/.gitolite/logs目录存在,否则导入key时会报错

FATAL: errors found but logfile could not be created
FATAL: /home/git/.gitolite/logs/gitolite-2013-02.log: No such file or directory
FATAL: cli gitolite setup -pk /home/git/gitlab.pub

<code> su gitlab
 ssh-keygen -t rsa
 cp ~/.ssh/id_rsa.pub /home/git/gitlab.pub
 chmod 0444 /home/git/gitlab.pub
 su git
 ~/bin/gitolite setup -pk ~/gitlab.pub
</code>

关于传递了公钥后依然会要求输入密码的情况说明/ssh-keygen后自动验证无效

如果你无法自动验证的话先尝试将/home/git目录权限设置为755

如果正常了的话就不用看下面这两条了

  • 使用gitolite的setup命令导入key的时候会在~/.ssh/authorized_keys中添加自定义的command命令,导致/var/log/secure中查看不到ssh自动验证的错误信息(删除后再尝试即可)
  • 执行上面的步骤后如果在secure日志中发现Authentication refused: bad ownership or modes for directory /home/git的话需要把git目录权限设置为755

初始化数据库

  • 执行下面的命令之前需要配置了正确的数据库信息并开启了Redis
  • 需要/home/git目录权限为770
  • 需要/home/git/repositories目录权限为770(没有的话新创建一个)

执行

<code> cd ~/server
 bundle exec rake gitlab:setup RAILS_ENV=production
</code>

TMD终于好了,让我们来检查下gitlab的状态吧

<code> cd ~/server
 # 查看环境信息
 bundle exec rake gitlab:env:info RAILS_ENV=production
 # 检查组件依赖(全绿色的话就过了)
 bundle exec rake gitlab:check RAILS_ENV=production
</code>

添加管理脚本

https://raw.github.com/gitlabhq/gitlab-recipes/4-1-stable/init.d/gitlab下载脚本到/etc/init.d/gitlab

然后chmod +x /etc/init.d/gitlab给上执行权限

最后chkconfig --add gitlab加到service列表中,然后chkconfig gitlab on开启自启动

安装结束

使用service gitlab start即可启动gitlab进程了

如何访问gitlab的web页面?

gitlab默认是使用的unix socket访问,需要nginx进行转发,配置文件在这里https://raw.github.com/gitlabhq/gitlab-recipes/4-1-stable/nginx/gitlab

不过我们可以修改unicorn.rb来使用TCP方式访问

修改server/config/unicorn.rb找到listen字段将后面的内容修改成

<code> listen 80
</code>

即可

访问web后默认帐号为admin@local.host密码为5iveL!fe

一些错误的解决方法

如果/home/gitlab/server/log/githost.log中出现error

ERROR -> Gitolite error -> error: cannot run hooks/post-receive: No such file or directory

并且切换到git用户后执行env -i redis-cli报错

解决方法

<code> ln -s /usr/local/bin/redis-cli /usr/bin/
</code>

ERROR -> Gitolite error -> remote: FATAL: git config ‘core.sharedRepository’ not allowed

解决方法

编辑/home/git/.gitolite.rc找到GIT_CONFIG_KEYS将后面的内容修改成'.*',修改后为GIT_CONFIG_KEYS => '.*'

转载请注明:爱开源 » Linux 下搭建 Git WEB管理平台

您必须 登录 才能发表评论!