Aunque lo neguemos, no siempre las mejores cosas son gratis en este mundo, y eso pasa a ratos en el opensource. Git de unos años para acá se ha vuelto muy popular en el ámbito de desarrollo y a su vez GitHub concentrando alrededor del mundo a los desarrolladores. Ahora, en algún momento puede que quieras tener tu propio servidor Git y allí llegamos al problema, GitHub no tiene versión para descargar e instalar en nuestra LAN (se pueden tener proyectos privados, pero debes pagar).
Menos mal estamos hablando de software opensource, donde todos los días nace una solución nueva llegando a nuestro tema del articulo de hoy, como instalar y configurar Gogs en un servidor Linux Ubuntu.
Gogs (Go Git Service) es una interfaz web para manejar repositorios Git algo mas fácil sin tener que conocer intricados comandos y con muchas facilidades.
Ya con esta breve introduccion veamos este articulo de Ubuntu en español.
Requerimientos
-Nuestro servidor para este articulo estara en la ip 192.168.1.163
-Instalamos dependencias y colocamos contraseña a la cuenta root de mariadb cuando lo pida
sudo apt-get install mariadb-server mercurial git supervisor
-Creamos la db para gogs
mysql -u root -p
CREATE DATABASE gogsdb CHARACTER SET utf8;
exit;
-Agregamos al final de nuestro archivo .bashrc
vi ~/.bashrc
export GOPATH=/home/git/go
export GOROOT=/usr/local/src/go
export PATH=${PATH}:$GOROOT/bin
-Activamos las variables
source ~/.bashrc
-Descargamos desde
este URL la ultima versión para Linux del lenguaje Go
wget -c https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz
-Descomprimimos el archivo
tar xzvf go1.6.2.linux-amd64.tar.gz
-Lo movemos al home de git
sudo mv go $GOROOT
-Descargamos por medio de go el ultimo gogs disponible
go get -d github.com/gogits/gogs
-Compilamos con go
cd $GOPATH/src/github.com/gogits/gogs
go build
-Creamos un directorio para logs
sudo mkdir -p /var/log/gogs
-Creamos un conf para supervisor, el encargado de ejecutar el servicio
sudo vi /etc/supervisor/supervisord.conf
[program:gogs]
directory=/home/git/go/src/github.com/gogits/gogs/
command=/home/git/go/src/github.com/gogits/gogs/gogs web
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/gogs/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/gogs/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment = HOME="/home/git", USER="git"
user = git
-Reiniciamos el servicio
sudo service supervisor restart (Linux Ubuntu server 14.04)
sudo systemctl restart supervisor (Linux Ubuntu server 16.04)
-Verificamos este ejecutandose gogs
ps -ef | grep gogs
git 26831 26830 2 16:27 ? 00:00:00 /home/git/go/src/github.com/gogits/gogs/gogs web
-Miramos algo mas de su ejecucion
tail /var/log/gogs/stdout.log
2016/04/29 16:27:24 [W] Custom config '/home/git/go/src/github.com/gogits/gogs/custom/conf/app.ini' not found, ignore this if you're running first time
2016/04/29 16:27:24 [T] Custom path: /home/git/go/src/github.com/gogits/gogs/custom
2016/04/29 16:27:24 [T] Log path: /home/git/go/src/github.com/gogits/gogs/log
2016/04/29 16:27:24 [I] Gogs: Go Git Service 0.9.22.0425
2016/04/29 16:27:24 [I] Log Mode: Console(Trace)
2016/04/29 16:27:24 [I] Cache Service Enabled
2016/04/29 16:27:24 [I] Session Service Enabled
2016/04/29 16:27:24 [I] Run Mode: Development
2016/04/29 16:27:25 [I] Listen: http://0.0.0.0:3000
-Activamos permisos, creamos un directorio de logs dentro del home de los repositorios
sudo chown -R git.git /home/git/
sudo mkdir /usr/local/git/log
sudo chown git.git /usr/local/git/log
-Abrimos un browser y navegamos a http://192.168.1.163:3000/install ingresando los campos Database Type (MySQL), Host (127.0.0.1:3306), User (root) Password (contraseña del root de MySQL), Database Name (gogsdb), Application Name (Nombre de nuestro Gogs), Repository Root Path (path de donde almacenaremos los repo, en este caso /usr/local/git), Run User (git)
-
Domain (ip del servidor),
SSH Port (22),
HTTP Port (3000),
Application URL (http://192.168.1.163:3000),
Log Path (/usr/local/git/log)
-Activamos opciones de
Server and Other Services Settings y creamos una cuenta con privilegios de admin (no puede llamarse admin) en
Admin Account Settings y damos click al botón
Install Gogs
-Si seguiste los pasos, ya debes tener Gogs funcionando correctamente y nos debe mostrar la consola web
-Podemos personalizar nuestro perfil dándole click al botón gravatar de la derecha superior y entrando a
Profile
-Como somos administradores podemos llegar al panel de configuracion y ver mas opciones de mantenimiento de nuestro Gogs
-Entre las tareas ya disponibles tenemos la de crear usuarios en el menu Users
-Ahora, para crear un repositorio vamos al URL http://192.168.1.163/repo/create y llenamos los campos. Terminamos dándole click al botón
Create Repository
-La otra forma es darle click al símbolo
+ superior derecho y allí veremos la opción. Así luce nuestro nuevo repositorio en Gogs
-Ya te había comentado que puedes poner en Español la interfaz web de Gogs? Bien, damos click al botón inferior con forma de planeta y allí veremos los idiomas
Trabajando localmente un repositorio
-Para descargar o clonar un repositorio ejecutamos
drivemeca@cabrera-VAIO:~$
git clone http://192.168.1.163:3000/admgogs/Repositorio_de_prueba.git
Clonar en «Repositorio_de_prueba»...
Username for 'http://192.168.1.163:3000':
admgogs
Password for 'http://admgogs@192.168.1.163:3000':
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
Checking connectivity... hecho.
-Ya tenemos una copia del repositorio en nuestro pc local
ls -la Repositorio_de_prueba/
total 56
drwxrwxr-x 3 drivemeca drivemeca 4096 may 2 17:24 .
drwxr-xr-x 50 drivemeca drivemeca 4096 may 2 17:23 ..
drwxrwxr-x 8 drivemeca drivemeca 4096 may 2 17:24 .git
-rw-rw-r-- 1 drivemeca drivemeca 1552 may 2 17:24 .gitignore
-rw-rw-r-- 1 drivemeca drivemeca 34570 may 2 17:24 LICENSE
-rw-rw-r-- 1 drivemeca drivemeca 66 may 2 17:24 README.md
-Si modificamos el código en nuestra copia local, por ejemplo, cambiamos el README.md
cd Repositorio_de_prueba/
echo 'Me encanta Gogs, una forma amigable de manejar Git' >> README.md
-Publicamos los cambios al servidor Git con Gogs
git add --all && git commit -m "init commit" && git push origin master
[master 5c53be9] init commit
1 file changed, 1 insertion(+), 1 deletion(-)
Username for 'http://192.168.1.163:3000': admgogs
Password for 'http://admgogs@192.168.1.163:3000':
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 350 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To http://192.168.1.163:3000/admgogs/Repositorio_de_prueba.git
e47361f..5c53be9 master -> master
Un cambio del cielo a la tierra dirás cuando comiences a manejar tus repositorios por medio de Gogs, ya lo conocías, usas otra alternativa, cual?, escríbeme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.
Sígueme en twitter , google+, facebook o email y podrás estar enterado de todas mis publicaciones.