Ruby的安装
因为CentOS源里的ruby版本太低,我们直接下载源码进行安装
安装之前确认系统中已经安装了libyaml
没有的话直接下载源码安装
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
下载ruby源码
http://ruby.taobao.org/mirrors/ruby/ruby-1.9-stable.tar.gz
安装
tar zxvf ruby-1.9-stable.tar.gz
cd ruby-1.9-xxxx/
./configure
make && make install
结束
一般情况下安装会很顺利
Gitolite的安装
创建专属用户
useradd -d /home/git -m git
然后用git身份登录
su git
进入到HOME目录
cd ~
下载源码
直接从Github进行clone
git clone git://github.com/sitaramc/gitolite
进行安装
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
如果提示Can’t locate Time/HiRes.pm in @INC的话执行下面的命令进行类库安装
perl -MCPAN -e shell
install Time::HiRes
如果提示Can’t locate CPAN.pm in @INC的话先使用yum进行安装yum install perl-CPAN
将bin加入到PATH变量中
编辑~/.profile添加如下内容
export PATH=$PATH:/home/git/bin
GitLab的安装
创建专属用户
useradd -d /home/gitlab -m -g git gitlab
切换至gitlab并进入HOME目录
依赖的Gems (root身份安装)
gem install resque
gem install charlock_holmes –version ‘0.6.9’
charlock_holmes 会依赖libicu 可以直接yum安装yum install libicu-devel
如果提示cannot load such file — zlib需要安装zlib库
yum install zlib-devel
# 安装ruby自带的zlib.so
cd ruby-1.9-xxxx/ext/zlib
ruby ./extconf.rb
make && make install
下载源码
git clone git://github.com/gitlabhq/gitlabhq server
站点信息配置
cp server/config/gitlab.yml.example server/config/gitlab.yml
cp server/config/unicorn.rb.example server/config/unicorn.rb
因为我们释放到了server目录下,需要修改unicorn.rb将第一行的默认目录修改下
创建satellites目录
mkdir gitlab-satellites
数据库配置
cp server/config/database.yml.mysql server/config/database.yml
Redis配置(一般不需要)
cp server/config/resque.yml.example server/config/resque.yml
进行产品发布
cd ~/server
bundle install –deployment –without development test postgres
找不到bundle的时候可以执行gem install bundler安装
配置Git
git config –global user.name “GitLab”
git config –global user.email “gitlab@localhost”
配置GitLab的Hooks
# 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
创建用户(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
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
关于传递了公钥后依然会要求输入密码的情况说明/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(没有的话新创建一个)
执行
cd ~/server
bundle exec rake gitlab:setup RAILS_ENV=production
TMD终于好了,让我们来检查下gitlab的状态吧
cd ~/server
# 查看环境信息
bundle exec rake gitlab:env:info RAILS_ENV=production
# 检查组件依赖(全绿色的话就过了)
bundle exec rake gitlab:check RAILS_ENV=production
添加管理脚本
从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字段将后面的内容修改成
listen 80
即可
访问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报错
解决方法
ln -s /usr/local/bin/redis-cli /usr/bin/
ERROR -> Gitolite error -> remote: FATAL: git config ‘core.sharedRepository’ not allowed
解决方法
编辑/home/git/.gitolite.rc找到GIT_CONFIG_KEYS将后面的内容修改成’.*’,修改后为GIT_CONFIG_KEYS => ‘.*’
转载请注明:爱开源 » CentOS 下搭建 Git WEB管理平台