如何在Ubuntu 16.04上安装GitBucket

 

在本文中,小编将介绍用于运行Ubuntu 16.04的Vultr实例的基本安装和设置,并假设您作为一个非根用户执行命令。

必备条件:

具有至少1GB RAM的Vultr服务器实例(尽管速度较慢,但可能会起作用)。

openjdk-8-jre需要,旧版本将不起作用。

wget用于下载GitBucket软件包。

nginx可选,为GitBucket提供反向代理。

systemd管理启动和停止GitBucket进程。

安装前:

GitBucket需要在服务器上安装Java 8或更新。如果您还没有安装Java 8,首先更新您的本

地包列表。

sudo apt update

然后安装Java 8运行时包。

sudo apt install openjdk-8-jre

安装GitBucket

创建一个非特权用户

在继续之前,我们需要创建一个非特权用户来运行GitBucket。在非特权用户下运行GitBucket会限制我们的安装,使其无法在自己的数据目录之外编写,从而增强了服务器的安全性。运行以下命令创建一个名为gitbucket的系统用户。

sudo adduser --system gitbucket

因为我们创建了一个系统用户,默认的shell是/bin/false,除非我们在运行su时提供额外的shell参数,否则我们将被踢回当前的shell。

sudo su - gitbucket -s /bin/bash

您的shell的提示符应该更改,您将登录到新的系统用户。

下载/更新GitBucket

导航到GitBucket发布页面并定位最新的可用版本。复制gitbucket的URL。war包,验证您在新用户的主目录中,并使用wget下载它。

cd ~/wget https://github.com/gitbucket/gitbucket/releases/download/4.18.0/gitbucket.war

每次您希望更新GitBucket包时,您需要重复此步骤。

初始GitBucket配置

下载完包后,我们需要手动启动GitBucket来执行一些初始配置

java -jar gitbucket.war --port 8080

如果端口8080已经被另一个进程占用,您可以更改端口GitBucket现在将监听。本指南假定在整个GitBucket中监听端口8080。

这将在您的服务器的公共网络接口上启动GitBucket,监听指定的端口。在几分钟之后,您应该会看到以下消息。

INFO:oejs.Server:main: Started @15891ms

如果您使用的是Vultr的防火墙,您将需要打开GitBucket正在监听的端口,因为Vultr的防火墙是一个白名单,除非另有指定,否则拒绝通信量。

您的GitBucket安装现在应该联机并且可以从internet访问。使用web浏览器,连接到您的服务器的公共地址(确保指定端口GitBucket正在运行,(例如:http://203.0.113.0:8080或http://example.com:8080),您将登陆GitBucket的主页。

但是,需要更改默认管理员帐户的密码。为此,通过web界面右上角的按钮登录到管理员帐户。管理员帐户的默认登录是用户名的根,然后再次root用户输入密码。一旦登录,按钮将被替换为一个配置文件图标和下拉菜单。展开下拉列表并选择帐户设置,然后在帐户设置向导中设置一个新的、更安全的密码。

在您更新了默认管理员帐户的凭证并验证GitBucket在这个最小配置中启动之后,用“CTRL+C”关闭Java进程并关闭当前的shell。

创建Systemd服务

目前,我们只能通过SSH访问我们的服务器来运行GitBucket,并从一个shell手动启动进程。幸运的是,Ubuntu自带了Systemd,允许我们创建一个服务,这个服务将由系统自动启动和维护。

使用nano,在/etc/systemd/system目录中创建一个新的单元文件。

sudo nano /etc/systemd/system/gitbucket.service

然后,将下列内容复制到文件中。

[Unit]Description=GitBucketAfter=network.target[Service]ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080ExecStop=/bin/kill -SIGINT $MAINPIDType=simpleUser=gitbucket[Install]WantedBy=multi-user.target

这个单元文件定义了GitBucket的基本启动和关闭行为,并在本地唯一的网络接口上运行我们的非特权系统用户下的服务。

如果您已经更改了端口号,GitBucket将会侦听,更改ExecStart命令的端口参数。

保存(“CTRL+O”)新的单位文件,然后退出编辑器(“CTRL+X”)。您将需要重新加载Systemd以发现新的单元文件。

sudo systemctl daemon-reload

系统重新加载后,验证新单元已被发现并加载。

sudo systemctl status gitbucket

您应该会看到以下输出。

gitbucket.service - GitBucket   Loaded: loaded (/etc/systemd/system/gitbucket.service; disabled; vendor preset: enabled)   Active: inactive (dead)

最后,允许新单元在您的服务器启动时自动启动,然后第一次启动服务。

sudo systemctl enable gitbucketsudo systemctl start gitbucket

一旦服务启动,您将能够再次使用IP地址和端口号从您的浏览器访问GitBucket。

配置Nginx反向代理

虽然可以通过端口8080直接暴露GitBucket,但您可以改进性能并配置诸如HTTP/2、TLS加密和缓存规则等特性,通过Nginx公开GitBucket。

最初的Nginx的设置

如果您还没有安装Nginx,请更新您的软件包列表。

sudo apt update

然后安装Nginx包 

sudo apt install nginx

一旦Nginx被安装,验证您能够通过服务器的IP地址访问web服务器,而不需要端口号(比如http://203.0.113.0或http://example.com)。如果成功,您将看到Ubuntu默认的Nginx登录页面。

创建反向代理

我们将在/etc/nginx/sites中复制默认的站点配置,作为反向代理的起点。

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/gitbucket

使用nano打开新创建的配置文件。

sudo nano /etc/nginx/sites-available/gitbucket

在第43行找到现有的位置/块。

location / {  # First attempt to serve request as file, then  # as directory, then fall back to displaying a 404.  try_files $uri $uri/ =404;}

当前,Nginx将尝试返回位于/var/www/html中的文件,该文件匹配传入的HTTP请求。我们需要通过在这个块中配置一个反向代理来改变这种行为,这将把所有的HTTP请求发送到我们的Nginx服务器到GitBucket实例。更新位置/块以匹配以下内容。

location / {    proxy_pass              http://localhost:8080; # The address GitBucket is listening on    proxy_set_header        Host $host;    proxy_set_header        X-Real-IP $remote_addr;    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_connect_timeout   150;    proxy_send_timeout      100;    proxy_read_timeout      100;    proxy_buffers           4 32k;     client_max_body_size    512m; # Needed for large Git operations over HTTP    client_body_buffer_size 128k;}

如果您更改了GitBucket将侦听的端口号,请更新proxy_pass选项以反映这一点。

为了启用我们的新配置,您需要禁用/etc/nginx/sites启用的现有缺省配置,然后通过以下方式将我们的新配置与/etc/ nginx/sitase连接起来。

sudo rm /etc/nginx/sites-enabled/defaultsudo ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/gitbucket

启用配置文件后,检查是否存在语法错误。

sudo nginx -t

然后,重新启动Nginx服务器以启用我们的新站点配置。

sudo systemctl restart nginx

现在,您应该能够在服务器的公共地址上访问您的GitBucket安装,而不需要一个端口号。

从公共互联网上保护GitBucket进程。

目前,我们的GitBucket实例正在我们的服务器的公共网络接口上监听。这将允许用户通过连接到GitBucket当前正在监听的地址绕过Nginx代理,这可能是不需要的。我们需要修改前面创建的单元文件来解决这个问题。用nano打开单元文件。

sudo nano /etc/systemd/system/gitbucket.service

Append—主机127.0.0.1到ExecStart命令,就像这样。

...ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080 --host 127.0.0.1...

这将导致GitBucket只接受服务器本地网络接口上的连接。再次,保存(“CTRL+O”)文件,关闭(“CTRL+X”)编辑器,重新加载Systemd,重新启动我们的GitBucket单元。

sudo systemctl daemon-reloadsudo systemctl restart gitbucket

如果您使用的是Vultr的防火墙,那么您还应该删除在初始设置过程中添加的用于访问GitBucket服务器的任何端口规则。

This entry was posted in vultr性能测评 and tagged , , . Bookmark the permalink.

发表评论