歡迎光臨
每天分享高質量文章

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

Gogs 的網頁介面和 GitHub 十分相近,且提供 MySQL、PostgreSQL 和 SQLite 資料庫支援。
— Muhammad Arul


致謝
編譯自 | https://www.howtoforge.com/tutorial/how-to-install-gogs-go-git-service-on-ubuntu-1604/ 
 作者 | Muhammad Arul
 譯者 | ChenYi (cyleft) ? ? ? 共計翻譯:21 篇 貢獻時間:57 天

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 許可權

我們將會接觸到的事物

☉ 更新和升級系統
☉ 安裝和配置 PostgreSQL
☉ 安裝 Go 和 Git
☉ 安裝 Gogs
☉ 配置 Gogs
☉ 執行 Gogs 伺服器
☉ 安裝和配置 Nginx 反向代理
☉ 測試

步驟 1 – 更新和升級系統

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

執行下麵的 apt 命令:

  1. sudo apt update

  2. sudo apt upgrade

步驟 2 – 安裝和配置 PostgreSQL

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

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

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

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

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

  1. systemctl start postgresql

  2. systemctl enable postgresql

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

之後,我們需要為 Gogs 建立資料庫和使用者。

使用 postgres 使用者登入並執行 psql 命令以訪問 PostgreSQL 操作介面。

  1. su - postgres

  2. psql

建立一個名為 git 的新使用者,給予此使用者 CREATEDB 許可權。

  1. CREATE USER git CREATEDB;

  2. \password git

建立名為 gogs_production 的資料庫,設定 git 使用者作為其所有者。

  1. CREATE DATABASE gogs_production OWNER git;

建立 Gogs 資料庫

用於 Gogs 的 gogs_production PostgreSQL 資料庫和 git 使用者已經建立完畢。

步驟 3 – 安裝 Go 和 Git

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

  1. sudo apt install git

此時,為系統建立名為 git 的新使用者。

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

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

  1. su - git

  2. mkdir -p /home/git/local

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

  1. cd ~/local

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

安裝 Go 和 Git

解壓並且刪除 go 的壓縮檔案。

  1. tar -xf go1.9.2.linux-amd64.tar.gz

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

Go 二進位制檔案已經被下載到 ~/local/go 目錄。此時我們需要設定環境變數 – 設定 GOROOT 和 GOPATH 目錄到系統環境,這樣,我們就可以在 git 使用者下執行 go 命令。

執行下方的命令。

  1. cd ~/

  2. echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc

  3. echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc

  4. echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc

之後透過執行 source ~/.bashrc 多載 Bash,如下:

  1. source ~/.bashrc

確定您使用的 Bash 是預設的 shell。

安裝 Go 程式語言

現在執行 go 的版本檢視命令。

  1. go version

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

檢查 go 版本

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

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

使用 git 使用者登入並且使用 go 命令從 GitHub 下載 Gogs。

  1. su - git

  2. go get -u github.com/gogits/gogs

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

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

  1. cd $GOPATH/src/github.com/gogits/gogs

  2. go build

確保您沒有遇到錯誤。

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

  1. ./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 目錄。

  1. cd $GOPATH/src/github.com/gogits/gogs

  2. mkdir -p custom/conf/

複製預設的配置檔案到 custom 目錄,並使用 vim[2] 修改。

  1. cp conf/app.ini custom/conf/app.ini

  2. vim custom/conf/app.ini

在 [server] 小節中,修改 HOST_ADDR 為 127.0.0.1

  1. [server]

  2. PROTOCOL = http

  3. DOMAIN = localhost

  4. ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/

  5. HTTP_ADDR = 127.0.0.1

  6. HTTP_PORT = 3000

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

  1. [database]

  2. DB_TYPE = postgres

  3. HOST = 127.0.0.1:5432

  4. NAME = gogs_production

  5. USER = git

  6. PASSWD = aqwe123@#

儲存並退出。

執行下麵的命令驗證配置項。

  1. ./gogs web

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

配置伺服器

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

步驟 6 – 執行 Gogs 伺服器

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

切換到 /etc/systemd/system 目錄,使用 vim[2] 建立伺服器配置檔案 gogs.service

  1. cd /etc/systemd/system

  2. vim gogs.service

貼上下麵的程式碼到 Gogs 伺服器配置檔案中。

  1. [Unit]

  2. Description=Gogs

  3. After=syslog.target

  4. After=network.target

  5. After=mariadb.service mysqld.service postgresql.service memcached.service redis.service

  6. [Service]

  7. # Modify these two values and uncomment them if you have

  8. # repos with lots of files and get an HTTP error 500 because

  9. # of that

  10. ###

  11. #LimitMEMLOCK=infinity

  12. #LimitNOFILE=65535

  13. Type=simple

  14. User=git

  15. Group=git

  16. WorkingDirectory=/home/git/go/src/github.com/gogits/gogs

  17. ExecStart=/home/git/go/src/github.com/gogits/gogs/gogs web

  18. Restart=always

  19. Environment=USER=git HOME=/home/git

  20. [Install]

  21. WantedBy=multi-user.target

之後儲存並且退出。

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

  1. systemctl daemon-reload

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

  1. systemctl start gogs

  2. systemctl enable gogs

執行 Gogs 伺服器

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

使用下麵的命令檢測:

  1. netstat -plntu

  2. systemctl status gogs

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

Gogs is listening on the network interface

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

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

使用下麵的命令新增 Nginx 庫。

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

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

  1. sudo apt update

  2. sudo apt install nginx -y

之後,進入 /etc/nginx/sites-available 目錄並且建立虛擬主機檔案 gogs

  1. cd /etc/nginx/sites-available

  2. vim gogs

貼上下麵的程式碼到配置檔案。

  1. server {

  2.     listen 80;

  3.     server_name git.hakase-labs.co;

  4.     location / {

  5.         proxy_pass http://localhost:3000;

  6.     }

  7. }

儲存退出。

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

現在啟用虛擬主機並且測試 nginx 配置。

  1. ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/

  2. nginx -t

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

  1. 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[5] 譯者:CYLeft 校對:wxy

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

贊(0)

分享創造快樂

© 2024 知識星球   網站地圖