Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
technique:adminserv:sites:website [2022/04/17 08:44] – [Déploiement du site vide] rdelaage | technique:adminserv:sites:website [2022/04/17 14:11] (Version actuelle) – [Personnaliser la configuration] ppom | ||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
## Généralités | ## Généralités | ||
- | Historiquement, | + | Historiquement, |
> Deploy your applications in separate containers independently and in different languages. Reduce the risk of conflict between languages, libraries or frameworks. | > Deploy your applications in separate containers independently and in different languages. Reduce the risk of conflict between languages, libraries or frameworks. | ||
- | Il faut donc créer un nouveau projet sur Gitlab | + | Il faut donc créer un nouveau projet sur [le groupe |
- | Le lancement d'un nouveau site peut s' | + | Le lancement d'un nouveau site peut [[technique: |
- | ## Déploiement d'un site de base | + | ## Modèle pour un nouveau |
- | Un site de base peut être déployé à partir de ce docker-compose | + | Un site de base peut être déployé à partir de modèle de fichier Compose. |
+ | |||
+ | < | ||
+ | |||
+ | < | ||
```yaml | ```yaml | ||
Ligne 28: | Ligne 32: | ||
services: | services: | ||
- | | + | |
container_name: | container_name: | ||
- | image: nginx:1.21-alpine | + | image: nginx:< |
volumes: | volumes: | ||
- monbeausite:/ | - monbeausite:/ | ||
labels: | labels: | ||
- | traefik.http.routers.school.entrypoints: | + | traefik.http.routers.monbeausite.entrypoints: |
- | traefik.http.routers.school.rule: Host(`monbeausite.picasoft.net`) | + | traefik.http.routers.monbeausite.rule: Host(`monbeausite.picasoft.net`) |
- | traefik.http.services.school.loadbalancer.server.port: | + | traefik.http.services.monbeausite.loadbalancer.server.port: |
traefik.enable: | traefik.enable: | ||
networks: | networks: | ||
Ligne 42: | Ligne 46: | ||
restart: unless-stopped | restart: unless-stopped | ||
``` | ``` | ||
+ | |||
+ | < | ||
## Personnaliser la configuration | ## Personnaliser la configuration | ||
+ | |||
+ | La configuration de nginx se trouve dans le fichier `/ | ||
+ | |||
+ | Néanmoins, pour les configurations complexes, il est possible de monter son propre fichier de configuration. | ||
+ | |||
+ | < | ||
+ | |||
+ | On rajoutera alors au fichier Compose présenté plus haut : | ||
+ | |||
+ | ```yaml | ||
+ | version: " | ||
+ | [...] | ||
+ | services: | ||
+ | web: | ||
+ | volumes: | ||
+ | [...] | ||
+ | - ./ | ||
+ | [...] | ||
+ | ``` | ||
+ | |||
+ | ## Exemples de personnalisation | ||
+ | |||
+ | < | ||
+ | Pour aller plus loin : | ||
+ | |||
+ | * [Documentation de référence pour les directives nginx](http:// | ||
+ | * [Examples pédagogiques de configuration pour sites statiques](https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | ### Changer la racine | ||
+ | |||
+ | Par défaut, le contenu est servi depuis `/ | ||
+ | |||
+ | ``` | ||
+ | worker_processes auto; | ||
+ | |||
+ | error_log | ||
+ | pid / | ||
+ | |||
+ | events { | ||
+ | worker_connections | ||
+ | } | ||
+ | |||
+ | http { | ||
+ | include | ||
+ | default_type | ||
+ | |||
+ | log_format | ||
+ | ' | ||
+ | '" | ||
+ | |||
+ | access_log | ||
+ | |||
+ | server { | ||
+ | listen 80; | ||
+ | |||
+ | root / | ||
+ | index index.html index.htm; | ||
+ | } | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | < | ||
+ | |||
+ | Ici, la directive à regarder est `root / | ||
### Activer la compression | ### Activer la compression | ||
+ | |||
+ | La compression permet de réduire la taille des réponses du serveur web, cela permet donc d' | ||
+ | |||
+ | ``` | ||
+ | [...] | ||
+ | http { | ||
+ | [...] | ||
+ | gzip on; | ||
+ | gzip_vary on; | ||
+ | gzip_comp_level 4; | ||
+ | gzip_min_length 256; | ||
+ | gzip_types application/ | ||
+ | [...] | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | La directive `gzip on;` permet d' | ||
+ | |||
+ | < | ||
### Activer l' | ### Activer l' | ||
+ | |||
+ | Par défaut, l' | ||
+ | |||
+ | Nous pouvons néanmoins vouloir activer cette indexation pour un serveur offrant du contenu culturel par exemple. Dans ce cas nous pouvons modifier la section `server` comme suit : | ||
+ | |||
+ | ``` | ||
+ | [...] | ||
+ | http { | ||
+ | [...] | ||
+ | server { | ||
+ | autoindex on; | ||
+ | [...] | ||
+ | } | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | La directive `autoindex on;` permet de dire à nginx, que quand le client demande un dossier, il ne faut pas lui répondre que la demande est interdite mais lui afficher une liste du contenu disponible dans le dossier. | ||
## Configurer PHP | ## Configurer PHP | ||
- | ## Ajout du contenu | + | Finalement, il arrive que nous voulions servir des pages dynamiques avec PHP, pour cela il faut ajouter un conteneur qui se chargera d' |
- | On synchronise | + | Ce conteneur doit pouvoir communiquer avec notre serveur web pour recevoir les demande et envoyer |
- | Ensuite, on copie simplement | + | |
+ | Le fichier Compose dans sa version statique est modifié comme suit : | ||
+ | |||
+ | ```yaml | ||
+ | [...] | ||
+ | networks: | ||
+ | app: | ||
+ | name: " | ||
+ | [...] | ||
+ | |||
+ | services: | ||
+ | app: | ||
+ | container_name: | ||
+ | image: php: | ||
+ | volumes: | ||
+ | - monbeausite: | ||
+ | networks: | ||
+ | - app | ||
+ | restart: unless-stopped | ||
+ | |||
+ | web: | ||
+ | [...] | ||
+ | networks: | ||
+ | [...] | ||
+ | - app | ||
+ | ``` | ||
+ | |||
+ | Il faut ensuite indiquer à Nginx qu'il faut contacter le serveur PHP lorsqu' | ||
+ | |||
+ | C'est en particulier les directives `http` et `server` qui seront modifiées : | ||
+ | |||
+ | ``` | ||
+ | [...] | ||
+ | http { | ||
+ | [...] | ||
+ | upstream php-handler { | ||
+ | server monbeausite-app: | ||
+ | } | ||
+ | |||
+ | server { | ||
+ | [...] | ||
+ | fastcgi_buffers 64 4K; | ||
+ | |||
+ | location ~ \.php$ { | ||
+ | try_files $uri =404; | ||
+ | fastcgi_param SCRIPT_FILENAME / | ||
+ | include fastcgi_params; | ||
+ | fastcgi_index index.php; | ||
+ | fastcgi_pass php-handler; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | La directive `upstream php-handler` définit le serveur qui peut être utilisé pour exécuter le code PHP (il peut en contenir plusieurs). Il contient la directive `server monbeausite-app: | ||
+ | |||
+ | Finalement `location ~ \.php$` indique comment traiter tous les fichiers ayant l' | ||
+ | |||
+ | < | ||
+ | |||
+ | ## Ajouter du contenu | ||
+ | |||
+ | Il suffit d' | ||
+ | |||
+ | La commande `docker cp` permet de copier des fichiers locaux dans un conteneur. Par exemple | ||
```bash | ```bash | ||
- | docker cp /tmp/site/* aomame:/ | + | docker cp < |
``` | ``` | ||
À ce stade, le site est prêt à être servi, il ne reste plus qu'à ajouter l' | À ce stade, le site est prêt à être servi, il ne reste plus qu'à ajouter l' | ||
+ | |||
+ | < | ||
## Ajout du sous domaine | ## Ajout du sous domaine | ||
- | En filant l' | + | En filant l' |
Pour ce faire, on se référera à la [[technique: | Pour ce faire, on se référera à la [[technique: |