12 Mayıs 2016 Perşembe

Go Git Services (Gogs) Kurulumu

Herkese merhaba,
Bu yazımda Gogs'un ne olduğundan ve nasıl yapılandırılıp kullanılabileceğinden bahsedeceğim.


Gogs'u Halil'in Github'da yıldızlaması ile gördüm. Ne iş yapıyormuş diye bakınca "vay be gavur da güzel proje yapmış" dedim ve projenin Go ile yazıldığını görünce aşırı sevindim. "Bu projeyi bir kurup deneyeyim, katkı versem çokii olur" diye düşündüm. Çünkü yaklaşık bir aydır boş kaldıkça Go'yu öğrenmeye vakit ayırıyorum ve bu da baya güzel denk geldi :)


Gogs özetle kendi git servisinizi kurmanızı, kullanmanızı, yönetmenizi sağlıyor. Belgelendirmesi de oldukça güzel yapılmış. Ben kaynak koddan hangi adımları uygulayarak kurduğumu anlatacağım.


İlk olarak servis vereceğimiz sunucunuza Go kurmalıyız. Ssh'a açık olacağı için bir kullanıcıyı yetkilendirmek gerekiyor. Bu yüzden yeni bir kullanıcı oluşturmalıyız.

#Kullanıcı oluşturup home dizinine geçelim.
$ sudo adduser --disabled-login --gecos 'Gogs' git
$ sudo su - git
$ cd ~

#Go'yu local diye bir dizin oluşturup yükleyelim.
$ mkdir local
$ wget https://storage.googleapis.com/golang/go$VERSION.$OS-$ARCH.tar.gz

# tar.gz uzantısını açalım.
$ tar -C /home/git/local -xzf go$VERSION.$OS-$ARCH.tar.gz

# Çevresel değişkenleri de ~/.bashrc altına ekleyelim.
$ sudo su - git
$ cd ~
$ echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
$ echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
$ echo 'export PATH=$PATH:$GOROOT/bin' >> $HOME/.bashrc
$ source $HOME/.bashrc

# Gogs'un kaynak kodunu kendi yerelimize çekelim ve derleyelim.
$ go get -u github.com/gogits/gogs (bağımlılıklar için)
$ cd $GOPATH/src/github.com/gogits/gogs
$ go build

# Şimdi "$ ./gogs web" dediğimizde çıktı aşağıdaki gibi olmalı: (varsayılan port 3000)

Bu çıktıda da dediği gibi ilk kez çalıştırdığımız için [w] uyarısını görmezden gelebiliriz.

Çıktıda bu uyarı dışında sorun yoksa şimdi app.ini dosyasını oluşturmalıyız. Bu kendi git servisimizin yapılandırmasını içeren dosya. (/custom/conf/app.ini

Benim yapılandırma dosyam şu şekilde:

APP_NAME = Gogs: Go Git Service
RUN_USER = git
RUN_MODE = prod

[database]
DB_TYPE  = mysql
HOST     = 127.0.0.1:3306
NAME     = gogs
USER     =root
PASSWD   =*********
SSL_MODE = disable
PATH     = data/gogs.db

[repository]
ROOT = /home/git/gogs-repositories

[server]
DOMAIN       =foo.bar.baz
HTTP_PORT    = 3000
ROOT_URL     = http://foo.bar.baz/
DISABLE_SSH  = false
SSH_PORT     = 22
OFFLINE_MODE = false

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL     = false
DISABLE_REGISTRATION   = false
ENABLE_CAPTCHA         = true
REQUIRE_SIGNIN_VIEW    = false

[picture]
DISABLE_GRAVATAR = false

[session]
PROVIDER = file

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /home/git/go/src/github.com/gogits/gogs/log

[security]
INSTALL_LOCK = true
SECRET_KEY   =*************

# Son olarak konsol dışında 80.porttan erişip Github gibi arayüzü kullanmak istiyorsak, Nginx ya da Apache yapılandırmasını yapmalıyız.

Nginx yapılandırması için git kullanıcısından exit diyerek çıkalım.

$ vim /etc/nginx/sites-available/gogs

server {
    listen 80;
    server_name foo.bar.baz;
    location / {
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    Host        $ http_host;
        proxy_pass              http://127.0.0.1:3000;
    }
}

Yeniden servisi çalıştıralım:

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


Şimdi tarayıcımıza "foo.bar.baz" dediğimizde bu sayfa ile karşılaşıyor olmalıyız.


Görüşmek üzere o/

2 yorum:


  1. Hey there! This post couldn't be written any better! Reading through this post reminds me of my good old room mate! He always kept talking about this. I will forward this article to him. Fairly certain he will have a good read. Thank you for sharing! gmail log in

    YanıtlaSil
    Yanıtlar
    1. thank you for your comment. You made me very happy :)

      Sil