ldap+git+gerrit环境搭建

一、准备
使用系统:Centos6.5(虚拟机)
使用软件: ldap+git+gerrit, ldap作用户账号密码管理,git仓库存放代码,gerrit作代码review
二、系统及网络配置
1、关闭selinux

[root@gerrit ~]# vim /etc/sysconfig/selinux
修改SELINUX: SELINUX=disabled

2、配置网络

[root@gerrit ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改:
ONBOOT=yes
BOOTPROTO=static
增加如下几行配置(根据自己实际需求配置):
IPADDR=192.168.0.104 (IP地址)
NETMASK=255.255.255.0 (掩码)
GATEWAY=192.168.0.1 (网关)
DNS1=114.114.114.114 (DNS服务器)

3、配置好以上信息后,重启系统
三、JDK环境配置

1、使用远程终端工具连接上服务器,并安装文件传输工具

[root@gerrit ~]# yum install lrzsz –y

2、卸载系统自带JDK

[root@gerrit ~]# rpm -qa | grep java | xargs rpm -e –nodeps

3、上传JDK RPM包到当前目录 并安装(此处使用JDK1.7u79)将安装包拖至xhsell 对话框即可进行上传

[root@gerrit ~]# rpm -ivh jdk-7u79-linux-x64.rpm

4、配置环境变量

[root@gerrit ~]# vim /etc/profile
文件末尾增加如下两行
export JAVA_HOME=/usr/java/jdk1.7.0_79/
export JRE_HOME=/usr/java/jdk1.7.0_79/jre

然后执行如下命令刷新环境变量,并查看是否成功

[root@gerrit ~]# source /etc/profile
[root@gerrit ~]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

成功看到java版本,JDK环境配置完成

四、安装LDAP

1、使用yum 安装LDAP

[root@gerrit]#yum install openldap-server openldap

2、拷贝配置文件

[root@gerrit ~]# cd /usr/share/openldap-servers/
[root@gerrit openldap-servers]# cp slapd.conf.obsolete /etc/openldap/slapd.conf

3、创建LDAP管理员密码

[root@gerrit openldap-servers]# slappasswd
New password:
Re-enter new password:
{SSHA}5bzZagSr4HiJLkioJi6iocOiU+PgblmF

4、编辑配置文件

[root@gerrit]# vim /etc/openldap/slapd.conf

修改相关cn,dc相关内容,及rootpw密码

database monitor
access to *
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by dn.exact="cn=Manager,dc=yangchao,dc=com" read
by * none
#######################################################################
# database definitions
#######################################################################
database bdb
suffix "dc=yangchao,dc=com"
checkpoint 1024 15
rootdn "cn=Manager,dc=yangchao,dc=com"
rootpw {SSHA}5bzZagSr4HiJLkioJi6iocOiU+PgblmF

5、拷贝拷贝DB_CONFIG文件

[root@gerrit]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

6、删除默认配置 (否则添加ldap用户时会报错)

[root@gerrit]#rm /etc/openldap/slapd.d/* -rf

7、设置目录权限

[root@gerrit]#chown -R ldap:ldap /etc/openldap/
[root@gerrit]#chown -R ldap:ldap /var/lib/ldap

8、测试并生成配置文件

[root@gerrit]#slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
5956d35c bdb_db_open: database "dc=yangchao,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).
5956d35c backend_startup_one (type=bdb, suffix="dc=yangchao,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)
如出现此报错请先启动slapd
[root@gerrit]#service slapd start
/var/lib/ldap/__db.004 is not owned by "ldap" [警告]
/var/lib/ldap/alock is not owned by "ldap" [警告]
/var/lib/ldap/__db.005 is not owned by "ldap" [警告]
/var/lib/ldap/__db.002 is not owned by "ldap" [警告]
/var/lib/ldap/__db.001 is not owned by "ldap" [警告]
/var/lib/ldap/__db.006 is not owned by "ldap" [警告]
/var/lib/ldap/__db.003 is not owned by "ldap" [警告]
正在启动 slapd: [失败]
如出现此报错再次设置目录权限
然后继续测试并生成配置文件
[root@gerrit]#slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded

9、创建账号以备client登陆测试

[root@gerrit]#useradd ldapuser
[root@gerrit]#echo 'ldapuser' | passwd --stdin ldapuser

至此,这些用户仅仅是系统上存在的用户(存储在/etc/passwd和/etc/shadow上),并没有在LDAP数据库里,所以要把这些用户导入到LDAP里面去。但LDAP只能识别特定格式的文件 即后缀为ldif的文件(也是文本文件),所以不能直接使用/etc/passwd和/etc/shadow。 需要migrationtools这个工具把这两个文件转变成LDAP能识别的文件。

10、安装migrationtools工具

[root@gerrit]#yum install migrationtools -y

配置migrationtools

[root@gerrit]#cd /usr/share/migrationtools/
修改 migrate_common.ph
[root@gerrit]#vimmigrate_common.ph
搜索”dc=”,值改为与slapd.conf一致内容
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "yc.com";
# Default base
$DEFAULT_BASE = "dc=yc,dc=com";

下面利用pl脚本将/etc/passwd 和/etc/shadow生成LDAP能读懂的文件格式,保存在/tmp/下

[root@gerrit]#./migrate_base.pl > /tmp/base.ldif
[root@gerrit]#cat /etc/passwd|grep ldapuser > ./passwd
[root@gerrit]#./migrate_passwd.pl ./passwd > /tmp/passwd.ldif
[root@gerrit]#cat /etc/group|grep ldapuser > ./group
[root@gerrit]#./migrate_group.pl ./group > /tmp/group.ldif

导入LDAP 需要输入管理员密码

[root@gerrit]#ldapadd -x -D "cn=Manager,dc=yangchao,dc=com" -W -f /tmp/base.ldif
[root@gerrit]#ldapadd -x -D "cn=Manager,dc=yangchao,dc=com" -W -f /tmp/group.ldif
[root@gerrit]#ldapadd -x -D "cn=Manager,dc=yangchao,dc=com" -W -f /tmp/passwd.ldif

至此LDAP搭建完成

安装git

[root@gerrit]#yum install git -y

配置git:

①:新建组和用户
[root@gerrit]#useradd git
[root@gerrit]#usermod -s /sbin/nologin git (禁止用户登录服务器)
②:创建git服务器工作空间:
[root@gerrit]#mkdir -p /home/git/repo
③:更改权限git文件和目录权限:
[root@gerrit]#chown -R git.git

安装gerrit

上传gerrit包到服务器

然后开始安装 :java -jar gerrit-2.8.1.war init -d gerrit(安装目录)

安装gerrit过程会有几个问题,例如:

•Git代码库的位置 [git] (git库路径)
•导入现有代码库 [Y/n] (N)
•数据库服务器类型 [H2/?] (默认)
•身份验证方法 [OPENID/?] (ldap)
•SMTP服务器主机名 [localhost] (默认)
•SMTP服务器端口 [(default)] (默认)
•SMTP加密 [NONE/?] (默认)
•SMTP用户名 (默认)
•以何种身份运行 [you] (默认)
•Java运行时 [/path/to/jvm] (默认)
•将gerrit.war复制到/path/to/location/bin/gerrit.war [Y/n] (默认)
•监听地址 [*] (默认)
•监听端口 [29418] (默认)
•下载并安装Bouncy Castle[Y/n] (N)
•位于HTTP反向代理之后 [y/N] (默认)
•使用SSL [y/N] (默认)
•监听地址 [*] (默认)
•监听端口 [8080] (默认)

安装完成后 还可对配置文件进行修改

[root@gerrit]#vim /gerrit/etc/gerrit.conf
[gerrit]
basePath = /home/gir/repo
canonicalWebUrl = http://192.168.0.104:8080/
[database]
type = h2
database = /root/gerrit/db/ReviewDB
[index]
type = LUCENE
[auth]
type = LDAP
[ldap]
server = ldap://192.168.0.104
accountFullName =
accountBase = dc=test,dc=com
groupBase = dc=test,dc=com
[receive]
enableSignedPush = false
[sendemail]
enable = true
smtpServer = smtp.ym.163.com
smtpServerPort = 25
smtpUser = test@163.com
smtpPass = password
from = test@163.com
[container]
user = root
javaHome = /usr/java/jdk1.7.0_79/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8080/
[cache]
directory = cache

然后重启gerrit服务,就可进行访问:http://服务器IP:8080

请注意首次登录gerrit的用户会被认为 超级管理员