如何在Ubuntu 16.04上安装GitBucket

本指南涵盖了运行Ubuntu 16.04的Vultr实例的GitBucket的基本安装和设置,并假定您以non-root用户身份执行命令。

先决条件

  • 具有至少 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

由于我们创建了系统用户,因此默认外壳程序为/bin/false,除非我们在运行时提供其他外壳程序参数,否则我们将被踢回到当前的外壳程序su。登录到新创建的用户。

sudo su - gitbucket -s /bin/bash

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

下载/更新GitBucket

导航至GitBucket发行页面,然后找到最新的可用版本。复制gitbucket.war程序包的URL ,确认您位于新用户的主目录中,然后使用进行下载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在port上侦听8080

这将在服务器的公共网络接口上启动GitBucket,并在指定端口上侦听。稍后,您应该看到以下消息。

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

如果您使用Vultr的防火墙,则需要打开GitBucket正在监听的端口,因为Vultr的防火墙是白名单,除非另有说明,否则拒绝流量以允许端口。

您的GitBucket安装现在应该是联机的,并且可以从Internet访问。使用网络浏览器,连接到服务器的公共地址(确保指定运行GitBucket的端口(即http://203.0.113.0:8080http://example.com:8080),然后您将进入GitBucket的主页。

但是,需要更改默认管理员帐户的密码。为此,请通过Sign inWeb界面右上方的按钮登录到管理员帐户。管理员帐户的默认登录root名是用户名,然后root是密码。登录后,该按钮将替换为配置文件图标和下拉菜单。展开下拉菜单并选择Account Settings,然后在帐户设置向导中设置一个更安全的新密码。

更新默认管理员帐户的凭据并验证GitBucket是否以这种最小配置启动后,请使用“ CTRL+C” 终止Java进程,并使用来关闭当前shell exit

创建系统服务

当前,我们只能通过通过SSH访问我们的服务器并从Shell手动启动该进程来运行GitBucket。幸运的是,Ubuntu预包装了Systemd,使我们能够创建一项服务,该服务将由系统自动启动并维护GitBucket。

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

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

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

[Unit]
Description=GitBucket
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080
ExecStop=/bin/kill -SIGINT $MAINPID
Type=simple
User=gitbucket
[Install]
WantedBy=multi-user.target

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

如果更改了端口号,GitBucket将会监听,请更改命令的--port参数ExecStart

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

sudo systemctl daemon-reload

重新加载Systemd之后,请验证是否已发现并加载了新单元。

sudo systemctl status gitbucket

您应该看到以下输出。

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

最后,启用新单元,使其在服务器启动时自动启动,然后首次启动该服务。

sudo systemctl enable gitbucket
sudo systemctl start gitbucket

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

配置Nginx反向代理

尽管可以通过port直接公开GitBucket 8080,但是您可以通过Nginx公开GitBucket来提高性能并配置HTTP / 2,TLS加密和缓存规则等功能。

初始Nginx设置

如果尚未安装Nginx,请更新您的软件包列表。

sudo apt update

然后安装Nginx软件包。

sudo apt install nginx

一旦安装了Nginx,请确认您能够通过服务器的IP地址访问Web服务器,而无需端口号(即http://203.0.113.0http://example.com)。如果成功,您将看到Ubuntu的默认Nginx登录页面。

创建反向代理

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

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

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

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

location /在第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请求匹配的文件。我们需要通过在此块中配置反向代理来更改此行为,该代理将把对Nginx服务器发出的所有HTTP请求发送到GitBucket实例。更新location /块以匹配以下内容。

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-enabled,然后/etc/nginx/sites-enabled通过以下操作将我们的新配置符号链接到。

sudo rm /etc/nginx/sites-enabled/default
sudo 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

像这样附加--host 127.0.0.1ExecStart命令。

...
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-reload
sudo systemctl restart gitbucket

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



Leave a Comment

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。