此文档为我工作中搭建安卓代码服务器时做的笔记。
目录
Gerrit服务器的搭建
1、服务器信息:
2、开发环境:
3、JDK安装
4、安装gerrit
4.1、安装git
4.2、下载gerrit安装包
4.3、新建gerrit专用用户
4.4、安装gerrit
4.5、配置gerrit
4.6、重启gerrit
5、安装Nginx
5.1、为了安装更快和一次成功,先更换源:(可跳过)
5.2、安装Nginx依赖库
5.3、安装Nginx
5.4、修改Nginx默认配置
5.4.1、指定配置文件
5.4.2、修改配置文件
5.4.3、检查配置文件是否正确:
5.4.4、重新加载配置文件:
5.4.5 重启Nginx:
5.4.6 停止或启动 Nginx:
6、登录认证文件:
7、Nginx设置开机启动:
IP: 172.16.1.227
ssh_port: 22
user: hopechart user: root
passwd: Hopechart@227 passwd: Hopechart@227
因为整个gerrit的安装是依赖于Java。
首先:java -version确认是否安装。
sudo apt-get install openjdk-8-jdk
$ /home/gerrit/gerrit_site/bin/gerrit.sh restart
gerrit的下载地址:https://www.gerritcodereview.com/releases/README.md
我使用的gerrit版本是2.13.4。 下载完成之后会发现是一个war的包。
新建一个用户用来专门管理gerrit相关的内容。
在root用户(或者使用sudo命令)下面输入下面的命令:
# adduser gerrit
# su gerrit
在gerrit用户的目录(/home/gerrit/)下面,执行下面的命令:
$ java -jar gerrit-2.13.4.war init -d ~/gerrit_site
这个命令的意思是执行安装gerrit,会在当前目录下新建一个文件夹gerrit_site用来作为gerrit的根目录,在这个目录中,会安装git仓库,以及gerrit的web页面,还有gerrit的bin,etc等文件夹。
然后就开始安装过程了,安装的过程会询问很多问题,有一些判断性的问题会用[y/N]这样的形式,大写的字母表示默认,我们直接敲回车就表示采用默认的安装选项。
注意:我们安装的时候,可以只在Authentication method时输入http,其他全部回车用默认值,因为其他配置我们待会可以通过etc/gerrit.config文件进行修改。
## 用户认证方式,注意!!!!!这里一定要手动输入 http, 其他的就直接回车
*** User Authentication
***
Authentication method [OPENID/?]: http
#vim /home/gerrit2/gerrit/etc/gerrit.config
说明:
canonicalWebUrl 就是gerrit的主页地址。开篇时,我们假设gerrit服务器的ip地址是172.16.1.227,这里我们就需要设置成http://172.16.1.227:9092。
auth的类型一定要是http,这是我们在安装的时候唯一需要手动设置的地方。
sshd就是ssh监听的端口。
httpd表示反向监听的端口,这里注意要修改成proxy-http://*:9093/,默认值是没有proxy的。
完成上面的配置之后,我们重启一下gerrit。
gerrit的可执行文件位于/home/gerrit/gerrit_site/bin目录下,我们直接执行。
$ /home/gerrit/gerrit_site/bin/gerrit.sh restart
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器。
cp /etc/apt/sources.list /etc/apt/sources.list.old
vim /etc/apt/source.list
添加东北大学源:
apt-get update
apt-get install build-essential
apt-get install libtool
sudo apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g-dev
apt-get install openssl
下载最新版本:
wget http://nginx.org/download/nginx-1.11.3.tar.gz
解压:
tar -zxvf nginx-1.11.3.tar.gz
进入解压目录:
cd nginx-1.11.3
配置:
/configure --prefix=/usr/local/nginx
编辑nginx:
make
注意:这里可能会报错,提示“pcre.h No such file or directory”,具体详见:
需要安装 libpcre3-dev,命令为:sudo apt-get install libpcre3-dev
安装nginx:
sudo make install
启动nginx:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过 -h查看帮助命令。
查看nginx进程:
ps -ef|grep nginx
root@hopechart-pc:/usr/local/nginx/sbin# ./nginx -c /usr/local/nginx/conf/nginx.conf
-c表示configuration,指定配置文件
默认的nginx只有一个default.conf文件,是nginx的默认配置文件,我们这里需要新建一个专门用来处理gerrit请求的配置文件。我这里新建了一个gerrit.conf文件,用来处理gerrit的反向代理。
解释下里面的几个重点:
1、上面就是默认的配置,看到这里我把端口默认的监听端口设置成了9090。
2、auth_basic 是用于登录时弹出验证登录对话框如图1。
图1
3、auth_basic_user_file 是我们输入用户名和密码之后要去验证是否匹配的文件,看到路径是放在我们的gerrit用户目录下面。
4、location 部分指的的是当用户访问到172.16.1.227:9090时,要指向的内容,这里面的proxy_pass 字段表示要做的反向代理,指向的是9092,还记得9092端口是谁在用么?对的,就是我们之前新建好的gerrit的web监听端口,也就是说,当用户访问9090端口时,nginx直接把这个请求代理到9092端口上去了,这个就是所谓的反向代理。
root@hopechart-pc:/usr/local/nginx/sbin# ./nginx - t
root@hopechart-pc:/usr/local/nginx/sbin# ./sbin/nginx -s reload
root@hopechart-pc:/usr/local/nginx/sbin# ./nginx restart
停止:
root@hopechart-pc:/usr/local/nginx/sbin# ./nginx -s stop
root@hopechart-pc:/usr/local/nginx/sbin# ./nginx -s quit
启动:
root@hopechart-pc:/usr/local/nginx/sbin#./sbin/nginx
这里我们需要用apach的 htpasswd工具来新建这个文件,这也是为什么我们虽然不用到apache的反向代理,仍然需要apache的原因。
我们通过下面的命令来在/home/gerrit/路径下创建认证文件
htpasswd -c /home/gerrit/gerrit.password admin
这个命令的详细解释:
接下来你需要在命令行中连续输入两次密码,我们就为admin用户设置好了密码,可以通过vim来查看下这个密码文件,会发现里面是经过加密的。
如果我们想新建别的用户,或者修改某个用户的密码,只需要把-c改成-m就好了,如果还是用-c并且路径不变的话,就会覆盖掉原来的文件。
例如:我们想要新增一个用户,master,允许其通过页面登录,只需要执行下面的命令就好了。
htpasswd -m /home/gerrit/gerrit.password admin
1.通过如下步骤设置gerrit服务开机自启动:
sudo ln -snf /home/gerrit/review_site/bin/gerrit.sh /etc/init.d/gerrit.sh
sduo ln -snf /etc/init.d/gerrit.sh /etc/rc2.d/S90gerrit
sduo ln -snf /etc/init.d/gerrit.sh /etc/rc3.d/S90gerrit
2.服务自动启动脚本/etc/init.d/gerrit.sh需要通过 /etc/default/gerritcodereview(该申明被卸载gerrit.sh脚本里面)文件来提供一些配置。该文件的内容为:
GERRIT_SITE=/home/gerrit/review_site
NO_START=0
3.如果不能启动,可能需要查看下权限
update-rc.d gerrit2 defaults
在/etc/init.d/目录下创建名为nginx的文件:
sudo touch /etc/init.d/nginx
编辑如下内容:
//-------------------------------------------------------
#!/bin/bash
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
SCRIPTNAME=/etc/init.d/$NAME
# If the daemon file is not found, terminate the script.
test -x $DAEMON || exit 0
d_start() {
$DAEMON || echo -n " already running"
}
d_stop() {
$DAEMON –s quit || echo -n " not running"
}
d_reload() {
$DAEMON –s reload || echo -n " could not reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC configuration..."
d_reload
echo "reloaded."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
# Sleep for two seconds before starting again, this should give the
# Nginx daemon some time to perform a graceful stop.
sleep 2
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
exit 3
;;
esac
exit 0
//-------------------------------end----------------------
2.
sudo touch /etc/init.d/nginx
3.在rc.local文件的最后中添加如下的一行: /etc/init.d/ngistartnx
最后,nginx可以通过 /etc/init.d/nginx start或者 service nginx start进行启动。