Accueil > OpenID Connect OAuth Server par DnC > Développer > Installer (ou mettre à jour) OAuthSD avec Composer

Installer (ou mettre à jour) OAuthSD avec Composer

Lancer un client SSH avec l’utilisateur du domaine

Il ne faut pas exécuter composer en root.
Pour accéder à notre serveur, on configure un terminal SSH avec les identifiants de l’utilisateur du domaine. Dans notre exemple, le domaine est "domain" et l’utilisateur est "username".

Note :
- les exemples de code correspondent à CentOS.
- Il faut vérifier que cet utilisateur appartient au groupe "wheel" des sudoers. Si ce n’est pas le cas, exécuter (en root) :
root@mon.site.com [~]#usermod -aG wheel username

On se place dans le cas d’une installation locale de Composer, c’est à dire dans le dossier racine des documents web (web document root).

username@domain [~]# cd public_html

1° Méthode : avec le script go_xxx.sh

Il existe (à l’heure actuelle) deux scripts, selon que l’on installe OAuthSD avec une base de données PostgreSql ou MySQL : go_pgsql.sh et go_mysql.sh.

Prérequis

- un domaine nommé "domain"
- un utilisateur nommé "user" est propriétaire du domaine avec le mot de passe "user_pswd"

Contrairement à go_mysql.sh (pour MySQL), le script go_pgsql.sh n’installe pas
PostgreSQL ety ne crée pas la base de données ni l’utilisateur. Il faudra donc :

- Installer PostgreSQL
- créer une base de données avec les identifiants suivants (exemple) :
Nom de la base de données "database" (oauthsdc_data)
Utilisateur : "database_user" (oauthsdc_user)
Mot de passe : "database_user_pswd" (oautW...!)

Procédure d’installation avec go_xxx.sh

La procédure est la suivante :
- dans le répertoire des documents du serveur web du domaine (document root), créer un répertoire /install et y recopier le fichier go_xxx.sh.
- 1 - Copier le script go_pgsql.sh dans un répertoire /install à la racine web.

2 - ouvrir un client SSH sur "domain" avec l’utilisateur "user" et le mot de passe "user_pswd".

3 - lancer go_pgsql.sh :
@ [ ]# sh public_html/install/go_pgsql.sh
(le script fait appel à Composer pour installer le code depuis GitHub)

Si tout va bien, vous devez obtenir quelque chose comme :

"Composer is installed
>>> Updating Composer
You are already using composer version 1.9.0 (stable channel).
>>> Installing OAuthSD
Clearing cache (cache-vcs-dir): /home/oauthsdc/.composer/cache/vcs
Clearing cache (cache-repo-dir): /home/oauthsdc/.composer/cache/repo
Clearing cache (cache-files-dir): /home/oauthsdc/.composer/cache/files
Clearing cache (cache-dir): /home/oauthsdc/.composer/cache
All caches cleared.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
 - Installing bdegoy/oauthsd-c (0.1.0): Cloning master from cache
Writing lock file
Generating autoload files
OK"

2° Méthode : installation manuelle

Vérifier l’installation de Composer

Exécuter :
username@domain [~/public_html]# composer diagnose

Retourne :

Checking composer.json: WARNING
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up
Checking composer version: OK
Composer version: 1.9.0
PHP version: 5.6.40
PHP binary path: /opt/cpanel/ea-php56/root/usr/bin/php

Nous avons un problème avec les clés publiques de Composer. Lançons :
username@mon.site.com [~/public_html]# composer self-update --update-keys

Comme indiqué, il faudra naviguer à l’URL https://composer.github.io/pubkeys.html pour copier ces clés et les coller comme demandé :

Open https://composer.github.io/pubkeys.html to find the latest keys
Enter Dev / Snapshot Public Key (including lines with -----): -----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnBDHjZS6e0ZMoK3xTD7f
...
wSEuAuRm+pRqi8BRnQ/GKUcCAwEAAQ==
-----END PUBLIC KEY-----
Stored key with fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
Enter Tags Public Key (including lines with -----): -----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0Vi/2K6apCVj76nCnCl2
...
TzCFWGk/HM6a4f0IzBWbJ5ot0PIi4amk07IotBXDWwqDiQTwyuGCym5EqWQ2BD95
RGv89BPD+2DLnJysngsvVaUCAwEAAQ==
-----END PUBLIC KEY-----
Stored key with fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Public keys stored in /home/user/.composer

Nous pouvons vérifier à nouveau Composer :

username@domain [~/public_html]# composer diagnose
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: OK
Composer version: 1.9.0
PHP version: 5.6.40
PHP binary path: /opt/cpanel/ea-php56/root/usr/bin/php

Cette fois-ci c’est bon.

Mettre à jour de Composer

username@domain [~/public_html]# composer self-update
Si Composer était à jour, on obtient :
You are already using composer version 1.9.0 (stable channel).

Installer le code d’OAuthSD ou vérifier l’installation

L’installation ou la vérification se fait en exécutant :
username@mon.site.com [~/public_html]# composer install

Si OAuthSD est déjà installé et complet, on obtient :

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files

"Installing dependencies (including require-dev) from lock file" signifie qu’une installation avait déjà été effectuée. La mise à jour conserve les versions des composants (inscrites dans le fichier composer.lock) de la version courante d’OAuthSD. C’est important pour assurer la cohérence de l’ensemble du code par rapport à la dernière version stable.

Mettre à jour le code d’OAuthSD

Attention ! une mise à jour du code avec les dernières versions des composants n’est pas recommandée à moins qu’une nouvelle version stable d’OAuthSD ait été notifiée comme prête pour la mise à jour.

La mise à jour se fait en exécutant :
username@domain [~/public_html]# composer update

Notre application était à jour des derniers développements, ainsi que les composants. On obtient donc :

Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

"Updating dependencies (including require-dev)" signifie que les composants auraient été mis à jour dans leur dernière version. Un nouveau fichier composer.lock est créé.

Après l’installation

4 - ouvrir en édition /commons/keepsecret/database.php et inscrire les identifiants
de connexion à la base de données.

5 - Initialiser les données avec le contenu du fichier /install/data.sql

6 - tester le fonctionnement avec https://"domain"/oidc/tests/essai1.php

Echec avec les messages : "remote : Invalid username or password

Ceci signifie que :
- Le repository GitHub est privé,
- les clés SSH sont manquantes ou erronées.

Se connecter sur le compte GitHub.
- Dans Settings -> SSH and GPG Keys, vérifier qu’il existe une SSH Key pour le domaine oauthsd-c
Si c’est le cas :
- vérifier qu’il existe un dossier /home/oauthsdc/.ssh/ et contrôler que la clé
publique id_rsa_pub est identique au champ Key (ce n’est probablement pas le cas).
Si ce n’est pas le cas :
- Installer une paire de clés dans /home/oauthsdc/.ssh/ (fichiers id_rsa, id_rsa.pub et known_hosts)
générer les clés :
- ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Enter file in which to save the key (/home/oauthsdc/.ssh/id_rsa) : etc...
- ouvrir le fichier id_rsa.pub, copier son contenu
- côté GitHub, actionner "New SSH Key"
- coller le contenu dans le champ Key
- Dans le champ Title, indiquer le nom du serveur et le domaine (ex : vpsxxx-domain)