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 && 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 && 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 && 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管理平台