Escrito el 24 mayo 2012 por Luis Ignacio Díaz Martínez
Tabla de contenidos
Aprovechando que por fín he conseguido a concienciarme e instalar Ubuntu 12.04 en el ordenador del despacho explicaré como instalar Git + GitLab en el. Sencillamente, dentro de poquito empezaré con tareas de desarrollo ( nueva página web, módulos, aplicativos… ) por lo tanto, es fundamental tener instalado un software decente dedicado al control de versiones.
Así que a continuación podréis ver una guía básica y por encima de su instalación.
Ahora empezaremos con lo bueno. Primero de todo explicar que estructuraré este mini-manual por pasos. Por si alguien se pierde ( chiste fácil ). Así que simplemente ir siguiendo las indicaciones que seguro que el camino de las baldosas amarillas será el sencillo de superar.
**Nota para instalación en Debian 6.0, para realizar estos pasos necesitaremos tener instalado «sudo» para ello lo instalaremos de la siguiente forma:
1 |
apt-get update && apt-get upgrade && apt-get install sudo |
Vale, comenzamos la guinda del pastel. Tenemos que tener en cuenta que git ya se encuentra en repositorios así que aprovechando esto empezaremos instalando los paquetes que necesitamos.
1 2 |
sudo apt-get update sudo apt-get install -y wget curl gcc checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libreadline6-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev libicu-dev redis-server openssh-server git-core python-dev python-pip libyaml-dev postfix libpq-dev |
Ahora tendremos que instalar MySQL que es uno de los requisitos básicos:
1 |
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev |
**Tendremos que apuntarnos bien la contraseña!
Ahora, por lo que veo y leo en este momento, GitLab necesita el comando sendmail para funcionar. Por ejemplo lo utilizará para enviar un email cuando hemos perdido la contraseña. Este comando lo podemos encontrar dentro de los paquetes exim4, postfix y sendmail. Pero por supuesto tan solo tenemos que tener uno de ellos instalado.
Yo instalare postfix. Así que primero comprobaré que no lo tenga ya instalado:
1 |
ls /usr/sbin/sendmail |
Vaya se me acaba de chivar que no tengo sendmail, que no encuentra el comando. Eso quiere decir que no lo tengo disponible y que por lo tanto procederé a instalar postfix.
1 |
sudo apt-get install postfix |
**Nota: Donde pone «nombre del sistema de correo» pondremos lo que nosotros queramos. Damos este paso por finalizado.
Gitlab necesita que tengamos instalado Ruby en su versión 1.9.3. En los repositorios de Debian no se encuentra la última versión de Ruby, pero en Ubuntu si, ahora procederemos a instalarlo de la siguiente forma:
1 |
sudo apt-get install ruby1.9.3 |
Actualización: Ahora viene si queremos instalarlo en Debian 6.0:
1 2 3 4 5 |
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz tar xzvf ruby-1.9.3-p194.tar.gz cd ruby-1.9.3-p194 ./configure make make install |
Gitolite es una herramienta utilizada por GitLab. Esta herramienta maneja el acceso y el control sobre el repositorio git. Para utilizar esa herramienta tendremos que generar y registrar una serie de claves publicas ( keys public ). Una vez más podemos encontrar este paquete en repositorios.
1 |
sudo apt-get install gitolite |
**Nota: Paso actualizado 19NOV2012
Vamos a crear los usuarios que necesitamos para todo este tinglao… primero crearemos el usuario para git y luego el de gitlab… con los correspondientes grupos… así que vamos a fijarnos:
Creando usuario git:
1 2 3 4 5 6 7 |
sudo adduser \ --system \ --shell /bin/sh \ --gecos 'git version control' \ --group \ --disabled-password \ --home /home/git \ git |
1 |
sudo adduser --disabled-login --gecos 'gitlab system' gitlab |
1 |
sudo usermod -a -G git gitlab |
Y ahora a la inversa…
1 |
sudo usermod -a -G gitlab git |
Ahora comprobamos que este creado:
1 |
sudo cat /etc/passwd | grep gitlab |
Ahora nos tendrá que aparecer algo parecido a esto:
1 |
gitolite:x:1004:1004::/home/gitlab:/bin/sh |
Si es así, es que el usuario se ha creado correctamente.
Ahora, tenemos que generar las llaves de acceso SSH, para ello introduciremos lo siguiente:
1 |
sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa |
Tan solo pulsaremos la tecla «Enter» siempre que se nos pregunte algo.
Vale, ahora tendremos que buscar y copiar la clave que hemos generado, para ello introduciremos lo siguiente:
1 |
sudo -u gitolite cat /var/lib/gitolite/.ssh/id_rsa.pub |
Ahora descargamos el código de GitoLite:
1 |
sudo -H -u git git clone -b gl-v304 https://github.com/gitlabhq/gitolite.git /home/git/gitolite |
Ahora vamos a proceder con la instalación
1 2 3 4 5 6 7 |
cd /home/git sudo -u git -H mkdir bin sudo -u git sh -c 'echo -e "PATH=\$PATH:/home/git/bin\nexport PATH" >> /home/git/.profile' sudo -u git sh -c 'gitolite/install -ln /home/git/bin' sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub sudo chmod 0444 /home/git/gitlab.pub sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gitolite setup -pk /home/git/gitlab.pub" |
Permisos…
1 |
sudo chmod -R g+rwX /home/git/repositories/ sudo chown -R git:git /home/git/repositories/ |
Ahora procederemos a la comprobación de acceso a git…
1 2 3 4 5 |
# clone admin repo to add localhost to known_hosts # & be sure your user has access to gitolite sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin # if succeed you can remove it sudo rm -rf /tmp/gitolite-admin |
Si no da errores podemos continuar!… y si da errores… comentarlo o repetir los pasos! 😉
Vamos a instalar las dependencias…
1 2 3 4 |
sudo gem install charlock_holmes --version '0.6.8' sudo pip install pygments sudo gem install bundler cd /home/gitlab |
Ahora si que nos tendremos que descargar el código fuente del programa ( versión «stable» ). Así que teclearemos lo siguiente en nuestra consola:
1 |
cd /home/gitlab sudo -H -u gitlab git clone -b stable https://github.com/gitlabhq/gitlabhq.git gitlab |
1 2 3 |
cd gitlab sudo -u gitlab cp config/database.yml.mysql config/database.yml nano config/database.yml.mysql config/database.yml |
1 2 |
sudo -u gitolite cp config/gitlab.yml.example config/gitlab.yml sudo -u gitolite nano config/gitlab.yml |
Aquí vamos a modificar lo siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# Gitlab application config file # Email used for notification # about new issues, comments email: from: luigdima@localhost host: localhost # Protocol used for links in email letters # Value can be http or https protocol: http # or https # Git Hosting congiguration git_host: system: gitolite admin_uri: git@localhost:gitolite-admin base_path: /home/git/repositories/ host: localhost git_user: gitolite # port: 22 # Git settings # Use default values unless you understand it git: # Max size of git object like commit, in bytes # This value can be increased if you have a very large commits git_max_size: 5242880 # 5.megabytes # Git timeout to read commit, in seconds git_timeout: 10 |
Ahora modificamos los permisos para mejorar algo la seguridad:
1 |
sudo -u gitolite chmod o-rwx config/*.yml |
Vale ahora empezamos con la chicha, ya que vamos a empezar a instalar la base de datos y los módulos necesarios para el programa. Así que iremos paso por paso, primero ejecutaremos esto:
1 |
sudo -u gitlab -H bundle install --without development test sqlite postgres --deployment |
**Nota: Apartado oculto por la última actualización ( 19NOV2012 ):
Ahora vamos a realizar la instalación de la base de datos:
1 |
sudo -u gitlab bundle exec rake gitlab:app:setup RAILS_ENV=production |
1 |
sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive sudo chown git:git /home/git/.gitolite/hooks/common/post-receive |
Para comprobar que todo está en orden ejecutaremos lo siguiente:
1 |
sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production |
Nos tendría que mostrar lo siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Starting diagnostics config/database.yml............exists config/gitlab.yml............exists /home/git/repositories/............exists /home/git/repositories/ is writable?............YES remote: Counting objects: 12, done. remote: Compressing objects: 100% (8/8), done. Receiving objects: 100% (12/12), 1.14 KiB, done. Resolving deltas: 100% (1/1), done. remote: Total 12 (delta 1), reused 0 (delta 0) Can clone gitolite-admin?............YES UMASK for .gitolite.rc is 0007? ............YES /home/git/.gitolite/hooks/common/post-receive exists? ............YES Finished |
Si vemos que todo está en «YES» es que es bueno.
Ahora vamos a comprobar que todo funcione correctamente… para ello tenemos que ejecutar gitlab…
1 |
sudo -u gitlab bundle exec rails s -e production |
Vale, ya lo tenemos ejecutado que nos dice al ejecutar el comando?
Simplemente nos indicará donde nos tenemos que conectar… en mi caso… la dirección local con el puerto 3000
Esto lo podéis ver en el artículo… GitLab en Apache