本文介绍用于运行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反向dl
虽然可以通过端口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登录页面。
创建反向dl
我们将在/etc/nginx/sites中复制默认的站点配置,作为反向dl的起点。
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 dl,这可能是不需要的。我们需要修改前面创建的单元文件来解决这个问题。用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服务器的任何端口规则。
Vultr 新用户直送 50-100 美元活动再次开启,社交 转发再领 3 美元
未经允许不得转载:Vultr中文网 » Vultr VPS安装GitBucket教程(基于Ubuntu 16.04系统)