热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS7搭建gerrit服务总结

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


推荐阅读
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 深入解析HTTPS:保障Web安全的加密协议
    本文详细探讨了HTTPS协议在保障Web安全中的重要作用。首先分析了HTTP协议的不足之处,包括数据传输过程中的安全性问题和内容加密的缺失。接着介绍了HTTPS如何通过使用公钥和私钥的非对称加密技术以及混合加密机制,确保数据的完整性和机密性。最后强调了HTTPS的安全性和可靠性,为现代网络通信提供了坚实的基础。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 在GitHub上克隆vue-element-admin项目时遇到依赖安装错误
    在 GitHub 上克隆 vue-element-admin 项目后,使用 `npm install` 安装依赖时遇到了未知的 Git 错误。具体错误信息为 `npm ERR! code 128`,提示命令执行失败。这可能是由于网络问题、Git 配置不正确或某些依赖包的仓库地址无效导致的。建议检查网络连接、更新 Git 版本并确保所有依赖项的 URL 正确无误。 ... [详细]
  • 基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析
    基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析 ... [详细]
  • IDEA 2019.2 中 SFTP 部署功能无法成功连接至服务器的问题分析与解决 ... [详细]
author-avatar
Edward2502873903
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有