Contenu

Installation et configuration de Gogs avec Apache (Debian 8.7)

Gogs (GO Git Service) est une interface web Git légère. Il est écrit en Go.

Installation de Gogs

Afin de nous simplifier l’installation et les mises à jour de Gogs, nous allons l’installer à partir du dépôt mis à disposition. Pour cela, on tape la commande suivante :

1
# echo "deb https://deb.packager.io/gh/pkgr/gogs jessie pkgr" | tee /etc/apt/sources.list.d/gogs.list

Nous allons maintenant la clé qui permettra de vérifier l’authenticité des paquets que nous téléchargerons depuis le dépôt via leur signature. Pour cela, on tape la commande suivante :

1
# wget -qO - https://deb.packager.io/key | apt-key add -

Maintenant que le nouveau dépot est créé et que la clé est importée, nous pouvons mettre à jour la liste des packages et installer Gogs. Pour cela, on tape les commandes suivantes :

1
2
3
# apt-get install apt-transport-https
# apt-get update
# apt-get install gogs

Installation d’Apache

Nous allons installer Apache via la commande suivante :

1
# apt-get install apache2

Au démarrage d’Apache, il est possible que celui-ci ne soit pas capable de déterminer un nom de domaine. Ce message sera affiché dans le terminal :

1
Starting web server: apache2apache2: Could not reliably determine the server's fully qualified domaine name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Avant de modifier le fichier de configuration d’Apache, nous allons le sauvegarder via la commande suivante :

1
# cp /etc/apache2/apache2.conf{,.ori}

Pour corriger l’erreur, on édite le fichier de configuration Apache via la commande suivante :

1
# vi /etc/apache2/apache2.conf

On ajoute la ligne suivante à la fin du fichier :

1
ServerName localhost

Nous allons désactiver l’affichage de la version d’Apache dans les pages d’erreurs. Avant de modifier le fichier de configuration d’Apache, nous allons le sauvegarder via la commande suivante :

1
# cp /etc/apache2/conf-available/security.conf{,.ori}

Nous allons éditer le fichier « security » via la commande suivante :

1
# vi /etc/apache2/conf-available/security.conf

Nous allons modifier la ligne 26 comme suit :

1
ServerTokens Prod

Nous devons décommenter la ligne 36 et commenter la ligne 37 comme ci-dessous :

1
2
ServerSignature Off
#ServerSignature On

Configuration d’Apache

Avant de modifier le fichier de configuration d’Apache, nous allons le sauvegarder via la commande suivante :

1
# cp /etc/apache2/mods-available/dir.conf{,.ori}

On va éditer le fichier « dir.conf » via la commande suivante pour indiquer les fichiers index que nous utiliserons

1
# vi /etc/apache2/mods-available/dir.conf

Supprimer les index suivants : index.cgi, index.pl, puis on enregistre les modifications. Les modules « proxy » et « proxy_http »pour Apache ne sont pas activés par défaut. Nous devons les activer. Pour cela on tape les commandes suivantes :

1
2
# a2enmod proxy
# a2enmod proxy_http

On créé le répertoire qui contiendra les fichiers de log du site web via la commande suivante :

1
# mkdir /var/log/apache2/git.monsiteweb.fr

Nous allons créer un VirtualHost que nous appellerons « monsiteweb.fr.conf » via la commande suivante :

1
# vi /etc/apache2/sites-available/git.monsiteweb.fr.conf

On y enregistre les lignes suivantes :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<VirtualHost *:80>
     ServerAdmin postsmaster@moniteweb.fr
     ServerName git.monsiteweb.fr
     ProxyPreserveHost On
     ProxyRequests Off
     ProxyPass / http://127.0.0.1:6000/
     ProxyPassReverse / http://127.0.0.1:6000/
     ErrorLog /var/log/apache2/git.monsiteweb.fr/error.log
     CustomLog /var/log/apache2/git.monsiteweb.fr/access.log combined
     ServerSignature Off
</VirtualHost>

Maintenant que l’on a configuré, le VirtualHost, nous devons l’activer. Pour cela nous tapons la commande suivante :

1
# a2ensite git.monsiteweb.fr

On vérifie que l’on n’a pas fait d’erreur lors de la configuration de notre virtualhost via la commande suivant :

1
# apachectl configtest

Si en retour on obtient un « Syntax OK », on recharge la configuration Apache via la commande suivante :

1
# systemctl restart apache2.service

Installation et configuration de MariaDB

Installation du serveur MariaDB via la commande suivante :

1
# apt-get install mariadb-server-10.0

L’installeur va nous demander de définir le mot de passe root de MariaDB (« mariadb » par exemple). On vérifie que MariaDB fonctionne bien via la commande suivante :

1
2
3
# mysql -u root -p
entrer le mot de passe
MariaDB [(none)]> quit

Maintenant nous pouvons lancer l’outil de configuration MariaDB pour supprimer les utilisateurs anonymes, supprimer les bases de tests et désactiver la possibilité pour root de se connecter à distance via la commande :

1
2
3
4
5
6
7
8
# /usr/bin/mysql_secure_installation

Enter current password for root (enter for none) : Taper le mot de passe précédemment entré
Set root password? [Y/n] n
Remove anonymous users? [Y/n] Taper sur la touche Entrer
Disallow root login remotely? [Y/n] Taper sur la touche Entrer
Remove test database and access to it? [Y/n] Taper sur la touche Entrer
Reload privilege tables now? [Y/n] Taper sur la touche Entrer

Création d’un utilisateur et d’une base de données pour Gogs

Nous allons nous connecter au serveur MariaDB via la commande suivante :

1
# mysql -u root -p

Nous allons créer une base de données « gogsdb » via la commande suivante :

1
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS gogsdb CHARACTER SET utf8 COLLATE utf8_general_ci;

Nous allons créer un utilisateur « gogs » avec le mot de passe « password » et lui donner tous les droits à sur la base de donnée « gogsdb » ainsi que spécifier le type de moteur de stockage à utiliser pour cette base via les commandes suivantes :

1
2
3
4
5
MariaDB [(none)]> grant usage on gogsdb.* to gogs@localhost identified by 'password';
MariaDB [(none)]> grant all privileges on gogsdb.* to gogs@localhost ;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> use gogsdb;
MariaDB [(none)]> SET default_storage_engine=INNODB;

On quitte le serveur MariaDB via la commande suivante :

1
MariaDB [(none)]> quit

Configuration de Gogs

Afin de configurer Gogs, nous allons nous rendre à l’adresse : http://git.monsiteweb.fr/ et on rempli les champs comme ci-dessous. La base de données:

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Database-settings.png

Paramètres généraux de Gogs

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-General-settings.png

Paramètres facultatifs

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Specific-settings.png

Création d’un repository/dépôt Gogs

Un repository/dépôt Gogs est une sorte de répertoire qui contiendra l’ensemble des fichiers du projet. Pour en créer un, nous devons cliquer en haut à droite sur le petit « + », puis « Nouveau dépôt »

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Create-repository-step-1.png

On renseigne le nom du repository/projet, ainsi qu’une description, puis l’on clique sur « Créer un dépôt »

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Create-repository-step-2.png

Une nouvelle page va s’afficher avec les URL (au format HTTPS et SSH) pour la synchronisation avec notre futur repository/dépôt local. Nous allons copier l’URL au format SSH dans un document texte. Elle nous servira par la suite

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Create-repository-step-3.png

Création d’une SSH

Nous allons maintenant nous attaquer à la création d’une paire clé SSH (Publique et Privée) afin de nous permettre de synchroniser notre repository/dépôt local avec notre repository/dépôt GitHub. Elles seront au format RSA et auront une longueur de 4096 bits. Pour cela on tape la commande suivante :

1
# ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Lors de la création, il va vous êtes proposer de créer une passphrase (« mot de passe ») pour la clé. Pour plus de sécurité, je vous conseille d’en mettre un. Maintenant que la paire de clé est créée, nous devons copier la clé publique sur GitHub. Pour cela, nous éditons le fichier « id_rsa.pub » via la commande suivante :

1
# vi .ssh/id_rsa.pub

On copie l’ensemble du contenu. Ensuite on se rend sur son compte Gogs, on clique en haut à droite, a droite du « + », puis sur « Paramètres »

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Add-SSH-public-key-step-1.png

On clique sur « Clés SSH » dans les onglets verticaux

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Add-SSH-public-key-step-2.png

On clique sur le bouton « Ajouter une clé »

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Add-SSH-public-key-step-3.png

Pour en simplifier la gestion on donne un nom (nom de l’ordinateur à partir duquel elle a été générée) à la clé publique et on la colle dans l’encadré « Contenu » prévu à cet effet, puis on clique sur « Ajouter une clé »

https://www.lecoindesdocs.fr/images/2017/04/17/Gogs-Add-SSH-public-key-step-4.png

Configuration du client Git

Afin de pouvoir utiliser le client Git, nous devons configurer un nom d’utilisateur et une adresse mail. Pour cela, on tape les commandes suivantes :

1
2
# git config --global user.name "your_name"
# git config --global user.email "your_email@example.com"

Synchronisation sur Gogs à l’aide du client Git

Maintenant que le client est installé, nous devons créer un répertoire dans lequel nous créerons le repository/projet. Pour cela, nous tapons la commande suivante :

1
# mkdir Git_Repository

On se rend dans le répertoire via la commande suivante :

1
# cd Git_Repository

Maintenant que l’on est dans le répertoire, on peu créer le repository/projet via la commande suivante :

1
# git init mon_projet

On se rend dans le répertoire « mon_projet » via la commande suivante :

1
# cd mon_projet

Le repository/projet étant créé, on créé/copie les fichiers dans le répertoire « mon_projet » afin de pouvoir faire les actions qui vont suivre. Une fois les fichiers créés, nous allons devoir activer le suivi de version/modifications pour l’ensemble des fichiers présent dans le répertoire. Pour cela, nous allons taper les commandes suivantes :

1
# git add --all

Le suivi de version étant activé, nous devons maintenant « Valider » l’ensemble des modifications effectués dans le repository/projet. Pour cela on tape la commande suivante :

1
# git commit --all

Avant de pouvoir synchroniser le repository/projet local avec Gogs, nous devons configurer l’URL du repository/dépôt Gogs dans le client Git. Pour cela on tape la commande suivante :

1
# git remote add mon_projet gogs@git.monsiteweb.fr:Usernamme/mon_projet.git

On peut vérifier la bonne prise en compte de l’URL via la commande suivante :

1
# git remote -v

Maintenant que le client Git est configuré, on peut envoyer le contenu de notre repository dans la branche master sur GitHub via la commande suivante :

1
# git push -u mon_projet master

Quelques commandes supplémentaires

« Valider » les modifications avec un commentaire :

1
# git commit -m "mon_commentaire"

Effacer/Supprimer des fichiers du repository/projet :

1
# git rm mon_fichier

Renommer un fichier du repository/projet :

1
# git mv fichier_d_origine fichier_cible