Installation de Gitlab
Installation
- Gitlab évoluant rapidement, il est difficile de maintenir un script d'installation/mise à jour. Il est plus simple pour l'installer de suivre le tutoriel d'installation pas à pas pour Debian.
- Préalablement, créer une base de données Mysql comme indiqué sur le site de GitLab.
- L'installation originelle de Gitlab sur Yilgarn a été réalisé en suivant les indications présentes dans le script
gitlab.sh
(voir ci-dessous)
- Pour basculer le site hébergent Gitlab en HTTPS, suivre les indication concernant l'utilisation de HTTPS.
Procédure de mise à jour
- Pour voir la version installer :
cat /home/git/gitlab/VERSION
- Pour les versions majeures rechercher votre version dans la liste des procédures de mise à jour.
- Pour les mises à jour mineures suivre les indication pour patcher une version.
Vérifier l'installation
- Se placer dans le dossier /home/git/gitlab :
cd /home/git/gitlab
- Lancer les commandes :
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
Services liées à Gitlab
service gitlab-workhorse restart
service gitlab-unicorn restart
service gitlab-sidekiq restart
service redis-server restart
: doit fonctionner pendant l'opération de backup de Gitlab.
Problèmes
Problème pour mettre en place Letsencrypt
- Ne pas modifier le fichier de conf Nginx du site Gitlab pour le support de SSL
- ajouter cette ligne pour permettre la vérification par Certbot :
location ^~ /.well-known { root /home/git/gitlab/public; }
- Lancer Certbot en root :
certbot certonly –webroot -w /home/git/gitlab/public -d git.clapas.org
- Ajouter dans le fichier de conf Nginx du site Gitlab le support de SSL & HTTP2
- Et laisser la ligne pour la vérification par Certbot :
location ^~ /.well-known { root /home/git/gitlab/public; }
Problèmes de démarrage des services
- Si le service
gitlab-unicorn
ne veut pas démarrer à cause de ses dépendance, vérifier que le serviceredis-server
est bien démarré. - Si le service
redis-server
ne veut pas démarrer, vérifier que le dossier/var/run/redis
existe bien avec les bons droits.
Problème avec le backup
Vérifier que mysqldump
est accessible. Vérifier la présence d'un lien vers la bonne version de Mysql dans /usr/local/bin
.
Problème avec Bundle
- Si le message suivant survient “Some gems seem to be missing from your vendor/cache directory.”, essayer la commande suivante, pour réinstaller les paquets en local :
sudo -u git -H bundle
- Pour remettre à plat Bundle :
gem update –system
gem update bundler
Problème avec le cache de l'interface web
- Désactiver le cache dans le fichier :
/home/git/gitlab/config/environments/production.rb
- Modifier le paramètre suivant :
config.cache_classes = false
Procédure d'installation suivie originellement sur Yilgarn : gitlab.sh
Procédure en cours de transformation en script :
#!/bin/bash # # Installation de GitLab # Copyright : Jean-Pascal MILCENT, 2015 # # Source : https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md # # Log : # 2015-03-02 : création du script echo "Enter the root password for GitLab :" read GITLAB_ROOT_PASSWORD while $GITLAB_ROOT_PASSWORD = null; do echo "Root password for GitLab is mandatory !" echo "Please enter the root password for GitLab :" read GITLAB_ROOT_PASSWORD done echo "Enter the domain name for GitLab :" read GITLAB_DOMAIN_NAME while $GITLAB_DOMAIN_NAME = null; do echo "Domain name for GitLab is mandatory !" echo "Please enter the domain name for GitLab :" read GITLAB_DOMAIN_NAME done #-----------------------------------------------------------------------------------------------------------# # Installation des dépendances 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 \ libkrb5-dev #-----------------------------------------------------------------------------------------------------------# # Install Git (v1.7.10 minimum) sudo apt-get install -y git-core # Make sure Git is version 1.7.10 or higher, for example 1.7.12 or 2.0.0 git --version #-----------------------------------------------------------------------------------------------------------# # Install Ruby (v2.1 minimum) & Bundler sudo apt-get install \ libruby2.1 \ ruby2.1 \ ruby2.1-dev \ rubygems-integration # Create a link ruby to ruby2.1 sudo ln -s /usr/bin/ruby2.1 /usr/bin/ruby # Install Bundler sudo gem2.1 install bundler --no-ri --no-rdoc #-----------------------------------------------------------------------------------------------------------# # Create a git user for GitLab: sudo adduser --disabled-login --gecos 'GitLab' git #-----------------------------------------------------------------------------------------------------------# # Database echo 'To install Gitlab database with Mysql, see : https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/database_mysql.md ' #-----------------------------------------------------------------------------------------------------------# # Redis sudo apt-get install redis-server # Configure redis to use sockets sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig # Disable Redis listening on TCP by setting 'port' to 0 sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | sudo tee /etc/redis/redis.conf # Enable Redis socket for default Debian / Ubuntu path echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis/redis.conf # Grant permission to the socket to all members of the redis group echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf # Create the directory which contains the socket sudo mkdir /var/run/redis sudo chown redis:redis /var/run/redis sudo chmod 755 /var/run/redis # Persist the directory which contains the socket, if applicable if [ -d /etc/tmpfiles.d ]; then echo 'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf fi # Activate the changes to redis.conf sudo systemctl restart redis-server.service # Add git to the redis group sudo usermod -aG redis git #-----------------------------------------------------------------------------------------------------------# # GitLab - Installation # We'll install GitLab into home directory of the user "git" cd /home/git # Clone GitLab repository sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-8-stable gitlab #-----------------------------------------------------------------------------------------------------------# # GitLab - Configuration # Go to GitLab installation folder cd /home/git/gitlab # Copy the example GitLab config sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml # Update GitLab config file, follow the directions at top of file sudo -u git -H vim config/gitlab.yml # Make sure GitLab can write to the log/ and tmp/ directories sudo chown -R git log/ sudo chown -R git tmp/ sudo chmod -R u+rwX,go-w log/ sudo chmod -R u+rwX tmp/ # Create directory for satellites sudo -u git -H mkdir /home/git/gitlab-satellites sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites # Make sure GitLab can write to the tmp/pids/ and tmp/sockets/ directories sudo chmod -R u+rwX tmp/pids/ sudo chmod -R u+rwX tmp/sockets/ # Make sure GitLab can write to the public/uploads/ directory sudo chmod -R u+rwX public/uploads # Copy the example Unicorn config sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb # Find number of cores nproc # Enable cluster mode if you expect to have a high load instance # Ex. change amount of workers to 3 for 2GB RAM server # Set the number of workers to at least the number of cores sudo -u git -H vim config/unicorn.rb # Copy the example Rack attack config sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb # Configure Git global settings for git user, useful when editing via web # Edit user.email according to what is set in gitlab.yml sudo -u git -H git config --global user.name "GitLab" sudo -u git -H git config --global user.email "example@example.com" sudo -u git -H git config --global core.autocrlf input # Configure Redis connection settings sudo -u git -H cp config/resque.yml.example config/resque.yml # Change the Redis socket path if you are not using the default Debian / Ubuntu configuration sudo -u git -H vim config/resque.yml #-----------------------------------------------------------------------------------------------------------# # Configure GitLab DB Settings # MySQL only: sudo -u git cp config/database.yml.mysql config/database.yml # MySQL and remote PostgreSQL only: # Update username/password in config/database.yml. # You only need to adapt the production settings (first part). # If you followed the database guide then please do as follows: # Change 'secure password' with the value you have given to $password # You can keep the double quotes around the password sudo -u git -H vim config/database.yml # PostgreSQL and MySQL: # Make config/database.yml readable to git only sudo -u git -H chmod o-rwx config/database.yml #-----------------------------------------------------------------------------------------------------------# # Install Gems cd /home/git/gitlab sudo -u git -H bundle -j4 install --deployment --without development test postgres aws #-----------------------------------------------------------------------------------------------------------# # Install GitLab Shell # Run the installation task for gitlab-shell (replace `REDIS_URL` if needed): sudo -u git -H bundle exec rake gitlab:shell:install[v2.5.4] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production # By default, the gitlab-shell config is generated from your main GitLab config. # You can review (and modify) the gitlab-shell config as follows: sudo -u git -H vim /home/git/gitlab-shell/config.yml #-----------------------------------------------------------------------------------------------------------# #Initialize Database and Activate Advanced Features # Type 'yes' to create the database tables. # When done you see 'Administrator account created:' sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=$GITLAB_ROOT_PASSWORD #-----------------------------------------------------------------------------------------------------------# # Install Systemd services cd /home/admin/scripts/services/systemd wget -O gitlab-sidekiq.service https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/systemd/gitlab-sidekiq.service wget -O gitlab-unicorn.service https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/systemd/gitlab-unicorn.service # Note : # - If you installed GitLab in other path than /home/git/gitlab change the service files accordingly. # - Edit the files and change the names of other services needed by gitlab # - Check the path of Bundle : /usr/bin/bundle chmod 750 gitlab-* sudo ln -s /home/admin/scripts/services/systemd/gitlab-* /etc/systemd/system/ #Add redis-server systemd service ln -s /lib/systemd/system/redis-server.service /etc/systemd/system/redis.service #Reload systemd: sudo systemctl daemon-reload #Start the services: sudo systemctl start gitlab-sidekiq.service gitlab-unicorn.service #Enable them to start at boot: sudo systemctl enable /home/admin/scripts/services/systemd/gitlab-* #-----------------------------------------------------------------------------------------------------------# # Setup Logrotate sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab #-----------------------------------------------------------------------------------------------------------# # Check Application Status # Check if GitLab and its environment are configured correctly: sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production #-----------------------------------------------------------------------------------------------------------# # Compile Assets sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production #-----------------------------------------------------------------------------------------------------------# # Start Your GitLab Instance sudo systemctl gitlab-* start #-----------------------------------------------------------------------------------------------------------# # Nginx Site Configuration sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/${GITLAB_DOMAIN_NAME}.conf sudo ln -s /etc/nginx/sites-available/${GITLAB_DOMAIN_NAME}.conf /etc/nginx/sites-enabled/${GITLAB_DOMAIN_NAME}.conf # Change YOUR_SERVER_FQDN to the fully-qualified domain name of your host serving GitLab. sudo vim /etc/nginx/sites-available/${GITLAB_DOMAIN_NAME} # Test Nginx Configuration sudo nginx -t # Restart Nginx sudo systemctl restart nginx.service #-----------------------------------------------------------------------------------------------------------# # Double-check Application Status sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production #If all items are green, then congratulations on successfully installing GitLab! #-----------------------------------------------------------------------------------------------------------# # Exim4 config for Gitlab # On Debian 8, edit /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs sudo vim /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs # Add a new line : extract_addresses_remove_arguments=False # Update exim4 config files : update-exim4.conf.template -r update-exim4.conf # Check if new line exists in : /etc/exim4/exim4.conf.template and in /var/lib/exim4/config.autogenerated # Or # Edit /home/git/gitlab/config/application.rb sudo -u Git - H vim /home/git/gitlab/config/application.rb # Add a new line : config.action_mailer.sendmail_settings = { :arguments => "-i" } #-----------------------------------------------------------------------------------------------------------# # Gitlab as personnal repository # Create your personnal acount on Gitlab # Then, sign in to Gitlab like root # Go to admin area and click on "Settings" menu # Disabled "Signup enabled"