Linux中國

如何在 Ubuntu 安裝 Go 語言編寫的 Git 伺服器 Gogs

Gogs 是由 Go 語言編寫的,自由開源的 Git 服務。Gogs 是一款無痛式自託管的 Git 伺服器,能在儘可能小的硬體資源開銷上搭建並運行您的私有 Git 伺服器。Gogs 的網頁界面和 GitHub 十分相近,且提供 MySQL、PostgreSQL 和 SQLite 資料庫支持。

在本教程中,我們將使用 Gogs 在 Ununtu 16.04 上按步驟指導您安裝和配置您的私有 Git 伺服器。這篇教程中涵蓋了如何在 Ubuntu 上安裝 Go 語言、PostgreSQL 和安裝並且配置 Nginx 網頁伺服器作為 Go 應用的反向代理的細節內容。

搭建環境

  • Ubuntu 16.04
  • Root 許可權

我們將會接觸到的事物

  1. 更新和升級系統
  2. 安裝和配置 PostgreSQL
  3. 安裝 Go 和 Git
  4. 安裝 Gogs
  5. 配置 Gogs
  6. 運行 Gogs 伺服器
  7. 安裝和配置 Nginx 反向代理
  8. 測試

步驟 1 - 更新和升級系統

繼續之前,更新 Ubuntu 所有的庫,升級所有包。

運行下面的 apt 命令:

sudo apt update
sudo apt upgrade

步驟 2 - 安裝和配置 PostgreSQL

Gogs 提供 MySQL、PostgreSQL、SQLite 和 TiDB 資料庫系統支持。

此步驟中,我們將使用 PostgreSQL 作為 Gogs 程序的資料庫。

使用下面的 apt 命令安裝 PostgreSQL。

sudo apt install -y postgresql postgresql-client libpq-dev

安裝完成之後,啟動 PostgreSQL 服務並設置為開機啟動。

systemctl start postgresql
systemctl enable postgresql

此時 PostgreSQL 資料庫在 Ubuntu 系統上完成安裝了。

之後,我們需要為 Gogs 創建資料庫和用戶。

使用 postgres 用戶登錄並運行 psql 命令以訪問 PostgreSQL 操作界面。

su - postgres
psql

創建一個名為 git 的新用戶,給予此用戶 CREATEDB 許可權。

CREATE USER git CREATEDB;
password git

創建名為 gogs_production 的資料庫,設置 git 用戶作為其所有者。

CREATE DATABASE gogs_production OWNER git;

創建 Gogs 資料庫

用於 Gogs 的 gogs_production PostgreSQL 資料庫和 git 用戶已經創建完畢。

步驟 3 - 安裝 Go 和 Git

使用下面的 apt 命令從庫中安裝 Git。

sudo apt install git

此時,為系統創建名為 git 的新用戶。

sudo adduser --disabled-login --gecos 'Gogs' git

登錄 git 賬戶並且創建名為 local 的目錄。

su - git
mkdir -p /home/git/local

切換到 local 目錄,依照下方所展示的內容,使用 wget 命令下載 Go(最新版)。

cd ~/local
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz

安裝 Go 和 Git

解壓並且刪除 go 的壓縮文件。

tar -xf go1.9.2.linux-amd64.tar.gz
rm -f go1.9.2.linux-amd64.tar.gz

Go 二進位文件已經被下載到 ~/local/go 目錄。此時我們需要設置環境變數 - 設置 GOROOTGOPATH 目錄到系統環境,這樣,我們就可以在 git 用戶下執行 go 命令。

執行下方的命令。

cd ~/
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc

之後通過運行 source ~/.bashrc 重載 Bash,如下:

source ~/.bashrc

確定您使用的 Bash 是默認的 shell。

安裝 Go 編程語言

現在運行 go 的版本查看命令。

go version

之後確保您得到下圖所示的結果。

檢查 go 版本

現在,Go 已經安裝在系統的 git 用戶下了。

步驟 4 - 使用 Gogs 安裝 Git 服務

使用 git 用戶登錄並且使用 go 命令從 GitHub 下載 Gogs。

su - git
go get -u github.com/gogits/gogs

此命令將在 GOPATH/src 目錄下載 Gogs 的所有源代碼。

切換至 $GOPATH/src/github.com/gogits/gogs 目錄,並且使用下列命令搭建 Gogs。

cd $GOPATH/src/github.com/gogits/gogs
go build

確保您沒有遇到錯誤。

現在使用下面的命令運行 Gogs Go Git 伺服器。

./gogs web

此命令將會默認運行 Gogs 在 3000 埠上。

安裝 Gogs Go Git 服務

打開網頁瀏覽器,鍵入您的 IP 地址和埠號,我的是 http://192.168.33.10:3000/

您應該會得到與下方一致的反饋。

Gogs 網頁伺服器

Gogs 已經在您的 Ubuntu 系統上安裝完畢。現在返回到您的終端,並且鍵入 Ctrl + C 中止服務。

步驟 5 - 配置 Gogs Go Git 伺服器

本步驟中,我們將為 Gogs 創建慣例配置。

進入 Gogs 安裝目錄並新建 custom/conf 目錄。

cd $GOPATH/src/github.com/gogits/gogs
mkdir -p custom/conf/

複製默認的配置文件到 custom 目錄,並使用 vim 修改。

cp conf/app.ini custom/conf/app.ini
vim custom/conf/app.ini

[server] 小節中,修改 HOST_ADDR127.0.0.1

[server]
 PROTOCOL = http
 DOMAIN = localhost
 ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
 HTTP_ADDR = 127.0.0.1
 HTTP_PORT = 3000

[database] 選項中,按照您的資料庫信息修改。

[database]
 DB_TYPE = postgres
 HOST = 127.0.0.1:5432
 NAME = gogs_production
 USER = git
 PASSWD = aqwe123@#

保存並退出。

運行下面的命令驗證配置項。

./gogs web

並且確保您得到如下的結果。

配置伺服器

Gogs 現在已經按照自定義配置下運行在 localhost 的 3000 埠上了。

步驟 6 - 運行 Gogs 伺服器

這一步,我們將在 Ubuntu 系統上配置 Gogs 伺服器。我們會在 /etc/systemd/system 目錄下創建一個新的伺服器配置文件 gogs.service

切換到 /etc/systemd/system 目錄,使用 vim 創建伺服器配置文件 gogs.service

cd /etc/systemd/system
vim gogs.service

粘貼下面的代碼到 Gogs 伺服器配置文件中。

[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/go/src/github.com/gogits/gogs
ExecStart=/home/git/go/src/github.com/gogits/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git

[Install]
WantedBy=multi-user.target

之後保存並且退出。

現在可以重載系統伺服器。

systemctl daemon-reload

使用下面的命令開啟 Gogs 伺服器並設置為開機啟動。

systemctl start gogs
systemctl enable gogs

運行 Gogs 伺服器

Gogs 伺服器現在已經運行在 Ubuntu 系統上了。

使用下面的命令檢測:

netstat -plntu
systemctl status gogs

您應該會得到下圖所示的結果。

Gogs is listening on the network interface

步驟 7 - 為 Gogs 安裝和配置 Nginx 反向代理

在本步中,我們將為 Gogs 安裝和配置 Nginx 反向代理。我們會在自己的庫中調用 Nginx 包。

使用下面的命令添加 Nginx 庫。

sudo add-apt-repository -y ppa:nginx/stable

此時更新所有的庫並且使用下面的命令安裝 Nginx。

sudo apt update
sudo apt install nginx -y

之後,進入 /etc/nginx/sites-available 目錄並且創建虛擬主機文件 gogs

cd /etc/nginx/sites-available
vim gogs

粘貼下面的代碼到配置文件。

server {
     listen 80;
     server_name git.hakase-labs.co;

     location / {
         proxy_pass http://localhost:3000;
     }
 }

保存退出。

注意: 請使用您的域名修改 server_name 項。

現在激活虛擬主機並且測試 nginx 配置。

ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/
nginx -t

確保沒有遇到錯誤,重啟 Nginx 伺服器。

systemctl restart nginx

安裝和配置 Nginx 反向代理

步驟 8 - 測試

打開您的網頁瀏覽器並且輸入您的 Gogs URL,我的是 http://git.hakase-labs.co

現在您將進入安裝界面。在頁面的頂部,輸入您所有的 PostgreSQL 資料庫信息。

Gogs 安裝

之後,滾動到底部,點擊 「Admin account settings」 下拉選項。

輸入您的管理者用戶名和郵箱。

鍵入 gogs 安裝設置

之後點擊 「Install Gogs」 按鈕。

然後您將會被重定向到下圖顯示的 Gogs 用戶面板。

Gogs 面板

下面是 Gogs 的 「Admin Dashboard(管理員面板)」。

瀏覽 Gogs 面板

現在,Gogs 已經通過 PostgreSQL 資料庫和 Nginx 網頁伺服器在您的 Ubuntu 16.04 上完成安裝。

via: https://www.howtoforge.com/tutorial/how-to-install-gogs-go-git-service-on-ubuntu-1604/

作者:Muhammad Arul 譯者:CYLeft 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國