安裝Gogs之前先安裝好mysql,nginx
創(chuàng)建git用戶(hù)
gogs默認(rèn)以git用戶(hù)運(yùn)行
新建git用戶(hù)
adduser git
以git用戶(hù)登錄
su git
cd 到git用戶(hù)主目錄 /home/git 新建.ssh文件夾 權(quán)限設(shè)置為0755
安裝Go語(yǔ)言運(yùn)行環(huán)境
Gogs由Go語(yǔ)言編寫(xiě)坦仍,運(yùn)行時(shí)需要安裝Golang運(yùn)行環(huán)境
如果系統(tǒng)中其他程序并不需要運(yùn)行Go語(yǔ)言程序研铆,可以只為上文創(chuàng)建的git用戶(hù)配置運(yùn)行環(huán)境枕荞,也可以選擇配置全系統(tǒng)所有用戶(hù)的Go語(yǔ)言運(yùn)行環(huán)境
- 配置環(huán)境變量,切換到用戶(hù)git檩小,并只為該用戶(hù)配置Go運(yùn)行環(huán)境
su git
cd ~
- 寫(xiě)入環(huán)境變量
export GOROOT=$HOME/go
export GOARCH=386 #系統(tǒng)位數(shù)溃睹,386表示32位系統(tǒng)蒿偎,amd64表示64位系統(tǒng)。
export GOOS=linux #系統(tǒng)類(lèi)型
export PATH=$PATH:$GOROOT/bin
- 使環(huán)境變量生效
source ~/.bashrc
安裝Go
- Go語(yǔ)言官網(wǎng) 可以獲取最新的二進(jìn)制安裝包
wget https://storage.googleapis.com/golang/go1.5.2.linux-386.tar.gz
tar xzvf go1.5.2.linux-386.tar.gz
mv go $GOROOT
Go語(yǔ)言運(yùn)行環(huán)境就安裝完成了
- 測(cè)試Golang是否安裝成功
go env
安裝 Gogs
- 下載預(yù)編譯的二進(jìn)制安裝包
安裝包各版本地址:https://gogs.io/docs/installation/install_from_binary
su git
cd ~
wget -c http://7d9nal.com2.z0.glb.qiniucdn.com/gogs_v0.8.10_linux_386.tar.gz
tar zxf gogs_v0.8.10_linux_386.tar.gz
- 建立數(shù)據(jù)庫(kù)
/home/git/gogs/scripts/mysql.sql是數(shù)據(jù)庫(kù)初始化文件
提示:數(shù)據(jù)庫(kù)必須支持InnoDB引擎
cd gogs
mysql -u root -p < scripts/mysql.sql #(需輸入密碼)即可初始化好數(shù)據(jù)庫(kù)
- 登錄 MySQL 創(chuàng)建一個(gè)新用戶(hù) gogs的烁,并將數(shù)據(jù)庫(kù) gogs 的所有權(quán)限都賦予該用戶(hù)
mysql -u root -p
create user 'gogs'@'localhost' identified by '密碼';
grant all privileges on gogs.* to 'gogs'@'localhost';
flush privileges;
exit;
- 編輯 gogs/scripts/supervisor/gogs 修改如下
directory=/home/git/gogs/
command=/home/git/gogs/gogs web
大家修改時(shí)根據(jù)實(shí)際路徑
nginx 反向代理
- http
server {
server_name 域名或IP;
listen 80;
location / { # 如果你希望通過(guò)子路徑訪問(wèn),此處修改為子路徑诈闺,注意以 / 開(kāi)頭并以 / 結(jié)束
proxy_pass http://127.0.0.1:3000/;
}
}
- https
server {
listen 443 ssl;
server_name 域名或IP;
ssl_certificate /path/to/gogs.io.unified.crt;
ssl_certificate_key /path/to/gogs.io-decrypted.key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:3000 $request_uri;
}
}
運(yùn)行g(shù)ogs
- 手動(dòng)開(kāi)啟gogs
su git
cd ~/gogs
./gogs web
守護(hù)進(jìn)程開(kāi)啟
nohup ./gogs web &
加入服務(wù)運(yùn)行
將 /home/git/gogs/scripts/init/centos/gogs復(fù)制到/etc/init.d中
root用戶(hù)下 service gogs stop|start|restart|reload|status
Gogs開(kāi)啟后就可以使用 http://ip:3000 訪問(wèn) 或者使用上面nginx配置的ip或域名訪問(wèn)
如需要通過(guò)3000端口訪問(wèn)請(qǐng)注意在防火墻中開(kāi)啟端口
配置說(shuō)明
配置文件位于 Gogs 目錄的 custom/conf/app.ini渴庆,是 INI 格式的文本文件。
詳細(xì)的配置解釋和默認(rèn)值請(qǐng)參考官方文檔雅镊,其中關(guān)鍵的配置大概是下面這些襟雷。
RUN_USER 默認(rèn)是 git,指定 Gogs 以哪個(gè)用戶(hù)運(yùn)行
ROOT 所有倉(cāng)庫(kù)的存儲(chǔ)根路徑
PROTOCOL 如果你使用 nginx 反代的話請(qǐng)使用 http仁烹,如果直接裸跑對(duì)外服務(wù)的話隨意
DOMAIN 域名耸弄。會(huì)影響 SSH clone 地址
ROOT_URL 完整的根路徑,會(huì)影響訪問(wèn)時(shí)頁(yè)面上鏈接的指向卓缰,以及 HTTP clone 的地址
HTTP_ADDR 監(jiān)聽(tīng)地址计呈,使用 nginx 的話建議 127.0.0.1,否則 0.0.0.0 也可以
HTTP_PORT 監(jiān)聽(tīng)端口征唬,默認(rèn) 3000
INSTALL_LOCK 鎖定安裝頁(yè)面
Mailer 相關(guān)的選項(xiàng)
設(shè)置倉(cāng)庫(kù)和站點(diǎn)目錄同步
- 切換到git用戶(hù)
su git
cd /www
mkdir git-repo
cd git-repo
git clone /home/git/gogs-repositories/user/demo.git
- 編輯 /home/git/gogs-repositories/user/demo.git/hooks/post-receive
!/bin/sh
export LANG=zh_CN.UTF-8
cd /www/git-repo/demo
unset GIT_DIR //重要是這里..
git pull origin master
chmod +x post-receive
其他
為git用戶(hù)設(shè)置密碼
passwd git生成SSH密鑰
設(shè)置全局的name和email
git config --global user.name "xxx"
git config --global user.email "xxx"
或在倉(cāng)庫(kù)目錄下設(shè)置該倉(cāng)庫(kù)的name和email
git config user.name x1
git config user.email x1@xx.com
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
注意
- 如果本地 push到遠(yuǎn)程時(shí)提示沒(méi)有權(quán)限
- 可能是 gogs/data 和 gogs/data/sessions 目錄為root權(quán)限 導(dǎo)致用戶(hù)新建的倉(cāng)庫(kù)的權(quán)限也為root
參考文章
https://mynook.info/blog/post/host-your-own-git-server-using-gogs
http://www.tuicool.com/articles/bYBnu2V https://gogs.io/docs/installation/install_from_binary
本文在寫(xiě)作的過(guò)程可能參考或部分照搬或全部照搬互聯(lián)網(wǎng)上的文章內(nèi)容捌显,然后進(jìn)行整理歸納或僅僅只是重新排版。
互聯(lián)網(wǎng)上因相似文章較多無(wú)法確定原作者总寒,如果本文有幸被原作者看到扶歪,請(qǐng)告知本人,以便注明出處偿乖。