作者:Edward2502873903 | 来源:互联网 | 2023-09-15 10:53
CentOS7搭建gerrit服务总结一、写在前面二、具体步骤1.先下载安装jdk2.下载gerrit3.为gerrit创建单独操作系统帐号,用来管理gerrit,具体操作如下:4
CentOS 7 搭建gerrit服务总结 一、写在前面 二、具体步骤 1. 先下载安装jdk 2. 下载gerrit 3. 为gerrit创建单独操作系统帐号,用来管理gerrit,具体操作如下: 4. 安装gerrit 配置gerrit配置 5. 编辑配置文件(根据实际情况进行调整) 6. root帐户下添加gerrit用户,可以添加多个,这个用户是作为web页面的登陆用户使用的,下面第一行命令,创建文件并添加管理员帐户,第二行命令,创建一个普通用户: 7.root帐户下启动、关闭、重启gerrit 8.配置反向代理服务(Nginx) 9.访问: http://192.168.15.20 ,用admin用户登录 10.使用ssh-keygen生成密钥对,后续需要用到 11. 将前面生成的私钥id_rsa放到/home/gerrit/.ssh目录下,将公钥添加到gitlab对应的帐户下。 12.在Gerrit创建一个空项目并同步GitLab 13.配置Grerrit与GitLab的同步 13.1 replication插件 13.2 配置插件 14. clone代码 15.提交改动 三、其他说明 1.检查ssh通道方式问题出在哪里:(20200805 14:04) 2.确保本地配置的git邮箱,和服务器端配置的邮箱保持一致,否则有可能无法push代码。(20200805 15:02) 3.调整文件“/home/gerrit/review_site/etc/secure.config”中sendemail部分的smtpPass配置,可修改发送邮箱的密码。(20200805 17:19) 4.更新gerrit缓存
一、写在前面 尝试着在CentOS 7.6系统下面搭建gerrit服务,诸多尝试,终于顺利搭建,下面将能想起来的过程进行总结,有些可能不大准确,还请包涵。
二、具体步骤 1. 先下载安装jdk 细节这里就不详细描述了。
2. 下载gerrit 后面的路径就是gerrit 在电脑下载弹出的地址
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.2.2.war
3. 为gerrit创建单独操作系统帐号,用来管理gerrit,具体操作如下: sudo adduser gerritsudo passwd gerrit
并将gerrit加入sudo权限,修改/etc/sudoers 文件,找到下面这行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere root ALL=(ALL) ALL gerrit ALL=(ALL) ALL
修改完毕,现在可以用gerrit帐号登录,然后用命令 su - ,即可获得root权限进行操作。
4. 安装gerrit 配置gerrit配置 root帐户下安装,先创建好安装目录,如/home/gerrit/review_site,一并创建好代码存放目录,如/home/gerrit/git_repo,然后再运行具体命令,例子如下:
java -jar /home/work/download/gerrit-3.2.2.war init -d /home/gerrit/review_site
具体初始化配置选项的选择可以参考下面链接。 https://www.cnblogs.com/yinzhengjie/p/11007383.html
5. 编辑配置文件(根据实际情况进行调整) 安装完毕,可在root帐户下运行下面的命令,修改安装目录所有者为gerrit帐户:
chown -R gerrit:gerrit /home/gerrit/review_site
切换到gerrit帐户,运行下面的的命令编辑gerrit配置文件:
vim ~/review_site/etc/gerrit.config
参考例子如下:
[gerrit]basePath = /home/gerrit/git_repocanOnicalWebUrl= http://192.168.15.20:80/serverId = 33af9814-8fc6-4dc7-a2ec-47f4ab7a13f0 [container]javaOptiOns= "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"javaOptiOns= "-Dflogger.logging_cOntext=com.google.gerrit.server.logging.LoggingContext#getInstance"user = rootjavaHome = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b03-1.el7.x86_64/jre [index]type = lucene [auth]type = HTTP [receive]enableSignedPush = true [sendemail]enable = truesmtpServer = smtp.mxhichina.comsmtpServerPort = 465smtpEncryption = SSLsmtpUser = myemail@company.comsslVerify = falsefrom = CodeReview [sshd]listenAddress = *:29418 [httpd]listenUrl = proxy-http://*:8080/ [cache]directory = cache
6. root帐户下添加gerrit用户,可以添加多个,这个用户是作为web页面的登陆用户使用的,下面第一行命令,创建文件并添加管理员帐户,第二行命令,创建一个普通用户: htpasswd -cb /etc/httpd/passwd admin 123456 htpasswd -b /etc/httpd/passwd tom 123456
7.root帐户下启动、关闭、重启gerrit 配置完成之后,调用启动命令开启服务,相关命令可参见下面内容。
# /home/gerrit/review_site/bin/gerrit.sh start # /home/gerrit/review_site/bin/gerrit.sh stop # /home/gerrit/review_site/bin/gerrit.sh restart
8.配置反向代理服务(Nginx) 特别说明 :强烈建议server配置listen为80端口,上面gerrit配置文件中的canonicalWebUrl也相应配置为80端口,否则可能会出现一些莫名其妙的问题。 配置nginx:
vim /usr/local/nginx/conf/nginx.conf
配置文件内容例子如下:
user root;worker_processes 1;events {worker_connections 1024;}server {listen 80;server_name 192.168.15.20;#charset koi8-r;#access_log logs/host.access.log main; location / {#root html;#index index.html index.htm;auth_basic "Gerrit Code Review";auth_basic_user_file /etc/httpd/passwd;proxy_pass http://127.0.0.1:8080;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header Host $host;}#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 html;}}
9.访问: http://192.168.15.20 ,用admin用户登录 10.使用ssh-keygen生成密钥对,后续需要用到 ssh-keygen -C "tom@company.com" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:vvIxj5KlWfnsIE5yCqzeTSAeRtD0OarGeR+9Lv1ZA/A tom@company.com The key's randomart image is: +---[RSA 2048]----+ | . .. | | o .o | | . .. .. | | .. o | | .oo. S. E | | .o=+. o+. . | | ++o.=*Bo. o | | .o.o**+ Xo o . | |o. ....+*o+o | +----[SHA256]-----+
11. 将前面生成的私钥id_rsa放到/home/gerrit/.ssh目录下,将公钥添加到gitlab对应的帐户下。 本地gerrit系统帐户下运行下面命令配置git信息:
git config --global user.name "tom" git config --global user.email "tom@company.com"
12.在Gerrit创建一个空项目并同步GitLab 假设在gitlab上有一个项目testrepo,则在gerrit相应创建一个testrepo项目。 在/home/gerrit/git_repo下,执行下面命令删除自动创建的目录:
sudo rm -rf testrepo.git/
重新从GitLab复制:
git clone --bare git@192.168.15.202:test/testrepo.git
13.配置Grerrit与GitLab的同步 13.1 replication插件 通过Gerrit的replication插件来实现。 确认插件状态:已安装、已启用。
ssh -p 29418 admin@192.168.15.20 gerrit plugin ls |grep replication
13.2 配置插件 在/home/gerrit/review_site/etc目录下创建replication.config文件用于代码同步。 特别注意:以后每创建一个新的项目,都要在该配置文件中添加对应的配置。
[remote "testrepo"] projects = testrepo url = git@192.168.15.202:test/testrepo.git push = +refs/heads/*:refs/heads/* push = +refs/tags/*:refs/tags/* push = +refs/changes/*:refs/changes/* threads = 3
特别说明 :如果不小心在配置上述内容后,又删除了对应的项目,则可能引发问题,需要先删除上述的内容,再执行恢复项目的操作。(20200824 11:01)
执行下面命令重新加载:(当前系统已经配置了私钥,并且相应公钥已经添加到了gerrit的admin帐户SSH Keys下面)
ssh -p 29418 admin@192.168.15.20 gerrit plugin reload replication
14. clone代码 从testrepo项目下面SSH项下面复制完整的clone命令,然后在git bash下面执行,即可将代码克隆下来,并且生成产生COMMIT_MSG的hook。
git clone "ssh://tom@192.168.20.12:29418/testrepo" && scp -p -P 29418 tom@192.168.13.12:hooks/commit-msg "tom/.git/hooks/"
15.提交改动 git push -u origin HEAD:refs/for/master
三、其他说明 1.检查ssh通道方式问题出在哪里:(20200805 14:04) ssh -vv -p 29418 admin@192.168.13.12
2.确保本地配置的git邮箱,和服务器端配置的邮箱保持一致,否则有可能无法push代码。(20200805 15:02) 3.调整文件“/home/gerrit/review_site/etc/secure.config”中sendemail部分的smtpPass配置,可修改发送邮箱的密码。(20200805 17:19) 4.更新gerrit缓存 ssh -p 29418 admin@192.168.13.12 gerrit flush-caches --all
参考文档 : https://www.cnblogs.com/yinzhengjie/p/11007383.html https://www.cnblogs.com/anliven/p/12019974.html