快速搭建輕量級git服務Gogs

leooolin發表於2018-02-28

準備

  • centos7 64位
  • nginx
  • git
  • mysql/PostgreSQL/MSSQL(非必須)

開始

效果預覽:gitfan.club

建立並切換git使用者

adduser git
passwd git # 輸入密碼
su git
複製程式碼

下載Gogs二級制包

訪問官網下載最新編譯好的二進位制包,個人覺得這是最省事最方便的方法。

wget http://7d9nal.com2.z0.glb.qiniucdn.com/0.11.34/linux_amd64.tar.gz
tar zxvf linux_amd64.tar.gz
cd gogs
./gogs web -port 10086 # 啟動應用,指定埠,也可以不指定用預設80
複製程式碼

初始化配置

瀏覽器訪問上一步啟動的地址:http://localhost:10086/

快速搭建輕量級git服務Gogs

說明

  1. 資料庫我選擇應用自帶的輕量級資料庫SQLite3,可根據實際情況選擇
  2. 如果有部署上線打算,可以把localhost部分修改成你的域名
  3. 郵件服務我選用了gmail的smtp傳送服務,有條件的可以使用自己搭建郵件伺服器
  4. 如果你點了【立即安裝】想修改配置,可以修改使用者配置檔案./custom/conf/app.ini後重啟應用

後臺程式

nohup ./gogs web >> /your/path/to/save/nohup.out 2>&1 &
複製程式碼

這時,你已經基本搭建好Gogs,如果區域網內使用可以到此為止,但如果需要部署上線,請繼續往下看。

部署外網

假設你已經配置好DNS解析。

繫結域名

執行命令vi ./custom/conf/app.ini,找到[server]內容:

[server]
DOMAIN           = gitfan.club
HTTP_PORT        = 10086
ROOT_URL         = http://gitfan.club/
DISABLE_SSH      = false
SSH_PORT         = 22
START_SSH_SERVER = true
OFFLINE_MODE     = false
複製程式碼

nginx配置

/etc/nginx/conf.d/增加gitfan.conf檔案,配置以下內容:

server {
    server_name gitfan.club;
    listen 80;

    client_max_body_size 5G; # 突破上傳大檔案限制

    location / {
        proxy_pass http://localhost:10086;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
    }
}
複製程式碼

然後啟動nginx:

systemctl start nginx.service
複製程式碼

這時候已經可以訪問了。

部署升級版

支援https

眾所周知,網站支援https是大勢所趨,現在我們要把站點升級到https。我採用的是免費的DV證書服務Let's Encrypt,有效期是3個月,過期後需要續簽。

獲取證書

git clone https://github.com/certbot/certbot.git
cd certbot
chmod +x letsencrypt-auto
./letsencrypt-auto certonly --webroot -w /home/git/gogs/public -d gitfan.club
複製程式碼

此時,生成的證書存放在/etc/letsencrypt/live/gitfan.club/裡,然後配置nginx監聽443埠。

# /etc/nginx/conf.d/gitfan.conf
server {
    server_name gitfan.club;
    listen 443;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/gitfan.club/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/gitfan.club/privkey.pem;

    client_max_body_size 5G;

    location / {
        proxy_pass http://localhost:10086;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
    }
}
複製程式碼

假如需要把www.gitfan.clubgitfan.club都強制跳轉https,需要在gitfan.conf檔案增加配置:

server {
    listen      80;
    server_name gitfan.club www.gitfan.club;
    return      301         https://gitfan.club$request_uri;
}
複製程式碼

設定防火牆

可能你還需要設定防火牆來增加伺服器安全性,centos自帶的firewall-cmd支援設定開放埠:

systemctl start firewalld.service
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
firewall-cmd --list-ports # 檢視埠是否設定成功
複製程式碼

其他問題

  1. 如果我想修改頁面模板怎麼辦?

    答:參考這裡,在custom/templates/inject/增加模板檔案。

  2. 如果我想停止Gogs服務怎麼辦?

    答:ps -ef|grep gogs找到程式ID,然後kill -9 程式ID

相關文章