README.md 4.13 KB
Newer Older
Bertrand Gauthier's avatar
Bertrand Gauthier committed
1
2
# Squelette d'application Unicaen

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
3
4
Ce squelette d'application constitue un socle minimal pour entamer rapidement le développement d'une nouvelle 
application à la mode "Unicaen".
5
6


Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
7
## Création d'une nouvelle appli à partir du squelette
8

Bertrand Gauthier's avatar
Bertrand Gauthier committed
9
Imaginons que nous voulons créer une nouvelle appli PHP 7.3 dans le répertoire `./newapp`.
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
10

Bertrand Gauthier's avatar
Bertrand Gauthier committed
11
12
13
14
15
### Préalable

Nous aurons besoin de l'image Docker `unicaen-dev-php${PHP_VERSION}-apache` pour être dans un
environnement PHP dont on maîtrise la version. Pour obtenir puis construire cette image, reportez-vous au dépôt 
[unicaen-image](https://git.unicaen.fr/open-source/docker/unicaen-image).
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
16

Bertrand Gauthier's avatar
Bertrand Gauthier committed
17
### Création des sources de l'application
Bertrand Gauthier's avatar
Bertrand Gauthier committed
18

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
```bash
APP_DIR=newapp
PHP_VERSION=7.3
docker run \
--rm \
-v $PWD:/app \
-w /app unicaen-dev-php${PHP_VERSION}-apache \
composer create-project --repository https://gest.unicaen.fr/packagist unicaen/skeleton-application ${APP_DIR}
```

### Mise à jour des bibliothèques PHP

```bash
docker run --rm -v $PWD:/app -w /app unicaen-dev-php${PHP_VERSION}-apache composer update
```

Bertrand Gauthier's avatar
Bertrand Gauthier committed
35
36
37
38
### Droits d'écriture

Comme les commandes lancées via Docker (comme ici, `composer`) sont exécutées en `root`, il faut reprendre la main 
sur les fichiers créés.
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
39
40
41

```bash
cd ${APP_DIR}
Bertrand Gauthier's avatar
Bertrand Gauthier committed
42
43
44
45
46
47
sudo chown -R ${USER} .
```

### Création du dépôt git

```bash
Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
git init
git add .
git commit -m "Squelette de l'application"
git push --set-upstream git@git.unicaen.fr:dsi/${APP_DIR}.git master
```

*NB : la création du dépôt git de cette façon n'est possible que si vous disposez des droits suffisants dans le 
namespace gitlab spécifié.*


## Construction et lancement du container Docker

```bash
docker-compose up --build
```
63
64


Bertrand Gauthier's avatar
Bertrand Gauthier committed
65
## Module Demo
66

67
68
Le squelette d'application possède un module "démo" qui utilise une base de données PostgreSQL de démonstration 
permettant d'avoir une authentification locale qui fonctionne. 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
69

70
71
Cette base de données est fournie par le service `db` (fichier de config `docker-compose.yml`).
Il y a également un service `adminer` fournissant de quoi explorer la base de données avec l'outil 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
72
73
74
["Adminer"](https://www.adminer.org) en vous rendant à l'adresse `http://localhost:9080` (sélectionner "PostgeSQL"
et utiliser les informations de connexion à la bdd présentes dans le `docker-compose.yml`).
Pour explorer/administrer la base de données *de l'extérieur du container* (avec PHPStorm par exemple), 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
75
76
77
78
l'adresse de la base est cette fois `localhost:8432`.

NB :
- Grâce au montage `./data/db:/var/lib/postgresql/data` spécifié dans `docker-compose.yml`, la base de données est 
Bertrand Gauthier's avatar
Bertrand Gauthier committed
79
  persistée dans le répertoire `data/db` de l'appli (d'ailleurs, ne pas oublier de faire un `sudo chmod -R 777 data/db`).
Bertrand Gauthier's avatar
Bertrand Gauthier committed
80
81
82
- Les scripts de création de la base de données exécutés au lancement du container (si la base n'existe pas déjà)
  se trouvent dans le répertoire `./docker/db` de l'appli et sont fournis au container grâce au montage 
  `./docker/db/:/docker-entrypoint-initdb.d/`. 
83

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
84

Bertrand Gauthier's avatar
Bertrand Gauthier committed
85
86
## Configuration du projet

87
88
89
90
- Renommez `config/autoload/local.php.dist` en `local.php` :
```bash
mv config/autoload/local.php.dist config/autoload/local.php
```
91
92
93

- Copiez dans votre dossier `config/autoload` les fichiers de configuration locaux et globaux `.dist`
  des bibliothèques utilisées sans leur extension `.dist` :
Bertrand Gauthier's avatar
Bertrand Gauthier committed
94
```bash
95
96
97
98
cp vendor/unicaen/app/config/unicaen-app.global.php.dist   config/autoload/unicaen-app.global.php
cp vendor/unicaen/app/config/unicaen-app.local.php.dist    config/autoload/unicaen-app.local.php
cp vendor/unicaen/auth/config/unicaen-auth.global.php.dist config/autoload/unicaen-auth.global.php
cp vendor/unicaen/auth/config/unicaen-auth.local.php.dist  config/autoload/unicaen-auth.local.php
Bertrand Gauthier's avatar
Bertrand Gauthier committed
99
100
```

101
102
- Le cas échéant, reportez-vous aux docs des modules concernés pour adapter ces fichiers de configuration 
à vos besoins :
103
104
105
  - [unicaen/app](https://git.unicaen.fr/lib/unicaen/app)
  - [unicaen/auth](https://git.unicaen.fr/lib/unicaen/auth)

Bertrand Gauthier's avatar
Doc    
Bertrand Gauthier committed
106

107
108
## Test de l'application 

Bertrand Gauthier's avatar
Bertrand Gauthier committed
109
Théoriquement, l'application devrait être accessible à l'adresse [https://localhost:8443](https://localhost:8443).
110
Le port utilisé dépend des redirections configurées dans le fichier [docker-compose.yml](docker-compose.yml).