如何在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

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

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 機器變磚。閱讀這篇文章以了解更多信息