準備
- 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/
說明
- 資料庫我選擇應用自帶的輕量級資料庫SQLite3,可根據實際情況選擇
- 如果有部署上線打算,可以把localhost部分修改成你的域名
- 郵件服務我選用了gmail的smtp傳送服務,有條件的可以使用自己搭建郵件伺服器
- 如果你點了【立即安裝】想修改配置,可以修改使用者配置檔案
./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.club
和gitfan.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 # 檢視埠是否設定成功
複製程式碼
其他問題
-
如果我想修改頁面模板怎麼辦?
答:參考這裡,在
custom/templates/inject/
增加模板檔案。 -
如果我想停止Gogs服務怎麼辦?
答:
ps -ef|grep gogs
找到程式ID,然後kill -9 程式ID
。