• Gerrit安装配置


    环境: CentOS 1611 + gerrit-2.11.4 (review.openstack.org)

    1. 安装java1.8 (>1.7)

    [root@review ~]# yum install java
    
    [root@review ~]# java -version
    openjdk version "1.8.0_131"
    OpenJDK Runtime Environment (build 1.8.0_131-b12)
    OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
    Install jdk 1.8

    2. 安装mariadb (mysql)

     1 [root@review ~]# yum install -y mariadb*       # 安装
     2 [root@review ~]# systemctl start mariadb.service   #启动
     3 [root@review ~]# systemctl enable mariadb.service    #开机启动
     4 
     5 # 首次配置mariadb
     6 [root@review ~]# mysql_secure_installation 
     7 
     8 NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
     9       SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
    10 
    11 In order to log into MariaDB to secure it, we'll need the current
    12 password for the root user.  If you've just installed MariaDB, and
    13 you haven't set the root password yet, the password will be blank,
    14 so you should just press enter here.
    15 
    16 Enter current password for root (enter for none):     # 默认为空
    17 OK, successfully used password, moving on...
    18 
    19 Setting the root password ensures that nobody can log into the MariaDB
    20 root user without the proper authorisation.
    21 
    22 Set root password? [Y/n]     # 新密码
    23 New password: 
    24 Re-enter new password: 
    25 Password updated successfully!
    26 Reloading privilege tables..
    27  ... Success!
    28 
    29 
    30 By default, a MariaDB installation has an anonymous user, allowing anyone
    31 to log into MariaDB without having to have a user account created for
    32 them.  This is intended only for testing, and to make the installation
    33 go a bit smoother.  You should remove them before moving into a
    34 production environment.
    35 
    36 Remove anonymous users? [Y/n] 
    37  ... Success!
    38 
    39 Normally, root should only be allowed to connect from 'localhost'.  This
    40 ensures that someone cannot guess at the root password from the network.
    41 
    42 Disallow root login remotely? [Y/n] n
    43  ... skipping.
    44 
    45 By default, MariaDB comes with a database named 'test' that anyone can
    46 access.  This is also intended only for testing, and should be removed
    47 before moving into a production environment.
    48 
    49 Remove test database and access to it? [Y/n] 
    50  - Dropping test database...
    51  ... Success!
    52  - Removing privileges on test database...
    53  ... Success!
    54 
    55 Reloading the privilege tables will ensure that all changes made so far
    56 will take effect immediately.
    57 
    58 Reload privilege tables now? [Y/n] 
    59  ... Success!
    60 
    61 Cleaning up...
    62 
    63 All done!  If you've completed all of the above steps, your MariaDB
    64 installation should now be secure.
    65 
    66 Thanks for using MariaDB!
    67 [root@review ~]# mysql -uroot -p
    68 Enter password: 
    69 Welcome to the MariaDB monitor.  Commands end with ; or g.
    70 Your MariaDB connection id is 10
    71 Server version: 5.5.52-MariaDB MariaDB Server
    72 
    73 Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
    74 
    75 Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    76 
    77 MariaDB [(none)]> create user 'gerrit'@'localhost' identified by 'password';
    78 MariaDB [(none)]> create database reviewdb;
    79 MariaDB [(none)]> grant all on reviewdb.* to 'gerrit'@'localhost';
    80 MariaDB [(none)]> flush privileges;
    Install&Config Mariadb

    3. 安装gerrit

    换mysql数据库, 安装verify label, 用http认证, 安装所有插件

    [root@review ~]# java -jar gerrit-2.11.4.war init -d /usr/local/gerrit_site/
    Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
    
    *** Gerrit Code Review 2.11.4
    *** 
    
    Create '/usr/local/gerrit_site' [Y/n]? 
    
    *** Git Repositories
    *** 
    
    Location of Git repositories   [git]: 
    
    *** SQL Database
    *** 
    
    Database server type           [h2]: mysql
    
    Gerrit Code Review is not shipped with MySQL Connector/J 5.1.21
    **  This library is required for your configuration. **
    Download and install it now [Y/n]? 
    Downloading http://repo2.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar ... OK
    Checksum mysql-connector-java-5.1.21.jar OK
    Server hostname                [localhost]: 
    Server port                    [(mysql default)]: 3306
    Database name                  [reviewdb]: 
    Database username              [root]: gerrit
    gerrit's password              : 
                  confirm password : 
    
    *** Index
    *** 
    
    Type                           [LUCENE/?]: 
    
    *** User Authentication
    *** 
    
    Authentication method          [OPENID/?]: ?
           Supported options are:
             openid
             openid_sso
             http
             http_ldap
             client_ssl_cert_ldap
             ldap
             ldap_bind
             custom_extension
             development_become_any_account
             oauth
    Authentication method          [OPENID/?]: http
    Get username from custom HTTP header [y/N]? 
    SSO logout URL                 : 
    
    *** Review Labels
    *** 
    
    Install Verified label         [y/N]? y
    
    *** Email Delivery
    *** 
    
    SMTP server hostname           [localhost]: 
    SMTP server port               [(default)]: 
    SMTP encryption                [NONE/?]: 
    SMTP username                  : 
    
    *** Container Process
    *** 
    
    Run as                         [root]: 
    Java runtime                   [/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre]: 
    Copy gerrit-2.11.4.war to /usr/local/gerrit_site/bin/gerrit.war [Y/n]? 
    Copying gerrit-2.11.4.war to /usr/local/gerrit_site/bin/gerrit.war
    
    *** SSH Daemon
    *** 
    
    Listen on address              [*]: 
    Listen on port                 [29418]: 
    
    Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v151
      If available, Gerrit can take advantage of features
      in the library, but will also function without it.
    Download and install it now [Y/n]? 
    Downloading http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar ... !! FAIL !!
    
    
    error: http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar: 302 Found
    Please download:
    
      http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar
    
    and save as:
    
      /usr/local/gerrit_site/lib/bcpkix-jdk15on-151.jar
    
    Press enter to continue 
    Continue without this library  [Y/n]? 
    Generating SSH host key ... rsa(simple)... done
    
    *** HTTP Daemon
    *** 
    
    Behind reverse proxy           [y/N]? 
    Use SSL (https://)             [y/N]? 
    Listen on address              [*]: 
    Listen on port                 [8080]: 
    Canonical URL                  [http://review.infra:8080/]: http://192.168.11.9:8080
    
    *** Plugins
    *** 
    
    Installing plugins.
    Install plugin reviewnotes version v2.11.4 [y/N]? y
    Install plugin replication version v2.11.4 [y/N]? y
    Install plugin download-commands version v2.11.4 [y/N]? y
    Install plugin singleusergroup version v2.11.4 [y/N]? y
    Install plugin commit-message-length-validator version v2.11.4 [y/N]? y
    Initializing plugins.
    No plugins found with init steps.
    
    Initialized /usr/local/gerrit_site
    Executing /usr/local/gerrit_site/bin/gerrit.sh start
    Starting Gerrit Code Review: OK
    Waiting for server on 192.168.11.9:8080 ... OK
    Opening http://192.168.11.9:8080/#/admin/projects/ ...FAILED
    Open Gerrit with a JavaScript capable browser:
      http://192.168.11.9:8080/#/admin/projects/
    Install Gerrit

     如果启动出错, $gerrit_site/logs/error_log 中提示reindex ..... 执行:

    java -jar gerrit-2.11.4.jar reindex -d $gerrit_site
    ...
    
    $gerrit_site/bin/gerrit.sh start
    if reindex error

    4. gerrit配置

    配置文件路径: $gerrit_sit/etc/gerrit.config

     a. 邮箱配置

      保证两个文件中的smtpPass密码(实际邮箱密码)一致

       

    [root@review ~]# vim /usr/local/gerrit_site/etc/gerrit.config
    ...
    [sendemail]
            smtpServer = smtp.163.com
            smtpUser = xxxxxxxxx@163.com
            from = GerritReviewAdmin<xxxxxxxxx@163.com>
            smtpPass = xxxxxxxxx
    ...
    
    [root@review ~]# vim /usr/local/gerrit_site/etc/secure.config
    ...
    [sendemail]
            smtpPass = xxxxxxxxx
    ...
    
    Email Config
    Email Config

    打开邮箱, 打开链接, 邮箱才注册成功

    b. 公钥私钥配置

    [root@review project]# ssh-keygen
    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:
    5b:e3:bc:0b:c7:19:88:7f:d2:82:09:dc:f9:cd:56:2c root@review.infra
    The key's randomart image is:
    +--[ RSA 2048]----+
    |                 |
    |                 |
    |                 |
    |   . . o . .     |
    |    o + S E o    |
    |     . = X *     |
    |      o B %      |
    |         B .     |
    |          o.     |
    +-----------------+
    create key

    复制生成的公钥~/.ssh/id_rsa.pub到gerrit上,并复制gerrit上的known_hosts内容到~/.ssh/known_hosts (也可自动连接时生成)

    c. 修改gerrit配置 (添加标签Verified, Workflow Label)

    按上步配置好后, git clone All-Projects, 并修改里面的project.config文件

    [root@review All-Projects]# vim project.config
    ......
    [label "Verified"]
            function = MaxWithBlock
            value = -2 Fails
            value = -1 Doesn't seem to work
            value =  0 No score
            value = +1 Works for me
            value = +2 Verified
            defaultValue = 0
    [label "Workflow"]
            function = MaxWithBlock
            value = -1 Work in progress
            value =  0 Ready for reviews
            value = +1 Approved
            defaultValue = 0
    
    [root@review All-Projects]# git add .
    [root@review All-Projects]# git commit -m "add workflow label"
    [detached HEAD a711d36] add workflow label
     1 file changed, 11 insertions(+), 2 deletions(-)
    [root@review All-Projects]# git push origin HEAD:refs/meta/config
    Counting objects: 5, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 491 bytes | 0 bytes/s, done.
    Total 3 (delta 1), reused 0 (delta 0)
    remote: Resolving deltas: 100% (1/1)
    remote: Processing changes: refs: 1, done    
    To ssh://gerrit@192.168.11.9:29418/All-Projects
       7105330..a711d36  HEAD -> refs/meta/config
    project.config

    添加Verifyed和Workflow  选项 

    d. gerrit html 主题配置

    参考openstack的gerrit review: https://review.openstack.org

     简要教程: https://review.openstack.org/Documentation/config-themes.html

     需要的静态文件可以从这里提取, 也可自行编写或修改

    部好后效果图: 

    5. 部署到Apache 或 Nginx

    如果不配置会出现以下错误

    [root@review ~]# yum install -y httpd
    Installed:
      httpd.x86_64 0:2.4.6-45.el7.centos.4                                         
    
    Dependency Installed:
      httpd-tools.x86_64 0:2.4.6-45.el7.centos.4   mailcap.noarch 0:2.1.41-2.el7  
    
    Complete!
    安装httpd

     a. Apache配置:

    [root@review ~]# vim /usr/local/gerrit_site/etc/gerrit.config                    
    [gerrit]
            basePath = git
            canonicalWebUrl = http://192.168.11.9
    [database]
            type = mysql
            hostname = localhost
            port = 3306
            database = reviewdb
            username = gerrit
    [index]
            type = LUCENE
    [auth]
            type = HTTP
    [sendemail]
            smtpServer = localhost
    [container]
            user = root
            javaHome = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre
    [sshd]
            listenAddress = *:29418
    [httpd]
            listenUrl = proxy-http://192.168.11.9:8080/
    [cache]
            directory = cache
    gerrit config
    [root@review httpd]# vim conf.d/gerrit.conf 
    
    <VirtualHost *:80>  
        ServerName 192.168.11.9  
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyVia Off
    
        <Proxy *>
            Order deny,allow  
            Allow from all  
        </Proxy>
    
        <Location />      
          AuthType Basic
          AuthName "Welcomme to Gerrit Code Review Site!"
          Require valid-user
          AuthBasicProvider file
          AuthUserFile /usr/local/gerrit_site/etc/passwords
        </Location>
    
        AllowEncodedSlashes On
        ProxyPass / http://192.168.11.9:8080/
        #proxyPassReverse / http://127.0.0.1:8080  
    
    </VirtualHost>
    apache config

    http://192.168.11.9 输入用htpasswd产生的用户和密码登陆, 第一个用户是管理员用户(注册邮箱).

     b. Nginx

    [root@review conf]# cat gerrit.conf
    
    server {
    
    listen 80;
    
    server_name localhost;
    
    
    location / {
    
              auth_basic              "Gerrit Code Review";
    
              auth_basic_user_file    /usr/local/gerrit_site/etc/passwords;
    
              proxy_pass       http://192.168.11.9:8080;
              proxy_set_header        X-Forwarded-For $remote_addr;
    
              proxy_set_header        Host $host;
    
        }
    
    }
    Nginx

    6. gitweb对接

    安装, 安装后的gitweb目录 /var/www/git

    [root@review ~]# yum install -y gitweb
    [root@review ~]# git config --file /usr/local/gerrit_site/etc/gerrit.config gitweb.cgi /var/www/git/gitweb.cgi 
    [root@review ~]# git config --file /usr/local/gerrit_site/etc/gerrit.config --unset gitweb.url
    [root@review ~]# /usr/local/gerrit_site/bin/gerrit.sh restart
    Stopping Gerrit Code Review: OK
    Starting Gerrit Code Review: OK
    [root@review ~]#

     

    REF1: http://www.cnblogs.com/kevingrace/p/5624122.html

    REF2: http://www.cnblogs.com/kevingrace/p/5651447.html

    夜来风雨声, 代码码多少?
  • 相关阅读:
    python装饰器
    python名称空间和作用域
    python函数-函数对象
    python函数-参数
    python文件高级操作
    python基本文件操作
    python2和3的区别
    OSI-传输层
    Android屏幕density, dip等相关概念总结
    架构设计:系统间通信(20)——MQ:消息协议(下)
  • 原文地址:https://www.cnblogs.com/belic/p/7153055.html
Copyright © 2020-2023  润新知