CentOS 安装部署 Gerrit
Gerrit
安装配置过程
Gerrit
安装配置过程安装过程如下
步骤一:创建专用账户和工作目录
# adduser gerrit // 创建专用账户
# passwd gerrit //为专有账户设置密码
步骤二:配置Java
环境
- 安装
JDK
将下载得到的jdk-8u161-linux-x64.rpm
包保存到Linux
主机
# rpm -ivh jdk-8u161-linux-x64.rpm
- 设置环境变量,编辑
~/.bashrc
,
# vim ~/.bashrc
在文件的末尾添加以下行
export JAVA_HOME=/usr/java/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CLASSPATH
使环境配置生效
# source ~/.bashrc
- 测试
Java
环境,在终端输入:java -version
查看是否正常显示版本信息,若显示则安装成功
步骤三:安装MySQL
MySQL的Server在CentOS 7上从默认软件列表中被移除了,用MariaDB来代替,所以这导致我们必须要去官网上进行下载,找到链接,用wget打开,然后再安装:
# wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
# yum -y install mysql mysql-server mysql-devel
启动MySQL服务
# systemctl start mysqld
获取安装MySQL时的初始密码并登录MySQL
# grep 'temporary password' /var/log/mysqld.log
# mysql -u root -p
登录成功后修改密码,首先修改安全策略为0,然后将密码长度限制修改为1,最后修改密码
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> set password for root@localhost=password('root');
创建gerrit用户
mysql> CREATE USER 'gerrit'@'%' IDENTIFIED BY '123456';
创建gerrit要用的数据表
mysql> CREATE DATABASE ReviewDB;
把ReviewDB的所有权限赋给gerrit
mysql> GRANT ALL ON ReviewDB.* TO 'gerrit'@'%';
步骤四:安装Git
# yum -y install git
步骤五:下载安装gerrit
- 从官网下载
gerrit
,存放于/home/gerrit
目录:
# wget https://gerrit-releases.storage.googleapis.com/gerrit-2.15.5.war
- 安装
gerrit
:
首先切换为gerrit用户,然后运行gerrit的war包
# su gerrit
$ cd
$ java -jar gerrit-2.15.war init -d review_site
一路回车默认安装(其中的认证方式处改为HTTP)
[root@centos-7 gerrit]# su gerrit
[gerrit@centos-7 ~]$ ll
总用量 83864
-rwxr-xr-x. 1 root root 85872756 8月 21 12:49 gerrit-2.14.war
[gerrit@centos-7 ~]$ java -jar gerrit-2.15.5.war init -d review_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
[2018-08-21 12:51:37,463] [main] INFO com.google.gerrit.server.config.GerritServerConfigProvider : No /home/gerrit/review_site/etc/gerrit.config; assuming defaults
*** Gerrit Code Review 2.15.5
***
Create '/home/gerrit/review_site' [Y/n]?
*** Git Repositories
***
Location of Git repositories [git]:
*** SQL Database
***
Database server type [h2]:
*** Index
***
Type [LUCENE/?]:
*** User Authentication
***
Authentication method [OPENID/?]: HTTP
Get username from custom HTTP header [y/N]?
SSO logout URL :
Enable signed push support [y/N]?
*** Review Labels
***
Install Verified label [y/N]?
*** Email Delivery
***
SMTP server hostname [localhost]:
SMTP server port [(default)]:
SMTP encryption [NONE/?]:
SMTP username :
*** Container Process
***
Run as [gerrit]:
Java runtime [/usr/java/jdk1.8.0_161/jre]:
Copy gerrit-2.15.5.war to review_site/bin/gerrit.war [Y/n]?
Copying gerrit-2.15.5.war to review_site/bin/gerrit.war
*** SSH Daemon
***
Listen on address [*]:
Listen on port [29418]:
Generating SSH host key ... rsa... dsa... done
*** HTTP Daemon
***
Behind reverse proxy [y/N]?
Use SSL (https://) [y/N]?
Listen on address [*]:
Listen on port [8080]:
Canonical URL [http://centos-7.shared:8080/]:
*** Cache
***
*** Plugins
***
Installing plugins.
Install plugin commit-message-length-validator version v2.15.5 [y/N]?
Install plugin download-commands version v2.15.5 [y/N]?
Install plugin hooks version v2.15.5 [y/N]?
Install plugin replication version v2.15.5 [y/N]?
Install plugin reviewnotes version v2.15.5 [y/N]?
Install plugin singleusergroup version v2.15.5 [y/N]?
Initializing plugins.
No plugins found with init steps.
Initialized /home/gerrit/review_site
Executing /home/gerrit/review_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on centos-7.shared:8080 ... OK
Opening http://centos-7.shared:8080/#/admin/projects/ ...FAILED
Open Gerrit with a JavaScript capable browser:
http://centos-7.shared:8080/#/admin/projects/
[gerrit@centos-7 ~]$
授权文件夹权限给gerrit用户:
# chown -R gerrit:gerrit review_site
- 修改
gerrit
配置文件,说明如下
$ vim review_site/etc/gerrit.config
[gerrit]
basePath = git //指定被gerrit管理的所有git库存放位置,即review_site_project/git/
canonicalWebUrl = http://10.211.55.19:8081/project //指定web访问gerrit的网址//填自己的ip和端口号
[database]
type = mysql //指定gerrit所默认数据库类型,可以选用mysql,安装并创建gerrit账户
database = /home/gerrit/review_site/db/ReviewDB
[auth]
type = HTTP //指定浏览器登录gerrit时的认证方式
[sendemail]
smtpServer = localhost //局域网邮件服务器,可使用hMailSever搭建
[container]
user = gerrit //指定gerrit所在机器的用户身份与上文创建的用户对应一致,可以是root
javaHome = /usr/java/jdk1.8.0_161/jre
[sshd]
listenAddress = *:29418 //指定sshd服务监听的端口号
[httpd]
listenUrl = http://*:8081/ //指定http代理地址
[cache]
directory = cache //缓存位置
重启gerrit服务
$ review_site/bin/gerrit.sh restart
设置gerrit服务开机启动
# ln -snf /home/gerrit/review_site/bin/gerrit.sh /etc/init.d/gerrit.sh
步骤六:配置反向代理服务(nginx)
说明: 局域网本地安装,设置本地
repo
库
安装nginx
反向代理服务器
- 安装
gcc-c++ pcre pcre-devel zlib zlib-devel openssl
:
# yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl
- 安装启动
nginx
并设置自启动
# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum update && yum -y install nginx
# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
# systemctl start nginx
配置nginx
:
# vim /etc/nginx/conf.d/default.conf
server {
listen 82;
server_name localhost;
auth_basic "Welcome to Gerrit Code Review !";
auth_basic_user_file /home/gerrit/review_site/etc/passwd;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
#root /usr/share/nginx/html;
#index index.html index.htm index.php index.jsp;
proxy_pass http://127.0.0.1:8081;
#proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
启动nginx
服务:
# setenforce 0 //关闭selinux以避免造成权限问题
# systemctl disable firewalld //禁用防火墙
# systemctl stop firewalld //关闭防火墙
# systemctl start nginx
设置第一个gerrit
用户的账号和密码
要用到htpasswd命令需要首先安装有httpd
# yum -y install httpd
$ touch ./review_site/etc/passwd
$ htpasswd -b ./review_site/etc/passwd gerrit 123456
步骤七:安装配置gitweb
安装gitweb
,最好在联网环境下安装,或者在离线环境下下载对应的依赖包
# yum -y install gitweb
配置gitweb
,与gerrit
集成
修改gitweb
的配置文件(/etc/gitweb.conf),将配置项 “$projectroot”修改为gerrit
的git
仓库目录。
修改/home/gerrit/review_site/etc/gerrit.config,添加:
配置gerrit权限
使用管理员账号登录gerrit
,修改All-Projects
的权限,为refs/*
和refs/meta/config
的Read
配置项配置合适的权限。
注意:如果你是在root用户下输入上面的命令 创建了password文件到/home/gerrit/review_site/etc目录中,你会发现在登录的时候永远登录不成功,永远会得到服务器500的错误页面。原因是password文件的权限问题。我们知道,/home/gerrit/是我们之前新建的gerrit用户的,那么这个文件夹的权限是700,也就是只允许gerrit用户访问,其他组的用户是访问不了的,虽然这个文件的权限拥有root用户的所有权限,但是因为它放在700权限的文件夹下面,所以同样其他用户是访问不到的。解决方法如下
# chown -R gerrit:gerrit /home/gerrit
重启gerrit服务和Nginx服务
重启gerrit
和nginx
服务
$ /home/gerrit/review_site/bin/gerrit.sh restart
# systemctl restart nginx