作者 | 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 應用的反向代理的細節內容。
搭建環境
我們將會接觸到的事物
步驟 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
目錄。此時我們需要設定環境變數 – 設定 GOROOT
和 GOPATH
目錄到系統環境,這樣,我們就可以在 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[2] 修改。
cp conf/app.ini custom/conf/app.ini
vim custom/conf/app.ini
在 [server]
小節中,修改 HOST_ADDR
為 127.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[2] 建立伺服器配置檔案 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[5] 譯者:CYLeft 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出