GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Gitlab con PostgreSQL y Nginx en Ubuntu 15.04

Gitlab es una aplicación de administración de repositorios Git basada en la web escrita en Ruby. Es similar a GitHub e incluye funciones como un wiki de proyecto y un sistema de seguimiento de problemas. El proyecto Gitlab fue iniciado por Dmitriy Zaporozhets y el software es utilizado por más de 100 000 empresas de tecnología, incluidas IBM, StackExchange, NASA, Alibaba, Red Hat, etc. Gitlab es una de las mejores soluciones para crear su propio servidor git.

Gitlab es compatible con las principales distribuciones de Linux, como Ubuntu, Debian y CentOS. Gitlab proporciona un paquete .deb para Debian/Ubuntu y paquetes .rpm para Rhel y CentOS. El paquete contiene todas las dependencias, incluidas Ruby, Redis, Nginx, Unicorn y PostgreSQL. Gitlab está disponible en 2 versiones, Community Edition (Gitlab CE) y Enterprise Edition (Gitlab EE). Si desea crear su propio servidor git, lo más probable es que la edición CE gratuita ofrezca todas las funciones que necesita.

En este tutorial, lo guiaré paso a paso a través de la instalación de Gitlab CE con PostgreSQL como sistema de base de datos y Nginx como servidor web en la versión Ubuntu 15.04. Usaremos Ruby versión 2.x.x, gitlab versión estable 8.x.

Requisitos

  • Ubuntu 15.04 - 64 bits.
  • CPU de 2 núcleos:recomendado en el sitio de gitlab .
  • 2 GB de RAM/memoria:recomendado en el sitio de gitlab .
  • Privilegios de raíz.

Paso 1:actualice el sistema Linux

Antes de instalar las dependencias de Gitlab, buscamos las últimas actualizaciones del repositorio de ubuntu. Inicie sesión en el servidor de ubuntu con acceso SSH,  conviértase en usuario root y luego actualice los repositorios.

sudo su
apt-get update

Paso 2:instalar las dependencias de Gitlab

Gitlab tiene muchas dependencias de software, como un servidor redis, git-core, nodejs y postfix para enviar notificaciones por correo electrónico. Los instalaré con un solo comando apt:

sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs git-core postfix

Nota:Durante instalación de postfix, seleccione "sitio de Internet" y luego presione enter para confirmar el nombre de host.

Si todos los paquetes están instalados, verifique la versión de git y asegúrese de que la versión de git sea 1.7.x o superior.

git --version
git version 2.1.4

Paso 3:instalar Ruby and Go

Gitlab requiere una versión Ruby 2.x o superior. En este tutorial, utilizaremos la versión 2.7 de Ruby. En esta etapa, tenemos que instalar Ruby manualmente (desde la fuente). Si tiene Ruby instalado en su sistema anteriormente, elimínelo con el siguiente comando:

apt-get remove ruby -y

A continuación, instalaremos Ruby manualmente. Cree un nuevo directorio para los archivos fuente de Ruby:

mkdir -p /tmp/ruby && cd /tmp/ruby

Descarga el código fuente de Ruby con el comando curl:

curl -O --progress https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz

Ahora verifique y extraiga el ruby.tar.gz, luego ingrese al directorio de ruby:

echo 'e2e195a4a58133e3ad33b955c829bb536fa3c075  ruby-2.1.7.tar.gz' | shasum -c - && \
tar xzf ruby-2.1.7.tar.gz && \
cd ruby-2.1.7

Compile e instale Ruby:

./configure --disable-install-rdoc --prefix=/usr/local
make
make install

Como siguiente paso, tenemos que instalar Go. Desde gitlab 8.0, la solicitud HTTP de git es manejada por gitlab-workhorse, que está escrito en Go. Para instalar gitlab-workhorse, necesitamos el compilador go, descargarlo e instalarlo.

Crear un nuevo directorio para Go:

mkdir -p /tmp/go && cd /tmp/go

Descarga Go:usamos la versión de 64 bits:

curl -O --progress https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz

Verifíquelo y extráigalo al directorio "/usr/local/":

echo '46eecd290d8803887dec718c691cc243f2175fe0  go1.5.1.linux-amd64.tar.gz' | shasum -c - && \
sudo tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz

Ahora crea un enlace simbólico para Go en el directorio bin:

sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/

Ahora tenemos Ruby y Go instalados.

Paso 4 - Crear un nuevo usuario Linux y configurar la base de datos PostgreSQL

En este paso, crearemos un nuevo usuario del sistema Linux llamado "git" con el directorio de inicio "/home/git". Gitlab se ejecutará como usuario de git más tarde.

Crea un nuevo usuario git con el comando adduser:

sudo adduser --disabled-login --gecos 'GitLab' git

Ahora configuramos la base de datos para gitlab. Gitlab es compatible con MySQL y PostgreSQL, en este tutorial usaremos el tipo de base de datos recomendado PostGreSQL.

Instale PostgreSQL con el siguiente comando apt:

sudo apt-get install -y postgresql postgresql-client libpq-dev

Una vez hecho esto, inicie sesión en PostgreSQL y cree un nuevo rol/usuario llamado "git " para gitlab:

sudo -u postgres psql -d template1
CREATE USER git CREATEDB;

Luego crea una nueva base de datos para gitlab llamada "gitlabhq_production " y otorgue la base de datos a git user/role:

CREATE DATABASE gitlabhq_production OWNER git;

Ahora salga al shell postgresql y pruebe el nuevo rol/usuario con la base de datos que hemos creado:

\q
sudo -u git -H psql -d gitlabhq_production

Se ha creado un nuevo usuario del sistema llamado "git".

También se ha creado un nuevo rol/usuario "git" para psotgreSQL que se ha otorgado a la base de datos de gitlab "gitlabhq_production".

Paso 5:configurar el servidor Redis

Antes de editar el archivo de configuración de redis en el directorio "/etc/redis", crearemos una copia de seguridad con el nombre redis.conf.original.

cd /etc/redis/
cp redis.conf redis.conf.original

Luego edite el archivo "redis.conf" con el editor vim:

vim redis.conf


Vaya a la línea 45 y cambie el valor a 0 , porque queremos que Redis escuche solo en un socket Unix y no en un puerto:

Listen 0

Luego vaya al final del archivo y agregue un socket redis y el permiso para ello:

unixsocket /var/run/redis/redis.sock
unixsocketperm 777

Guarde el archivo y salga.

A continuación, cree un nuevo directorio para el socket redis en el directorio "/var/run" y ajuste el propietario y los permisos del directorio:

mkdir -p /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis

Vaya al directorio de sockets redis y ejecute el siguiente comando:

cd /var/run/redis
if [ -d /etc/tmpfiles.d ]; then
  echo 'd  /var/run/redis  0755  redis  redis  10d  -' | sudo tee -a /etc/tmpfiles.d/redis.conf
fi

Si todo está hecho, reinicie el servidor redis y agregue el usuario "git" al grupo "redis":

sudo service redis-server restart
sudo usermod -aG redis git

Paso 6:instalar GitLab

Vaya al directorio "/home/git" y descargue gitlab desde su repositorio GIT:

cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-2-stable gitlab

Nota:

sudo -u git -H clon comando =ejecutamos el comando "clonar" como usuario "git".

- Configurar GitLab

Vaya al directorio de gitlab para configurar gitlab:

cd /home/git/gitlab

Copie el ejemplo del archivo de configuración de gitlab gitlab.yml.example a gitlab.yml en el directorio "config":

sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

En el directorio de gitlab, cambie el propietario de los subdirectorios "log y tmp" al usuario de git:

sudo chown -R git {log,tmp}

Luego cambie los permisos para los otros directorios para que gitlab (el usuario de git) pueda escribir en ellos:

mkdir -p public/uploads/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX {tmp,tmp/pids,tmp/sockets,builds,shared/artifacts}
sudo chmod -R 0750 public/uploads

Copie los ejemplos de las configuraciones de ataque de unicornio y Rack:

sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

Ahora tenemos que configurar los ajustes globales para el usuario de git con el siguiente comando de git:

sudo -u git -H git config --global core.autocrlf input

Y tenemos que configurar la conexión de redis copiando el archivo "resque.yml" en el directorio de configuración, luego editarlo con vim para cambiar la configuración de redis, usar unix socket como configuramos redis para escuchar en un socket:

sudo -u git -H cp config/resque.yml.example config/resque.yml

- Configuración de la base de datos

El siguiente paso es configurar los ajustes de GitLab DB, usamos postgreSQL para nuestra base de datos. Copie el archivo de configuración y cambie los permisos:

sudo -u git -H cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml

- Instala las gemas

sudo gem install bundler
sudo -u git -H bundle install --deployment --without development test mysql aws kerberos

Espere hasta que terminen los comandos.

- Instalar Gitlab-shell

Gitlab-shell permite el acceso SSH y la gestión de repositorios para Gitlab. Usaremos la configuración predeterminada, por lo que no es necesario editarla. Ejecute el siguiente comando para instalar gitlab-shell:

sudo -u git -H bundle exec rake gitlab:shell:install[v2.6.8] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production

REDIS_URL =asegúrese de usar un zócalo de Unix para la configuración de redis en el entorno de producción.

- Instalar gitlab-workhorse

Gitlab-workhorse es un pequeño demonio para manejar el tráfico Git HTTP de unicorn, codificado en Go. Clónalo e instálalo:

cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
sudo -u git -H git checkout 0.4.2
sudo -u git -H make

- Inicialice la base de datos y active las funciones de gitlab

Vaya al directorio de instalación de gitlab y ejecute el siguiente comando:

cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

escriba "sí" para crear las tablas.

El resultado será una cuenta de gitlab con el nombre de usuario "root " y contraseña "5iveL!fe ".

Paso 7:configurar el script de inicio

Copie el script de inicio de gitlab del directorio de instalación de gitlab y agregue gitlab para comenzar en el momento del arranque con el comando update-rc.d:

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21

Luego copie la configuración de gitlab logrotate para la gestión de registros:

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

Y verifique el estado de la aplicación y compile los activos:

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

Si no hay ningún error, inicie gitlab con:

/etc/init.d/gitlab start

Paso 8:instalar y configurar Nginx

Usaremos Nginx como el servidor web front-end para manejar las solicitudes del navegador. Simplemente instálelo con este comando apt:

apt-get install nginx -y

Copie la configuración del host virtual de Nginx del directorio de gitlab y elimine el host virtual predeterminado de Nginx:

sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo rm /etc/nginx/sites-enabled/default

Edite el archivo de configuración con vim:

sudo vim /etc/nginx/sites-available/gitlab

Cambie el valor de las líneas Listen y ServerName en la sección HTTP:

Listen *:80; #Port Default

#Listen 0.0.0.0:80; #comment one of this

ServerName my.gitlab.me; #Gitlab FQDN/Domain

Guardar y salir.

Active el virtualhost de gitlab, inicie nginx y reinicie gitlab:

sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
service nginx start
/etc/init.d/gitlab restart

Ahora puede acceder a gitlab con su navegador en my.gitlab.me (el nombre de host que ha elegido para su servidor) e inicie sesión con el nombre de usuario predeterminado "root " y contraseña "5iveL!fe ".

Primero debe reemplazar la contraseña predeterminada de gitlab con su contraseña.

Gitlab 8 con PostgreSQL y Nginx en ubuntu 15.04 se instaló correctamente ahora.

Nota:

Si tiene un error, por ejemplo, "502 puerta de enlace incorrecta", corríjalo aumentando el tiempo de espera del unicornio o actualice su hardware. Vaya al directorio de instalación de gitlab y edite el archivo unicorn.rb con vim:

sudo -u git -H vim config/unicorn.rb

Vea más sobre la solución de problemas de Gitlab aquí https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide.

Conclusión

Gitlab es un software de gestión de repositorios git de código abierto escrito en Ruby. Es una de las mejores soluciones para construir su propio servidor git. Gitlab fue creado por Dmitriy Zaporozhets y está disponible en 2 versiones, Gitlab CE (Community Edition) y Gitlab EE (Enterprise Edition). Gitlab es fácil de instalar y configurar con una hermosa interfaz, utilizada por más de 100.000 empresas de tecnología. Es un software muy potente que ayuda a los desarrolladores a crear aplicaciones junto con otros desarrolladores.


Ubuntu
  1. Cómo instalar Mattermost con PostgreSQL y Nginx en Ubuntu 16.04

  2. Cómo instalar Ruby on Rails (RoR) con PostgreSQL en Ubuntu 16.04

  3. Cómo instalar MediaWiki con Nginx en Ubuntu 16.04

  4. Cómo instalar Postgresql y phpPgAdmin en Ubuntu 15.04

  5. Cómo instalar Nginx con PHP5 y MySQL en Ubuntu 11.10

Cómo instalar Redmine 3.2 con Nginx en Ubuntu 16.04

Cómo instalar Django con PostgreSQL y Nginx en Ubuntu 16.04

Cómo instalar y configurar GitLab en Ubuntu 16.04

Cómo instalar OSClass con Nginx en Ubuntu 20.04

Cómo Instalar Wordpress con Nginx, MariaDB y HHVM en Ubuntu 15.04

Cómo instalar Nginx con ModSecurity en Ubuntu 15.04