Android下的配置管理之道之gerrit代码服务器搭建
gerrit 代码服务器搭建 Version v2.11.5
一般参考gerrit的文档就可以了。下面大部分都是文档的,列出一些注意点,一些工具的选择取舍等。
所需环境
jdk,git 等相关的工具
gerrit是一个java web 应用,所以java运行时环境是不能少的,安装jdk或jre都可以的。
gerrit是基于git来管理代码的,所以git也是必不可少的。
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
安装方法:
sudo apt-get install openjdk-7-jdk git
# 或者 sudo apt-get install openjdk-7-* git,
# 这里星号会匹配所有的安装包,这样会安装的比较多,这是懒人的做法。
# tab 键补全出来,可以看到如下的包。
#openjdk-7-dbg
#openjdk-7-doc
#openjdk-7-jre
#openjdk-7-jre-lib
#openjdk-7-source
#openjdk-7-demo
#openjdk-7-jdk
#openjdk-7-jre-headless
#openjdk-7-jre-zero
或使用jdk8. ubuntu 16 就可以使用jdk8了。
sudo apt-get install openjdk-8-jdk git
最新的gerrit基本上都需要jdk1.7 或者 jdk1.8了。jdk或者jre的java环境都可以的。
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
下载gerrit的安装包gerrit.war包。
Gerrit Releases site.https://gerrit-releases.storage.googleapis.com/index.html
最新的版本有2.14了(可能也有更新的了,文章可能更新不及时)。
操作系统一般用ubuntu, 对于目前2017年来说用ubuntu16.04 server版本的最好。
有的系统安装不了jdk8,怎么办?像ubuntu 14.04就不能安装jdk8,如下:
sudo apt-get update
sudo apt-get install -y openjdk-7-jdk
#添加 openjdk:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo apt-get install openjdk-8-*
sudo apt-get install openjdk-7-*
# 添加 oracle jdk:
#To install the oracle JDK, use the following command –
sudo add-apt-repository ppa:webupd8team/java
# 配置默认的jdk:
sudo update-alternatives --config java
sudo update-alternatives --config javac
#apt的缓存目录: /var/cache/apt/archives/
数据库的设置
gerrit支持 h2,mysql,oracle,postgresql等这几种数据库
- H2
如果你选择h2类型的数据库,不需要额外安装什么,也不需要配置什么,这个数据库就是java实现的一个本地的数据库。一般公司中不推荐使用这个,直接测试学习可以试一下的。尤其是大型公司不推荐使用这个类型的数据库的。
不推荐是应为没有一个简单的方法来和数据库交互,除非gerrit先停止运行。也就是说gerrit在运行的状态下是没有方法直接访问这个h2类型的数据库的。当然用 ssh gerrit.com gerrit gsql 这个命令是另外一回事了。马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
不推荐是还是个原因是不容易备份数据。
最后一个不推荐的原因是不支持负载平衡,热备份之类的。
- PostgreSQL
这个是非常推荐使用的数据库。
这个需要单独安装的,
sudo apt-get install postgresql 就可以了了。或者马哥一般习惯安装 phppgadmin,这样apache有了,管理数据库的,带界面的软件也有了,非常的方便的。
需要先创建一个给gerrit web应用使用的一个数据库的角色或账号。
下面命令一般需要切换到叫postgres的一个linux账户下面去执行sudo su postgres。
$ createuser --username=postgres -RDIElPS gerrit2
# 这个是创建一个数据库的角色,上面的$ 美元符不是命令的一部分,是linux命令提示符而已
# 有的可能是类似这样的命令提示符:gerrit2@gerrit-master:~$
$ createdb --username=postgres -E UTF-8 -O gerrit2 reviewdb
#这个是创建一个名字叫reviewdb的数据库,属于gerrit2这个角色。
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
更多详细的关于postgresql数据库的内容可以访问官网:http://www.postgresql.org/docs/9.1/interactive/index.html
补充:
安装完成phppgadmin之后直接访问会报错,需要改个配置文件
/etc/apache2/conf-available/phppgadmin.conf文件中 Require local
改为 allow from all
buildfarm@gerrit-tags:~$ cat /etc/apache2/conf-available/phppgadmin.conf
Alias /phppgadmin /usr/share/phppgadmin
<Directory /usr/share/phppgadmin>
<IfModule mod_dir.c>
DirectoryIndex index.php
</IfModule>
AllowOverride None
# Only allow connections from localhost:
#Require local
allow from all
<IfModule mod_php.c>
php_flag magic_quotes_gpc Off
php_flag track_vars On
#php_value include_path .
</IfModule>
<IfModule !mod_php.c>
<IfModule mod_actions.c>
<IfModule mod_cgi.c>
AddType application/x-httpd-php .php
Action application/x-httpd-php /cgi-bin/php
</IfModule>
<IfModule mod_cgid.c>
AddType application/x-httpd-php .php
Action application/x-httpd-php /cgi-bin/php
</IfModule>
</IfModule>
</IfModule>
</Directory>
3.MySQL
这个也是非常推荐使用的数据库
这个也需要单独安装,
sudo apt-get install mysql-client mysql-server
马哥比较推荐的一个安装是
sudo apt-get install mysql-client mysql-server phpmyadmin
这里多安装一个mysql数据库的管理软件。很方便的,带界面的,通过浏览器来管理mysql数据库的。创建数据库,创建角色,设置密码,查询,修改都可以通过浏览器来进行,非常的方便的。
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
mysql创建数据库账户如下(这些命令需要链接到mysql后执行的):
CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret'; #这个是创建个mysql的账号
CREATE DATABASE reviewdb;
GRANT ALL ON reviewdb.* TO 'gerrit2'@'localhost'; #创建数据库,名字叫reviewdb
FLUSH PRIVILEGES; #记得最后刷新,这样才生效。
当然上面的命令,你就可以直接通过phpmyadmin 来在浏览器上面操作了。
4.Oracle
这个数据库也是非常好的一个,不过马哥本人没有用过,不好多说什么。公司中最常用的还是mysql和postgresql这2个数据库。我在几个公司带过,基本上用的都是mysql和postgresql。oracle是要钱的吧?!
SQL> create user gerrit2 identified by secret_password default tablespace users; 同样的也是要先建个gerrit2的数据库的账户。
SQL> grant connect, resources to gerrit2;
数据怎么创建好像官方文档中没有介绍。
一般Oracle数据库(Oracle Database)可以分为两部分,即实例(Instance)和数据库(Database)。
SQL> create database reviewdb #可能是这个,不一定对,大家可以下去仔细查下资料。马哥本人没有用过,不好多说。
这里还需要配置个Instance
在文件 $site_path/etc/gerrit.config:
[database]
type = oracle
instance = xe
hostname = localhost
username = gerrit2
port = 1521
数据库我们不都创建了一个账户吗?账户是有密码的,这个密码怎么配置到gerrit web 中呢?
密码写到这个文件中 $site_path/etc/secure.config:
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
[database]
password = secret_pasword
5.SAP MaxDB
这个数据库马哥本人没有用过,不好多说,大家只能自行研究了
运行Gerrit 在MaxDB数据库, 你可能需要 MaxDB JDBC driver.相关的数据库驱动的jar包,可能的安装位置是:
在windows的路径一般会是 “C:\Program Files\sdb\MaxDB\runtime\jar\sapdbc.jar”
在linux上路径一般是 “/opt/sdb/MaxDB/runtime/jar/sapdbc.jar”
配置文件 $site_path/etc/gerrit.config:
[database]
type = maxdb
database = reviewdb
hostname = localhost
username = gerrit2
密码配置文件 $site_path/etc/secure.config:
[database]
password = <secret password>
上面说到的gerrit需要的数据库。
一般数据库相关的配置会在文件 $site_path/etc/gerrit.config和文件 $site_path/etc/secure.config。
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
初始化gerrit
1.先添加个linux的系统账户,让gerrit web运行在这个非root账户下面,这样更安全。
这个账户也不要设置密码。执行adduser添加系统账户,不需要给这个账户设置密码。
一般的马哥安装完系统会创建一个sudo权限的账户,名:mage。
sudo adduser gerrit2
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
2.切换到gerrit2这个linux系统账户下。不需要密码我一般是使用sudo su来切换到该账户下的。
sudo su gerrit2
3.执行init命令
java -jar gerrit.war init -d /path/to/your/gerrit_application_directory
一般安装到 /home/gerrit2/review_site这个路径下面,这个是官方文档中给出的一个路径。
当然也可以安装到其他路径下。例如如/var/lib/gerrit2 ,注意不要太随便的找个路径。推荐这个路径:/home/gerrit2/review_site。
一般的这个路径就是gerrit2 这个系统账户的home目录的。
java -jar gerrit.war init -d /home/gerrit2/review_site
它会一步一步的提示你输入相关的内容的。初始化之后可以再来修改这些配置的。
关于gerrit的主要的配置是在文件 '$site_path/etc/gerrit.config’中,
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
来一个马哥自己的配置:
gerrit2@gerrit-master:~/review_site$ cat etc/gerrit.config
[gerrit]
basePath = git # git 仓库的一个路径,这里个相对路径,等于/home/gerrit2/review_site/git。
canonicalWebUrl = http://gerrit.xxx.com:8080/ # 登陆gerrit web的url,默认使用8080端口。
[database]
type = postgresql
hostname = localhost
database = reviewdb
username = gerrit2
poolMinIdle = 4
poolMaxIdle = 10
poolLimit = 128
poolMaxWait = 10s
[index]
type = LUCENE
[auth]
type = LDAP
[ldap]
server = ldap://AD01.xxx.com
username = ldapuser
accountBase = DC=xxx,DC=com
groupBase = DC=xxx,DC=com
localUsernameToLowerCase = true #这个比较关键,之后忽略大小写,一定要配置,马哥之前吃过亏的。
[sendemail]
enable = true
smtpServer = ip
smtpUser = gerrit2@xxx.com
from = gerrit2@xxx.com
[container]
user = gerrit2
javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
heapLimit=100g
[sshd]
listenAddress = *:29418 #ssh监听的端口,最好不要随便修改
threads = 112
batchThreads = 16
streamThreads = 20
commandStartThreads = 6
maxConnectionsPerUser = 32
[httpd]
listenUrl = http://*:8080/
[cache]
directory = cache
[theme]
backgroundColor = FCFEEF
textColor = 000000
trimColor = D4E9A9
selectionColor = FFFFCC
topMenuColor = D4E9A9
changeTableOutdatedColor = F08080
[theme "signed-in"]
backgroundColor = FFFFFF
[commentlink "jira"]
match = \\[([A-Z]+-[0-9]+)\\]
link = http://jira.xxx.com/browse/$1 #这个配置和jira单号关联
[cache "web_sessions"]
maxAge = 1 week
[gitweb]
type = custom
linkname = gitiles
url = /plugins/gitiles/
revision = ${project}/+/${commit}
project = ${project}
roottree = ${project}
branch = ${project}/+/${branch}
filehistory = ${project}/+log/${branch}/${file}
file = ${project}+${commit}/${file}
下面这个是密码相关的配置文件:
gerrit2@gerrit-master:~/review_site$ cat etc/secure.config
[database]
password = xxxxx
[auth]
registerEmailPrivateKey = xxx
restTokenPrivateKey = xx
[ldap]
password = xxxx
[sendemail]
smtpPass = xxxx
初始化好之后我们就可以启动我们的gerrit web应用了
执行下面的命令就可以了,很简单的。一个sh脚本
review_site/bin/gerrit.sh start
review_site/bin/gerrit.sh stop
review_site/bin/gerrit.sh restart
马哥的淘宝店:马哥私房菜 https://shop592330910.taobao.com/
在启动gerrit 服务的时候很有可能会起不起来。这个时候我们就需要
去看review_site/logs/下面的那个错误日志文件了。
cat review_site/logs/error_log
或者
tail -f review_site/logs/error_log
启动起来的日志看起来像这样
[2017-08-15 09:19:33,250] [plugin-manager-preloader] INFO com.googlesource.gerrit.plugins.manager.OnStartStop : 57 plugins successfully pre-loaded
[2017-08-15 09:22:56,169] [ShutdownCallback] INFO com.google.gerrit.pgm.Daemon : caught shutdown, cleaning up
[2017-08-15 09:22:56,205] [ShutdownCallback] I