存档

‘git’ 分类的存档

Centos6安装gitlab+ldap认证

2014年5月27日 3 条评论
 

 

1.环境介绍

 

系统:centos 6.5 x64

git要求 1.7.10+

ruby要求1.93+,我这里用的2.1.2版本

redis要求2.0+

 

GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库

 

2.添加EPEL安装源

 

 

3.安装GitLab所需依赖包和工具

 

4.安装ruby2.1

 

Gitlab 是基于 Ruby on Rails 开发的工具,要跑起来的话自然少不了安装 Ruby

查看下ruby是否安装正确

国外的gem源太慢了,这里用taobao的源  http://ruby.taobao.org/

安装bundle:

所有有bundle命令的执行都要注意
在执行目录下,要修改Gemfile文件头的rubygems.org到ruby.taobao.org,否则是不工作的

 

5.安装 Git 和 Gitolite

 

由于gitlab对git版本要1.7.10+,而默认centos 6 yum源里面的git是1.7.1版本,所以这里我们要选择另外的源

 

yum配置好后,这里开始安装

 

6.安装nginx mysql redis

 

软件安装

 创建gitlab 数据库用户

 添加git账户

这里就不设置密码,git帐号不用登录系统

 

7.安装GitLab-shell

 

软件下载

 修改配置文件

注意:如果gitlab是使用https访问,则需将http替换成https,配置文件中的self_signed_cert要修改成true,否则gitlab shell在通过api和gitlab进行通信的时候就会出现错误,导致项目push出错。因为后面配置web服务器的时候是使用ssl,所以这里要按照ssl的方式配置。

Tips: 另外如果使用的域名是测试域名,不要忘记在系统的/etc/hosts做域名映射。

安装

8. 安装GitLab

 

软件下载

 配置

一些全局配置

配置数据库访问文件

编辑config/database.yml,设置其中连接数据库的账号密码,笔者的配置部分如下:

修改其中username和password就可以了,其中密码就是上面数据库步骤中创建gitlab用户的密码。

确保该文件只有git账号有权限读取。

 

9.安装Gems

这里要用root安装

安装必需的 Ruby Gems

 

初始化数据库数据(执行输入 Yes 继续创建)

检查应用程序状态

启动gitlab服务

检查配置(要所有选项都通过)

有个权限提示

这里修改下权限

 

10.nginx配置

 

之前已经yum安装过了,这里修改下配置。

 

 

11.web访问

 

访问http://gitlab.54im.com报502,群里大神曹岩帮忙指导,没下载静态资源。

nginx日志中报

Error: upstream prematurely closed connection while reading response header from upstream

执行下面这个初始化下gitlab的资源

 

继续访问,还是502,nginx日志里面

2014/05/28 08:56:10 [crit] 9288#0: *24 connect() to unix:/home/git/gitlab/tmp/sockets/gitlab.socket failed (13: Permission denied) while connecting to upstream, client: 192.168.1.4, server: gitlab.54im.com, request: “GET /favicon.ico HTTP/1.1”, upstream: “http://unix:/home/git/gitlab/tmp/sockets/gitlab.socket:/favicon.ico”, host: “gitlab.54im.com”

 

想起来,刚刚我没有su – git用户下拉取资源,这里chown -R git.git /home/git/gitlab

nginx的运行用户是nginx,gitlab用户运行的用户是git,这里将nginx加入git组

上面解决好后,再次访问  http://gitlab.54im.com

这里默认的帐号密码就是之前初始化的时候,给你的帐号密码

Administrator account created:

login………admin@local.host
password……5iveL!fe

登录后界面是这样的

12.邮件配置

 

Gitlab邮件提醒方便跟踪项目进度,我这里用GMAIL的stmp来发送邮件


 

#配置好你的邮箱和密码

 

这里我去新建个用户,测试下邮件发送功能
在163邮箱中收到gitlab用户发来的邮件
用帐号 ldtrain@163.com登录,密码  ouuNZdi7,第一次会让你重置密码的

13.ldap配置

 

cd /home/git/gitlab

vi config/gitlab.yml

port 这里填openldap端口,如果是用加密的话,端口是 636

method 这里是openldap认证方式,plain是简单认证,还有ssl 和tls,如果是加密的话选ssl或者tls,对应端口也是636

base:填自己的组织架构,当然也可以精确到OU, ou=People,dc=openldap,dc=54im,dc=com 这里有只有People这个OU下面的用户能登录到gitlab

user_filter 禁止某个用户登录

bind_dn 这个是指定连接openldap的帐号

password 这个是指定连接openldap的账户密码

 

登录

登录的时候报 Could not authorize you from LDAP because “(ldap) account must provide a dn,uid and email address”

感谢@张成 成爷指导 gitlab帐号必须要有邮件这个属性,我的openldap里面没有,这里我在openldap里面给ldapuser 这个帐号添加email属性。

 

14.gitlab使用

  • gitlab管理员新建用户组
  • gitlab管理员新建项目
选择该项目是公开还是私有项目
如果你想进行代码的上传与下载等操作,需要你把自己的ssh key导入到gitlab里
gitlab管理员添加成员

想让其他用户也能看到并下载上次这个项目,需要将用户加入到这个组

用户登录后就可以看到这个项目,想要上传下载代码,首先得让管理员开相关权限,然后把自己的ssh key加入到gitlab中

上面有5个权限,我们来看下具体有哪些区别

guest    (r-)

reporter    (r)

developer    (rw)

master      (rw)(member,proteted,branch)

owner     (rw)(rename,transfer)

 

  • git用户操作

在linux上使用

 

在windows上使用

 

附录:

  • 如果访问报500 We’re sorry, but something went wrong

 

发现redis端口连接不上,我这里确实忘记开redis了, /etc/init.d/redis start

 

  • 如果第一次登录报 invalid email or password

可能由于你数据库没有初始化好

如果在linux客户端提交的时候报

/usr/bin/env: ruby: No such file or directory
fatal: The remote end hung up unexpectedly

在gitlab服务器端做如下操作

$rubyhome=ruby安装目录

sudo ln -s $rubyhome/ruby /usr/bin/ruby
sudo ln -s $rubyhome/bin/gem /usr/bin/gem

 

本文参考:

http://www.01happy.com/centos-6-5-install-gitlab/

http://longgeek.com/2013/12/26/ci-system-structures-ii-gitlab-installation/

 

分类: git 标签: , , , ,

[转]Git服务器Gitosis架设指南

2013年12月6日 没有评论

转自:http://www.jiangmiao.org/blog/1600.html

昨天弄了个git,用来发布我们内部运维工具代码,发现这边文章写的最靠谱。备忘下。

Git是非常著名的分布式版本控制系统。
Gitosis则是方便通过Git与ssh架设中央服务器的软件。这篇文章的安装流程写得很明了,但使用中还是遇到了些许问题,本文算是该流程的补充。如果打算通过Gitosis架设服务器通过本文或许可以少走不少弯路。

一、架设步骤

1. 下载并安装python setuptools

sudo apt-get install python-setuptools

2. 下载并安装gitosis

cd ~/src
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install

3. 添加用户git

4. 生成本机密钥

切换到个人机,如果已有~/.ssh/id_rsa.pub略过此步
ssh-keygen -t rsa

5. 上传密钥到服务器临时目录

scp ~/.ssh/id_rsa.pub 用户名@主机:/tmp

6. 初使化gitosis

切回到服务器
sudo -H -u git gitosis-init < /tmp/id_rsa.pub

7. 修改post-update权限

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

8. clone gitosis管理平台

git clone git@主机名:gitosis-admin.git
cd gitosis-admin

9. 安装完成

通过修改gitosis-admin管理gitosis用户权限
添加公密到keydir,添加用户
修改完后commit,push到中服务器即可完成仓库权限的相关操作。

二、实例

目标:添加用户 john 和仓库 foo 到gitosis,并和管理员miao合作管理

1. 用户john添加并发送id_rsa.pub给miao

john:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/john/.ssh/id_rsa):
Created directory ‘/home/john/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/john/.ssh/id_rsa.
Your public key has been saved in /home/john/.ssh/id_rsa.pub.
john:~$ cp /home/john/.ssh/id_rsa.pub /tmp

2. gitosis管理员miao分配john权限

miao:~$ cd ~/projects
git clone git@192.168.1.115:gitosis-admin
cd gitosis-admin
cat gitosis.conf
ls keydir/
miao@u32-192-168-1-110.pub
cp /tmp/id_rsa.pub keydir/john.pub
vi gitosis.conf
git add .
git commit -am “add member john and project foo”
git push

3. 用户 miao 添加项目foo

miao:~$ cd ~/projects
mkdir foo
cd foo
git init
touch hello.txt
git add hello.txt
git commit -am ‘first commit’
git remote add origin git@192.168.1.115:foo.git
git push origin master

4. 用户 john clone Foo并修改hello.txt

john:~$ git clone git@192.168.1.115:foo.git
cd foo
ls
date > hello.txt
git commit -am ‘add time to hello.txt’ && git push

5. 用户 miao pull Foo

miao:~/projects/foo$ vi .git/config
git pull

三、常见问题

首先确定 /home/git/repositories/gitosis-admin.git/hooks/post-update 为可执行即属性为 0755

1. git操作需要输入密码

原因
公密未找到
解决
上传id_pub.rsa到keydir并改为’gitosis帐号.pub’形式,如miao.pub。扩展名.pub不可省略

2. ERROR:gitosis.serve.main:Repository read access denied

原因
gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub
解决
使keydir的名称与gitosis中members所指的名称一致。
改为members = foo 或 公密名称改为foo@bar.pub
分类: git 标签: ,